summaryrefslogtreecommitdiffstats
path: root/src/ui/desktop/menubar.cpp
diff options
context:
space:
mode:
authorJabier Arraiza <jabier.arraiza@marker.es>2019-09-15 09:02:18 +0000
committerJabier Arraiza <jabier.arraiza@marker.es>2019-09-19 21:05:29 +0000
commit19940b17f5300e9c2a0755ecdd8a0d6a0dc6e0d9 (patch)
tree53d8bcff576e7ae7b70cd0b5d08818a8dfd7551b /src/ui/desktop/menubar.cpp
parentFix remaining returns (diff)
downloadinkscape-19940b17f5300e9c2a0755ecdd8a0d6a0dc6e0d9.tar.gz
inkscape-19940b17f5300e9c2a0755ecdd8a0d6a0dc6e0d9.zip
Add @nathanl fixes
Diffstat (limited to 'src/ui/desktop/menubar.cpp')
-rw-r--r--src/ui/desktop/menubar.cpp50
1 files changed, 11 insertions, 39 deletions
diff --git a/src/ui/desktop/menubar.cpp b/src/ui/desktop/menubar.cpp
index 75c2198bd..8332ccae0 100644
--- a/src/ui/desktop/menubar.cpp
+++ b/src/ui/desktop/menubar.cpp
@@ -41,8 +41,7 @@
// ================= Common ====================
-std::vector<std::pair<std::pair<unsigned int, Gtk::CheckMenuItem *>, Inkscape::UI::View::View *>> checkmenuitems;
-std::vector<std::pair<std::pair<unsigned int, Gtk::RadioMenuItem *>, Inkscape::UI::View::View *>> radiomenuitems;
+std::vector<std::pair<std::pair<unsigned int, Gtk::MenuItem *>, Inkscape::UI::View::View *>> menuitems;
unsigned int lastverb = -1;
;
@@ -72,26 +71,9 @@ static void item_activate(Gtk::MenuItem *menuitem, SPAction *action)
lastverb = -1;
}
-static void toggle_checkmenu(unsigned int emitting_verb, bool value)
+static void set_menuitems(unsigned int emitting_verb, bool value)
{
- for (auto menu : checkmenuitems) {
- if (menu.second == SP_ACTIVE_DESKTOP) {
- if (emitting_verb == menu.first.first) {
- if (emitting_verb == lastverb) {
- lastverb = -1;
- return;
- }
- lastverb = emitting_verb;
- menu.first.second->property_active() = value;
- lastverb = -1;
- }
- }
- }
-}
-
-static void toggle_radiomenu(unsigned int emitting_verb, bool value)
-{
- for (auto menu : radiomenuitems) {
+ for (auto menu : menuitems) {
if (menu.second == SP_ACTIVE_DESKTOP) {
if (emitting_verb == menu.first.first) {
if (emitting_verb == lastverb) {
@@ -466,23 +448,14 @@ build_menu(Gtk::MenuShell* menu, Inkscape::XML::Node* xml, Inkscape::UI::View::V
SPAction* action = verb->get_action(Inkscape::ActionContext(view));
- if (menu_ptr->attribute("check") != nullptr) {
-
- Gtk::CheckMenuItem* menuitem = build_menu_check_item_from_verb(action);
- if (menuitem) {
- std::pair<std::pair<unsigned int, Gtk::CheckMenuItem *>, Inkscape::UI::View::View *>
- checkitem = std::make_pair(std::make_pair(verb->get_code(), menuitem), view);
- checkmenuitems.push_back(checkitem);
- menu->append(*menuitem);
- }
-
- } else if (menu_ptr->attribute("radio") != nullptr) {
-
- Gtk::RadioMenuItem* menuitem = dynamic_cast<Gtk::RadioMenuItem *>(build_menu_item_from_verb(action, show_icons_curr, true, &group));
+ if (menu_ptr->attribute("check") != nullptr ||
+ menu_ptr->attribute("radio") != nullptr)
+ {
+ Gtk::MenuItem* menuitem = build_menu_check_item_from_verb(action);
if (menuitem) {
- std::pair<std::pair<unsigned int, Gtk::RadioMenuItem *>, Inkscape::UI::View::View *>
- checkitem = std::make_pair(std::make_pair(verb->get_code(), menuitem), view);
- checkmenuitems.push_back(checkitem);
+ std::pair<std::pair<unsigned int, Gtk::MenuItem *>, Inkscape::UI::View::View *>
+ itemmenu = std::make_pair(std::make_pair(verb->get_code(), menuitem), view);
+ menuitems.push_back(itemmenu);
menu->append(*menuitem);
}
@@ -551,8 +524,7 @@ build_menu(Gtk::MenuShell* menu, Inkscape::XML::Node* xml, Inkscape::UI::View::V
std::cerr << "build_menu: xml node has no name!" << std::endl;
}
}
- SP_ACTIVE_DESKTOP->_menu_update.connect(sigc::ptr_fun(&toggle_checkmenu));
- SP_ACTIVE_DESKTOP->_menu_update.connect(sigc::ptr_fun(&toggle_radiomenu));
+ SP_ACTIVE_DESKTOP->_menu_update.connect(sigc::ptr_fun(&set_menuitems));
}
Gtk::MenuBar*