forked from qt-creator/qt-creator
Core: do not activate open documents entry on right click
If we activate an entry before we handle the context menu event we might switch into another mode. For example when right clicking on a ui File. Fixes: QTCREATORBUG-30357 Change-Id: I8de78c3a6bbd9d62e2766ccd2059ee3ee4ef0870 Reviewed-by: Eike Ziller <eike.ziller@qt.io>
This commit is contained in:
@@ -59,6 +59,22 @@ public:
|
||||
BaseT::keyPressEvent(event);
|
||||
}
|
||||
|
||||
virtual bool userWantsContextMenu(const QMouseEvent *) const
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
void mousePressEvent(QMouseEvent *e) override
|
||||
{
|
||||
if (!userWantsContextMenu(e))
|
||||
BaseT::mousePressEvent(e);
|
||||
}
|
||||
|
||||
void mouseReleaseEvent(QMouseEvent *e) override
|
||||
{
|
||||
if (!userWantsContextMenu(e))
|
||||
BaseT::mouseReleaseEvent(e);
|
||||
}
|
||||
};
|
||||
|
||||
class QTCREATOR_UTILS_EXPORT TreeView : public View<QTreeView>
|
||||
|
@@ -66,6 +66,8 @@ private:
|
||||
void activateEditor(const QModelIndex &index);
|
||||
void closeDocument(const QModelIndex &index);
|
||||
|
||||
bool userWantsContextMenu(const QMouseEvent *) const final;
|
||||
|
||||
ProxyModel *m_model;
|
||||
};
|
||||
|
||||
@@ -138,6 +140,13 @@ void OpenEditorsWidget::closeDocument(const QModelIndex &index)
|
||||
updateCurrentItem(EditorManager::currentEditor());
|
||||
}
|
||||
|
||||
bool OpenEditorsWidget::userWantsContextMenu(const QMouseEvent *e) const
|
||||
{
|
||||
// block activating on entry on right click otherwise we might switch into another mode
|
||||
// see QTCREATORBUG-30357
|
||||
return e->button() == Qt::RightButton;
|
||||
}
|
||||
|
||||
void OpenEditorsWidget::contextMenuRequested(QPoint pos)
|
||||
{
|
||||
QMenu contextMenu;
|
||||
|
@@ -648,24 +648,12 @@ private:
|
||||
return;
|
||||
}
|
||||
|
||||
bool userWantsContextMenu(const QMouseEvent *e) const
|
||||
bool userWantsContextMenu(const QMouseEvent *e) const final
|
||||
{
|
||||
// On Windows, we get additional mouse events for the item view when right-clicking,
|
||||
// causing unwanted kit activation (QTCREATORBUG-24156). Let's suppress these.
|
||||
return HostOsInfo::isWindowsHost() && e->button() == Qt::RightButton;
|
||||
}
|
||||
|
||||
void mousePressEvent(QMouseEvent *e) final
|
||||
{
|
||||
if (!userWantsContextMenu(e))
|
||||
BaseTreeView::mousePressEvent(e);
|
||||
}
|
||||
|
||||
void mouseReleaseEvent(QMouseEvent *e) final
|
||||
{
|
||||
if (!userWantsContextMenu(e))
|
||||
BaseTreeView::mouseReleaseEvent(e);
|
||||
}
|
||||
};
|
||||
|
||||
class ComboBoxItem : public TreeItem
|
||||
|
Reference in New Issue
Block a user