ProjectExplorer: Do not activate kits via right click

... in the target selector. When requesting the kit context menu by
right-clicking, we get extra mouse events on Windows that activate the
kit, which is annoying to users. Suppress these events.

Fixes: QTCREATORBUG-24156
Change-Id: I8a5de927634dfdfafb54d265ab31763c6120a527
Reviewed-by: David Schulz <david.schulz@qt.io>
This commit is contained in:
Christian Kandeler
2020-06-26 11:59:14 +02:00
parent 018e4aa197
commit 08d16332f2

View File

@@ -48,6 +48,7 @@
#include <utils/algorithm.h>
#include <utils/basetreeview.h>
#include <utils/hostosinfo.h>
#include <utils/navigationtreeview.h>
#include <utils/qtcassert.h>
#include <utils/styledbar.h>
@@ -341,11 +342,31 @@ public:
setContextMenuPolicy(Qt::CustomContextMenu);
}
private:
// remove branch indicators
void drawBranches(QPainter *, const QRect &, const QModelIndex &) const final
{
return;
}
bool userWantsContextMenu(const QMouseEvent *e) const
{
// 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)
{
if (!userWantsContextMenu(e))
BaseTreeView::mousePressEvent(e);
}
void mouseReleaseEvent(QMouseEvent *e)
{
if (!userWantsContextMenu(e))
BaseTreeView::mouseReleaseEvent(e);
}
};
class ComboBoxItem : public TreeItem