From eb51fa822861232e0fa76e85e2d22db1ed71ac0f Mon Sep 17 00:00:00 2001 From: Li Linfeng Date: Sun, 25 Aug 2019 14:19:04 +0800 Subject: [PATCH] adapt to context menu handler change --- src/celestia/qt/qtappwin.cpp | 20 ++++---------------- src/celestia/qt/qtappwin.h | 4 ++-- 2 files changed, 6 insertions(+), 18 deletions(-) diff --git a/src/celestia/qt/qtappwin.cpp b/src/celestia/qt/qtappwin.cpp index 6c2153fd..74fdc1eb 100644 --- a/src/celestia/qt/qtappwin.cpp +++ b/src/celestia/qt/qtappwin.cpp @@ -84,12 +84,6 @@ const QPoint DEFAULT_MAIN_WINDOW_POSITION(20, 20); // new dockables or toolbars are added. static const int CELESTIA_MAIN_WINDOW_VERSION = 12; - -// Terrible hack required because context menu callback doesn't retain -// any state. -static CelestiaAppWindow* MainWindowInstance = nullptr; -static void ContextMenu(float x, float y, Selection sel); - static int fps_to_ms(int fps) { return fps > 0 ? 1000 / fps : 0; } static int ms_to_fps(int ms) { return ms > 0? 1000 / ms : 0; } @@ -182,7 +176,8 @@ void FPSActionGroup::updateFPS(int fps) } CelestiaAppWindow::CelestiaAppWindow(QWidget* parent) : - QMainWindow(parent) + QMainWindow(parent), + CelestiaCore::ContextMenuHandler() { setObjectName("celestia-mainwin"); timer = new QTimer(this); @@ -268,8 +263,7 @@ void CelestiaAppWindow::init(const QString& qConfigFileName, } m_appCore->setCursorHandler(glWidget); - m_appCore->setContextMenuCallback(ContextMenu); - MainWindowInstance = this; // TODO: Fix context menu callback + m_appCore->setContextMenuHandler(this); setCentralWidget(glWidget); @@ -1494,7 +1488,7 @@ void CelestiaAppWindow::setCustomFPS() fpsActions->updateFPS(fpsActions->lastFPS()); } -void CelestiaAppWindow::contextMenu(float x, float y, Selection sel) +void CelestiaAppWindow::requestContextMenu(float x, float y, Selection sel) { SelectionPopup* menu = new SelectionPopup(sel, m_appCore, this); connect(menu, SIGNAL(selectionInfoRequested(Selection&)), @@ -1529,12 +1523,6 @@ QMenu* CelestiaAppWindow::buildScriptsMenu() return menu; } - -void ContextMenu(float x, float y, Selection sel) -{ - MainWindowInstance->contextMenu(x, y, sel); -} - void CelestiaAppWindow::pasteText() { QString text = QGuiApplication::clipboard()->text(); diff --git a/src/celestia/qt/qtappwin.h b/src/celestia/qt/qtappwin.h index 961e0a54..6416d2c0 100644 --- a/src/celestia/qt/qtappwin.h +++ b/src/celestia/qt/qtappwin.h @@ -32,7 +32,7 @@ class BookmarkManager; class BookmarkToolBar; class QUrl; -class CelestiaAppWindow : public QMainWindow +class CelestiaAppWindow : public QMainWindow, public CelestiaCore::ContextMenuHandler { Q_OBJECT @@ -48,7 +48,7 @@ class CelestiaAppWindow : public QMainWindow bool loadBookmarks(); void saveBookmarks(); - void contextMenu(float x, float y, Selection sel); + void requestContextMenu(float x, float y, Selection sel); void loadingProgressUpdate(const QString& s);