From: Daniel Ramoeller Date: Sat, 10 Dec 2022 15:26:25 +0000 (+0100) Subject: Restrict toolbar menu to toolbar X-Git-Url: https://git.lyx.org/gitweb/?a=commitdiff_plain;h=bfff93d879672e3a67505fe6ded2ff1a04360dca;p=features.git Restrict toolbar menu to toolbar Partial fix for bug #11949. --- diff --git a/src/frontends/qt/GuiToolbar.cpp b/src/frontends/qt/GuiToolbar.cpp index ed8dd0af58..cc61f2f665 100644 --- a/src/frontends/qt/GuiToolbar.cpp +++ b/src/frontends/qt/GuiToolbar.cpp @@ -34,6 +34,7 @@ #include "LayoutBox.h" #include "LyX.h" #include "LyXRC.h" +#include "Menus.h" #include "qt_helpers.h" #include "Session.h" #include "Text.h" @@ -75,6 +76,9 @@ GuiToolbar::GuiToolbar(ToolbarInfo const & tbinfo, GuiView & owner) setIconSize(owner.iconSize()); connect(&owner, SIGNAL(iconSizeChanged(QSize)), this, SLOT(setIconSize(QSize))); + setContextMenuPolicy(Qt::CustomContextMenu); + connect(this, SIGNAL(customContextMenuRequested(QPoint)), + SLOT(showContextMenu(QPoint))); // This is used by QMainWindow::restoreState for proper main window state // restoration. @@ -142,6 +146,13 @@ void GuiToolbar::setVisibility(int visibility) } +void GuiToolbar::showContextMenu(QPoint pos) +{ + QMenu * menu = guiApp->menus().menu(toqstr("context-toolbars"), owner_); + menu->exec(mapToGlobal(pos)); +} + + Action * GuiToolbar::addItem(ToolbarItem const & item, bool menu) { QString text = toqstr(item.label); diff --git a/src/frontends/qt/GuiToolbar.h b/src/frontends/qt/GuiToolbar.h index 6b3581c2d2..23ee9610d1 100644 --- a/src/frontends/qt/GuiToolbar.h +++ b/src/frontends/qt/GuiToolbar.h @@ -179,6 +179,9 @@ Q_SIGNALS: /// void updated(); +private Q_SLOTS: + void showContextMenu(QPoint pos); + private: // load flags with saved values void initFlags(); diff --git a/src/frontends/qt/GuiView.cpp b/src/frontends/qt/GuiView.cpp index 1f4567d4e6..b229a78995 100644 --- a/src/frontends/qt/GuiView.cpp +++ b/src/frontends/qt/GuiView.cpp @@ -769,11 +769,6 @@ GuiView::GuiView(int id) connect(this, SIGNAL(triggerShowDialog(QString const &, QString const &, Inset *)), SLOT(doShowDialog(QString const &, QString const &, Inset *))); - // set custom application bars context menu, e.g. tool bar and menu bar - setContextMenuPolicy(Qt::CustomContextMenu); - connect(this, SIGNAL(customContextMenuRequested(const QPoint &)), - SLOT(toolBarPopup(const QPoint &))); - // Forbid too small unresizable window because it can happen // with some window manager under X11. setMinimumSize(300, 200); @@ -4166,13 +4161,6 @@ bool GuiView::goToFileRow(string const & argument) } -void GuiView::toolBarPopup(const QPoint & /*pos*/) -{ - QMenu * menu = guiApp->menus().menu(toqstr("context-toolbars"), * this); - menu->exec(QCursor::pos()); -} - - template Buffer::ExportStatus GuiView::GuiViewPrivate::runAndDestroy(const T& func, Buffer const * orig, Buffer * clone, string const & format) diff --git a/src/frontends/qt/GuiView.h b/src/frontends/qt/GuiView.h index 8cf031585a..eff923bda4 100644 --- a/src/frontends/qt/GuiView.h +++ b/src/frontends/qt/GuiView.h @@ -286,9 +286,6 @@ private Q_SLOTS: void updateStatusBarMessage(QString const & str); void clearMessageText(); - /// - void toolBarPopup(const QPoint &pos); - private: /// Open given child document in current buffer directory. void openChildDocument(std::string const & filename);