Restrict toolbar menu to toolbar

Partial fix for bug #11949.
This commit is contained in:
Daniel Ramoeller 2022-12-10 16:26:25 +01:00 committed by Jean-Marc Lasgouttes
parent 46992201b7
commit bfff93d879
4 changed files with 14 additions and 15 deletions

View File

@ -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);

View File

@ -179,6 +179,9 @@ Q_SIGNALS:
///
void updated();
private Q_SLOTS:
void showContextMenu(QPoint pos);
private:
// load flags with saved values
void initFlags();

View File

@ -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<class T>
Buffer::ExportStatus GuiView::GuiViewPrivate::runAndDestroy(const T& func,
Buffer const * orig, Buffer * clone, string const & format)

View File

@ -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);