Browse Source

bug-fix: fix heading toolbar button

Le Tan 8 years ago
parent
commit
d49433f91d
5 changed files with 150 additions and 39 deletions
  1. 42 1
      src/resources/themes/v_white/v_white.qss
  2. 4 2
      src/src.pro
  3. 21 0
      src/vbuttonmenuitem.cpp
  4. 23 0
      src/vbuttonmenuitem.h
  5. 60 36
      src/vmainwindow.cpp

+ 42 - 1
src/resources/themes/v_white/v_white.qss

@@ -49,7 +49,7 @@ QMenu::icon {
 
 QMenu::item {
     padding: 5px 30px 5px 30px;
-    background: 1px solid transparent;
+    border: 1px solid transparent;
 }
 
 QMenu::item:selected {
@@ -250,6 +250,47 @@ QPushButton[DangerBtn="true"]:hover {
     border-color: @pushbutton_dangerbtn_hover_border;
     background-color: @pushbutton_dangerbtn_hover_bg;
 }
+
+VButtonMenuItem {
+    padding: 5px;
+    padding-right: 30px;
+    border: 1px solid transparent;
+    background-color: transparent;
+    min-width: -1;
+    text-align: left;
+}
+
+VButtonMenuItem[Heading1="true"] {
+    font-size: 22pt;
+}
+
+VButtonMenuItem[Heading2="true"] {
+    font-size: 20pt;
+}
+
+VButtonMenuItem[Heading3="true"] {
+    font-size: 18pt;
+}
+
+VButtonMenuItem[Heading4="true"] {
+    font-size: 16pt;
+}
+
+VButtonMenuItem[Heading5="true"] {
+    font-size: 14pt;
+}
+
+VButtonMenuItem[Heading6="true"] {
+    font-size: 14pt;
+}
+
+VButtonMenuItem:hover {
+    background-color: @menubar_item_selected_bg;
+}
+
+VButtonMenuItem:focus {
+    background-color: @menubar_item_selected_bg;
+}
 /* End QPushButton*/
 
 /* QComboBox */

+ 4 - 2
src/src.pro

@@ -99,7 +99,8 @@ SOURCES += main.cpp\
     vtoolbox.cpp \
     vinsertselector.cpp \
     utils/vclipboardutils.cpp \
-    vpalette.cpp
+    vpalette.cpp \
+    vbuttonmenuitem.cpp
 
 HEADERS  += vmainwindow.h \
     vdirectorytree.h \
@@ -185,7 +186,8 @@ HEADERS  += vmainwindow.h \
     vtoolbox.h \
     vinsertselector.h \
     utils/vclipboardutils.h \
-    vpalette.h
+    vpalette.h \
+    vbuttonmenuitem.h
 
 RESOURCES += \
     vnote.qrc \

+ 21 - 0
src/vbuttonmenuitem.cpp

@@ -0,0 +1,21 @@
+#include "vbuttonmenuitem.h"
+
+#include <QAction>
+
+VButtonMenuItem::VButtonMenuItem(QAction *p_action, QWidget *p_parent)
+    : QPushButton(p_parent), m_action(p_action)
+{
+    init();
+}
+
+VButtonMenuItem::VButtonMenuItem(QAction *p_action, const QString &p_text, QWidget *p_parent)
+    : QPushButton(p_text, p_parent), m_action(p_action)
+{
+    init();
+}
+
+void VButtonMenuItem::init()
+{
+    connect(this, &QPushButton::clicked,
+            m_action, &QAction::triggered);
+}

+ 23 - 0
src/vbuttonmenuitem.h

@@ -0,0 +1,23 @@
+#ifndef VBUTTONMENUITEM_H
+#define VBUTTONMENUITEM_H
+
+#include <QPushButton>
+
+class QAction;
+
+
+class VButtonMenuItem : public QPushButton
+{
+    Q_OBJECT
+public:
+    explicit VButtonMenuItem(QAction *p_action, QWidget *p_parent = nullptr);
+
+    VButtonMenuItem(QAction *p_action, const QString &p_text, QWidget *p_parent = nullptr);
+
+private:
+    void init();
+
+    QAction *m_action;
+};
+
+#endif // VBUTTONMENUITEM_H

+ 60 - 36
src/vmainwindow.cpp

@@ -32,6 +32,7 @@
 #include "vfilesessioninfo.h"
 #include "vsnippetlist.h"
 #include "vtoolbox.h"
+#include "vbuttonmenuitem.h"
 
 VMainWindow *g_mainWin;
 
@@ -2731,48 +2732,71 @@ void VMainWindow::initHeadingButton(QToolBar *p_tb)
     m_headingBtn->setEnabled(false);
 
     QMenu *menu = new QMenu(this);
-    QAction *act = menu->addAction(tr("Heading 1\t%1").arg(VUtils::getShortcutText("Ctrl+1")));
-    QFont font = act->font();
-    int ps = font.pointSize();
-    font.setBold(true);
-    font.setPointSize(ps + 8);
-    act->setFont(font);
-    act->setData(1);
-
-    act = menu->addAction(tr("Heading 2\t%1").arg(VUtils::getShortcutText("Ctrl+2")));
-    font.setPointSize(ps + 6);
-    act->setFont(font);
-    act->setData(2);
-
-    act = menu->addAction(tr("Heading 3\t%1").arg(VUtils::getShortcutText("Ctrl+3")));
-    font.setPointSize(ps + 4);
-    act->setFont(font);
-    act->setData(3);
-
-    act = menu->addAction(tr("Heading 4\t%1").arg(VUtils::getShortcutText("Ctrl+4")));
-    font.setPointSize(ps + 2);
-    act->setFont(font);
-    act->setData(4);
-
-    act = menu->addAction(tr("Heading 5\t%1").arg(VUtils::getShortcutText("Ctrl+5")));
-    font.setPointSize(ps + 2);
-    act->setFont(font);
-    act->setData(5);
-
-    act = menu->addAction(tr("Heading 6\t%1").arg(VUtils::getShortcutText("Ctrl+6")));
-    font.setPointSize(ps + 2);
-    act->setFont(font);
-    act->setData(6);
-
-    act = menu->addAction(tr("Clear\t%1").arg(VUtils::getShortcutText("Ctrl+7")));
-    act->setData(0);
+    QString text(tr("Heading %1"));
+    QString tooltip(tr("Heading %1\t%2"));
+    QWidgetAction *wact = new QWidgetAction(menu);
+    wact->setData(1);
+    VButtonMenuItem *w = new VButtonMenuItem(wact, text.arg(1), this);
+    w->setToolTip(tooltip.arg(1).arg(VUtils::getShortcutText("Ctrl+1")));
+    w->setProperty("Heading1", true);
+    wact->setDefaultWidget(w);
+    menu->addAction(wact);
+
+    wact = new QWidgetAction(menu);
+    wact->setData(2);
+    w = new VButtonMenuItem(wact, text.arg(2), this);
+    w->setToolTip(tooltip.arg(2).arg(VUtils::getShortcutText("Ctrl+2")));
+    w->setProperty("Heading2", true);
+    wact->setDefaultWidget(w);
+    menu->addAction(wact);
+
+    wact = new QWidgetAction(menu);
+    wact->setData(3);
+    w = new VButtonMenuItem(wact, text.arg(3), this);
+    w->setToolTip(tooltip.arg(3).arg(VUtils::getShortcutText("Ctrl+3")));
+    w->setProperty("Heading3", true);
+    wact->setDefaultWidget(w);
+    menu->addAction(wact);
+
+    wact = new QWidgetAction(menu);
+    wact->setData(4);
+    w = new VButtonMenuItem(wact, text.arg(4), this);
+    w->setToolTip(tooltip.arg(4).arg(VUtils::getShortcutText("Ctrl+4")));
+    w->setProperty("Heading4", true);
+    wact->setDefaultWidget(w);
+    menu->addAction(wact);
+
+    wact = new QWidgetAction(menu);
+    wact->setData(5);
+    w = new VButtonMenuItem(wact, text.arg(5), this);
+    w->setToolTip(tooltip.arg(5).arg(VUtils::getShortcutText("Ctrl+5")));
+    w->setProperty("Heading5", true);
+    wact->setDefaultWidget(w);
+    menu->addAction(wact);
+
+    wact = new QWidgetAction(menu);
+    wact->setData(6);
+    w = new VButtonMenuItem(wact, text.arg(6), this);
+    w->setToolTip(tooltip.arg(6).arg(VUtils::getShortcutText("Ctrl+6")));
+    w->setProperty("Heading6", true);
+    wact->setDefaultWidget(w);
+    menu->addAction(wact);
+
+    wact = new QWidgetAction(menu);
+    wact->setData(0);
+    w = new VButtonMenuItem(wact, tr("Clear"), this);
+    w->setToolTip(tr("Clear\t%1").arg(VUtils::getShortcutText("Ctrl+7")));
+    wact->setDefaultWidget(w);
+    menu->addAction(wact);
 
     connect(menu, &QMenu::triggered,
-            this, [this](QAction *p_action) {
+            this, [this, menu](QAction *p_action) {
                 if (m_curTab) {
                     int level = p_action->data().toInt();
                     m_curTab->decorateText(TextDecoration::Heading, level);
                 }
+
+                menu->hide();
             });
 
     m_headingBtn->setMenu(menu);