diff --git a/src/widgets/GlobalsWidget.cpp b/src/widgets/GlobalsWidget.cpp index a6a26e23f..d233c65d5 100644 --- a/src/widgets/GlobalsWidget.cpp +++ b/src/widgets/GlobalsWidget.cpp @@ -146,20 +146,6 @@ void GlobalsWidget::deleteGlobal() Core()->delGlobalVariable(globalVariableAddress); } -void GlobalsWidget::showGlobalsContextMenu(const QPoint &pt) -{ - QModelIndex index = ui->treeView->indexAt(pt); - - QMenu menu(ui->treeView); - - if (index.isValid()) { - menu.addAction(actionEditGlobal); - menu.addAction(actionDeleteGlobal); - } - - menu.exec(ui->treeView->mapToGlobal(pt)); -} - GlobalsWidget::GlobalsWidget(MainWindow *main) : CutterDockWidget(main), ui(new Ui::GlobalsWidget), tree(new CutterTreeWidget(this)) { @@ -175,6 +161,8 @@ GlobalsWidget::GlobalsWidget(MainWindow *main) // Set single select mode ui->treeView->setSelectionMode(QAbstractItemView::SingleSelection); + ui->treeView->setMainWindow(mainWindow); + // Setup up the model and the proxy model globalsModel = new GlobalsModel(&globals, this); globalsProxyModel = new GlobalsProxyModel(globalsModel, this); @@ -182,9 +170,6 @@ GlobalsWidget::GlobalsWidget(MainWindow *main) ui->treeView->sortByColumn(GlobalsModel::AddressColumn, Qt::AscendingOrder); // Setup custom context menu - connect(ui->treeView, &QWidget::customContextMenuRequested, this, - &GlobalsWidget::showGlobalsContextMenu); - ui->treeView->setContextMenuPolicy(Qt::CustomContextMenu); connect(ui->quickFilterView, &ComboQuickFilterView::filterTextChanged, globalsProxyModel, @@ -206,8 +191,12 @@ GlobalsWidget::GlobalsWidget(MainWindow *main) actionEditGlobal = new QAction(tr("Edit Global Variable"), this); actionDeleteGlobal = new QAction(tr("Delete Global Variable"), this); - connect(actionEditGlobal, &QAction::triggered, [this]() { editGlobal(); }); - connect(actionDeleteGlobal, &QAction::triggered, [this]() { deleteGlobal(); }); + auto menu = ui->treeView->getItemContextMenu(); + menu->addAction(actionEditGlobal); + menu->addAction(actionDeleteGlobal); + + connect(actionEditGlobal, &QAction::triggered, this, [this]() { editGlobal(); }); + connect(actionDeleteGlobal, &QAction::triggered, this, [this]() { deleteGlobal(); }); connect(Core(), &CutterCore::globalVarsChanged, this, &GlobalsWidget::refreshGlobals); connect(Core(), &CutterCore::codeRebased, this, &GlobalsWidget::refreshGlobals); diff --git a/src/widgets/GlobalsWidget.h b/src/widgets/GlobalsWidget.h index 89dc41ba2..5977058a1 100644 --- a/src/widgets/GlobalsWidget.h +++ b/src/widgets/GlobalsWidget.h @@ -69,8 +69,6 @@ class GlobalsWidget : public CutterDockWidget private slots: void refreshGlobals(); - void showGlobalsContextMenu(const QPoint &pt); - void editGlobal(); void deleteGlobal(); diff --git a/src/widgets/GlobalsWidget.ui b/src/widgets/GlobalsWidget.ui index ca8c8548a..36b31cf8b 100644 --- a/src/widgets/GlobalsWidget.ui +++ b/src/widgets/GlobalsWidget.ui @@ -31,7 +31,7 @@ 0 - + 0 @@ -46,7 +46,7 @@ } - QFrame::NoFrame + QFrame::Shape::NoFrame 0 @@ -73,7 +73,7 @@ - Edit Global Variable + Edit Global Variable Edit Global Variable @@ -89,18 +89,18 @@ - - CutterTreeView - QTreeView -
widgets/CutterTreeView.h
- 1 -
ComboQuickFilterView QWidget
widgets/ComboQuickFilterView.h
1
+ + AddressableItemList<> + QTreeView +
widgets/AddressableItemList.h
+ 1 +