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;