diff --git a/src/resources/themes/v_white/v_white.qss b/src/resources/themes/v_white/v_white.qss index 111b7b7a..73fc2ec2 100644 --- a/src/resources/themes/v_white/v_white.qss +++ b/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 */ diff --git a/src/src.pro b/src/src.pro index 2256f2ad..4b042f0b 100644 --- a/src/src.pro +++ b/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 \ diff --git a/src/vbuttonmenuitem.cpp b/src/vbuttonmenuitem.cpp new file mode 100644 index 00000000..e51e4c99 --- /dev/null +++ b/src/vbuttonmenuitem.cpp @@ -0,0 +1,21 @@ +#include "vbuttonmenuitem.h" + +#include + +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); +} diff --git a/src/vbuttonmenuitem.h b/src/vbuttonmenuitem.h new file mode 100644 index 00000000..a7e53055 --- /dev/null +++ b/src/vbuttonmenuitem.h @@ -0,0 +1,23 @@ +#ifndef VBUTTONMENUITEM_H +#define VBUTTONMENUITEM_H + +#include + +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 diff --git a/src/vmainwindow.cpp b/src/vmainwindow.cpp index f667fa83..7dff73ce 100644 --- a/src/vmainwindow.cpp +++ b/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); + 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); - act = menu->addAction(tr("Heading 2\t%1").arg(VUtils::getShortcutText("Ctrl+2"))); - font.setPointSize(ps + 6); - act->setFont(font); - act->setData(2); + 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); - act = menu->addAction(tr("Heading 3\t%1").arg(VUtils::getShortcutText("Ctrl+3"))); - font.setPointSize(ps + 4); - act->setFont(font); - act->setData(3); + 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); - act = menu->addAction(tr("Heading 4\t%1").arg(VUtils::getShortcutText("Ctrl+4"))); - font.setPointSize(ps + 2); - act->setFont(font); - act->setData(4); + 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); - act = menu->addAction(tr("Heading 5\t%1").arg(VUtils::getShortcutText("Ctrl+5"))); - font.setPointSize(ps + 2); - act->setFont(font); - act->setData(5); + 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); - act = menu->addAction(tr("Heading 6\t%1").arg(VUtils::getShortcutText("Ctrl+6"))); - font.setPointSize(ps + 2); - act->setFont(font); - act->setData(6); + 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); - act = menu->addAction(tr("Clear\t%1").arg(VUtils::getShortcutText("Ctrl+7"))); - act->setData(0); + 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);