aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/projectexplorer/projectwindow.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/projectexplorer/projectwindow.cpp')
-rw-r--r--src/plugins/projectexplorer/projectwindow.cpp31
1 files changed, 26 insertions, 5 deletions
diff --git a/src/plugins/projectexplorer/projectwindow.cpp b/src/plugins/projectexplorer/projectwindow.cpp
index f358200c5d..ce7a2db229 100644
--- a/src/plugins/projectexplorer/projectwindow.cpp
+++ b/src/plugins/projectexplorer/projectwindow.cpp
@@ -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>
@@ -287,7 +288,7 @@ public:
return activeItem ? activeItem->index() : QModelIndex();
}
- TreeItem *itemForProjectPanel(Core::Id panelId)
+ TreeItem *itemForProjectPanel(Utils::Id panelId)
{
return m_miscItem->findChildAtLevel(1, [panelId](const TreeItem *item){
return static_cast<const MiscSettingsPanelItem *>(item)->factory()->id() == panelId;
@@ -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
@@ -518,7 +539,7 @@ public:
item->setData(0, QVariant(), ItemActivatedDirectlyRole);
}
- void activateProjectPanel(Core::Id panelId)
+ void activateProjectPanel(Utils::Id panelId)
{
if (ProjectItem *projectItem = m_projectsModel.rootItem()->childAt(0)) {
if (TreeItem *item = projectItem->itemForProjectPanel(panelId))
@@ -559,7 +580,7 @@ public:
if (auto kitPage = KitOptionsPage::instance())
kitPage->showKit(KitManager::kit(Id::fromSetting(projectItem->data(0, KitIdRole))));
}
- ICore::showOptionsDialog(Constants::KITS_SETTINGS_PAGE_ID, ICore::mainWindow());
+ ICore::showOptionsDialog(Constants::KITS_SETTINGS_PAGE_ID);
}
void handleImportBuild()
@@ -570,7 +591,7 @@ public:
QTC_ASSERT(projectImporter, return);
QString dir = project->projectDirectory().toString();
- QString importDir = QFileDialog::getExistingDirectory(ICore::mainWindow(),
+ QString importDir = QFileDialog::getExistingDirectory(ICore::dialogParent(),
ProjectWindow::tr("Import Directory"),
dir);
FilePath path = FilePath::fromString(importDir);
@@ -635,7 +656,7 @@ ProjectWindow::ProjectWindow()
setContextMenuPolicy(Qt::CustomContextMenu);
}
-void ProjectWindow::activateProjectPanel(Core::Id panelId)
+void ProjectWindow::activateProjectPanel(Utils::Id panelId)
{
d->activateProjectPanel(panelId);
}