diff --git a/src/qt/guiutil.h b/src/qt/guiutil.h --- a/src/qt/guiutil.h +++ b/src/qt/guiutil.h @@ -29,9 +29,12 @@ QT_BEGIN_NAMESPACE class QAbstractItemView; +class QAction; class QDateTime; class QFont; class QLineEdit; +class QMenu; +class QPoint; class QProgressDialog; class QUrl; class QWidget; @@ -322,6 +325,11 @@ */ void LogQtInfo(); +/** + * Call QMenu::popup() only on supported QT_QPA_PLATFORM. + */ +void PopupMenu(QMenu *menu, const QPoint &point, QAction *at_action = nullptr); + // Fix known bugs in QProgressDialog class. void PolishProgressDialog(QProgressDialog *dialog); } // namespace GUIUtil diff --git a/src/qt/guiutil.cpp b/src/qt/guiutil.cpp --- a/src/qt/guiutil.cpp +++ b/src/qt/guiutil.cpp @@ -43,6 +43,7 @@ #include #include #include +#include #include #include #include @@ -929,4 +930,12 @@ } } +void PopupMenu(QMenu *menu, const QPoint &point, QAction *at_action) { + // The qminimal plugin does not provide window system integration. + if (QApplication::platformName() == "minimal") { + return; + } + menu->popup(point, at_action); +} + } // namespace GUIUtil diff --git a/src/qt/rpcconsole.cpp b/src/qt/rpcconsole.cpp --- a/src/qt/rpcconsole.cpp +++ b/src/qt/rpcconsole.cpp @@ -31,6 +31,7 @@ #include +#include #include #include #include @@ -571,8 +572,7 @@ ui->peerHeading->setText(tr("Select a peer to view detailed information.")); consoleFontSize = - settings.value(fontSizeSettingsKey, QFontInfo(QFont()).pointSize()) - .toInt(); + settings.value(fontSizeSettingsKey, QFont().pointSize()).toInt(); clear(); GUIUtil::handleCloseWindowShortcut(this); diff --git a/src/qt/transactionview.cpp b/src/qt/transactionview.cpp --- a/src/qt/transactionview.cpp +++ b/src/qt/transactionview.cpp @@ -9,6 +9,7 @@ #include #include #include +#include #include #include #include @@ -458,7 +459,8 @@ transactionView, 0, TransactionTableModel::LabelRole)); if (index.isValid()) { - contextMenu->popup(transactionView->viewport()->mapToGlobal(point)); + GUIUtil::PopupMenu(contextMenu, + transactionView->viewport()->mapToGlobal(point)); } }