From d1f1cf3031ee5ecd81699464181359abe364ebf6 Mon Sep 17 00:00:00 2001 From: Matthias Koefferlein Date: Sun, 5 Apr 2020 14:01:44 +0200 Subject: [PATCH] Fixed a refactoring damage: the application mode indicator did not follow programmatic changes. --- src/lay/lay/layMainWindow.cc | 2 +- src/laybasic/laybasic/layAbstractMenu.h | 8 ++++++++ src/laybasic/laybasic/layPlugin.cc | 5 +++++ 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/lay/lay/layMainWindow.cc b/src/lay/lay/layMainWindow.cc index 5054baa9e..2e8f23f11 100644 --- a/src/lay/lay/layMainWindow.cc +++ b/src/lay/lay/layMainWindow.cc @@ -1850,7 +1850,7 @@ MainWindow::select_mode (int m) std::vector items = menu ()->items ("@toolbar"); for (std::vector::const_iterator i = items.begin (); i != items.end (); ++i) { Action *a = menu ()->action (*i); - if (a->qaction ()->isCheckable() && a->qaction ()->data ().toInt () == m_mode) { + if (a->is_checkable() && a->is_for_mode (m_mode)) { a->set_checked (true); break; } diff --git a/src/laybasic/laybasic/layAbstractMenu.h b/src/laybasic/laybasic/layAbstractMenu.h index eed9b5728..28391099d 100644 --- a/src/laybasic/laybasic/layAbstractMenu.h +++ b/src/laybasic/laybasic/layAbstractMenu.h @@ -301,6 +301,14 @@ public: */ virtual void triggered (); + /** + * @brief Returns true, if the action is associated with a specific mode ID + */ + virtual bool is_for_mode (int /*mode_id*/) const + { + return false; + } + /** * @brief Get the underlying QAction object * diff --git a/src/laybasic/laybasic/layPlugin.cc b/src/laybasic/laybasic/layPlugin.cc index 922596ccc..3fc35e22e 100644 --- a/src/laybasic/laybasic/layPlugin.cc +++ b/src/laybasic/laybasic/layPlugin.cc @@ -131,6 +131,11 @@ public: } } + bool is_for_mode (int mode_id) const + { + return mode_id == m_mode; + } + private: Dispatcher *mp_dispatcher; int m_mode;