From b96b876403ea541ada6d35fd683b599368c8c854 Mon Sep 17 00:00:00 2001 From: Jean-Marc Lasgouttes Date: Wed, 16 Sep 2020 16:54:33 +0200 Subject: [PATCH] Revert "Show toolbar context menu only when clicking on the toolbar" Something is wrong. This reverts commit f25253f89ac121b1981fe26f0b90af9e2bbbe849. --- src/frontends/qt/GuiToolbar.cpp | 22 ---------------------- src/frontends/qt/GuiToolbar.h | 2 -- src/frontends/qt/GuiView.cpp | 12 ++++++++++++ src/frontends/qt/GuiView.h | 3 +++ 4 files changed, 15 insertions(+), 24 deletions(-) diff --git a/src/frontends/qt/GuiToolbar.cpp b/src/frontends/qt/GuiToolbar.cpp index e80dc4887c..f58069bde3 100644 --- a/src/frontends/qt/GuiToolbar.cpp +++ b/src/frontends/qt/GuiToolbar.cpp @@ -34,7 +34,6 @@ #include "LayoutBox.h" #include "LyX.h" #include "LyXRC.h" -#include "Menus.h" #include "qt_helpers.h" #include "Session.h" #include "Text.h" @@ -71,9 +70,6 @@ GuiToolbar::GuiToolbar(ToolbarInfo const & tbinfo, GuiView & owner) setIconSize(owner.iconSize()); connect(&owner, SIGNAL(iconSizeChanged(QSize)), this, SLOT(setIconSize(QSize))); - // install toolbar filter for context menu including disabled buttons - setContextMenuPolicy(Qt::PreventContextMenu); - QCoreApplication::instance()->installEventFilter(this); // This is used by QMainWindow::restoreState for proper main window state // restoration. @@ -127,24 +123,6 @@ void GuiToolbar::showEvent(QShowEvent * ev) } -bool GuiToolbar::eventFilter(QObject * obj, QEvent * ev) -{ - if (obj == this || obj->parent() == this) { - if (ev->type() == QEvent::ContextMenu) { - QMouseEvent* mouseEvent = static_cast(ev); - QMenu * menu = guiApp->menus().menu(toqstr("context-toolbars"), owner_); - menu->exec(mouseEvent->globalPos()); - return true; - } else { - return false; - } - } else { - // pass the event on to the parent class - return QToolBar::eventFilter(obj, ev); - } -} - - void GuiToolbar::setVisibility(int visibility) { visibility_ = visibility; diff --git a/src/frontends/qt/GuiToolbar.h b/src/frontends/qt/GuiToolbar.h index bd4ef8f862..eccd05a6fb 100644 --- a/src/frontends/qt/GuiToolbar.h +++ b/src/frontends/qt/GuiToolbar.h @@ -177,8 +177,6 @@ private: void fill(); /// void showEvent(QShowEvent *); - /// - bool eventFilter(QObject * obj, QEvent * ev); /// QList actions_; diff --git a/src/frontends/qt/GuiView.cpp b/src/frontends/qt/GuiView.cpp index 7dd6dbb1aa..948deb9a75 100644 --- a/src/frontends/qt/GuiView.cpp +++ b/src/frontends/qt/GuiView.cpp @@ -677,6 +677,11 @@ 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); @@ -3783,6 +3788,13 @@ 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 1ad534a747..d611b39e0f 100644 --- a/src/frontends/qt/GuiView.h +++ b/src/frontends/qt/GuiView.h @@ -260,6 +260,9 @@ 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);