[gnote] Revert "Fix blank first item in application menu (some envs)"



commit 0c432e7dad0692719a9bef5400ca09c1615c464f
Author: Aurimas Černius <aurisc4 gmail com>
Date:   Mon Jun 17 15:46:58 2013 +0300

    Revert "Fix blank first item in application menu (some envs)"
    
    This reverts commit 8d2ae0b191190b3e318f10e56b04e70701adf589.
    Doesn't look much better.

 src/actionmanager.cpp |   42 +++++++++++++++++-------------------------
 src/actionmanager.hpp |   30 +++++++++++++-----------------
 2 files changed, 30 insertions(+), 42 deletions(-)
---
diff --git a/src/actionmanager.cpp b/src/actionmanager.cpp
index 1b1caf9..5db2690 100644
--- a/src/actionmanager.cpp
+++ b/src/actionmanager.cpp
@@ -266,26 +266,25 @@ namespace gnote {
   {
     Glib::RefPtr<Gio::Menu> menu = Gio::Menu::create();
 
-    // append first section directly to menu, to avoid blank first item in some environments
-    std::pair<AppMenuItemMultiMap::const_iterator, AppMenuItemMultiMap::const_iterator>
-    range = m_app_menu_items.equal_range(APP_ACTION_NEW);
-    if(range.first != m_app_menu_items.end()) {
-      menu_append(menu, range.first, range.second);
+    int pos = 0;
+    Glib::RefPtr<Gio::Menu> section = make_app_menu_section(APP_ACTION_NEW);
+    if(section != 0) {
+      menu->insert_section(pos++, "", section);
     }
 
-    Glib::RefPtr<Gio::Menu> section = make_app_menu_section(APP_ACTION_MANAGE);
+    section = make_app_menu_section(APP_ACTION_MANAGE);
     if(section != 0) {
-      menu->append_section("", section);
+      menu->insert_section(pos++, "", section);
     }
 
     section = make_app_menu_section(APP_ACTION_HELP);
     if(section != 0) {
-      menu->append_section("", section);
+      menu->insert_section(pos++, "", section);
     }
 
     section = make_app_menu_section(APP_ACTION_LAST);
     if(section != 0) {
-      menu->append_section("", section);
+      menu->insert_section(pos++, "", section);
     }
 
     return menu;
@@ -298,28 +297,21 @@ namespace gnote {
 
     Glib::RefPtr<Gio::Menu> section;
     if(range.first != m_app_menu_items.end()) {
+      std::vector<const AppMenuItem*> menu_items;
+      for(AppMenuItemMultiMap::const_iterator iter = range.first; iter != range.second; ++iter) {
+        menu_items.push_back(&iter->second);
+      }
+      std::sort(menu_items.begin(), menu_items.end(), AppMenuItem::ptr_comparator());
+
       section = Gio::Menu::create();
-      menu_append(section, range.first, range.second);
+      for(std::vector<const AppMenuItem*>::iterator iter = menu_items.begin(); iter != menu_items.end(); 
++iter) {
+        section->append((*iter)->label, (*iter)->action_def);
+      }
     }
 
     return section;
   }
 
-  void ActionManager::menu_append(const Glib::RefPtr<Gio::Menu> & menu,
-                                  const AppMenuItemMultiMap::const_iterator & begin,
-                                  const AppMenuItemMultiMap::const_iterator & end) const
-  {
-    std::vector<const AppMenuItem*> menu_items;
-    for(AppMenuItemMultiMap::const_iterator iter = begin; iter != end; ++iter) {
-      menu_items.push_back(&iter->second);
-    }
-    std::sort(menu_items.begin(), menu_items.end(), AppMenuItem::ptr_comparator());
-
-    for(std::vector<const AppMenuItem*>::iterator iter = menu_items.begin(); iter != menu_items.end(); 
++iter) {
-      menu->append((*iter)->label, (*iter)->action_def);
-    }
-  }
-
   void ActionManager::add_main_window_search_action(const Glib::RefPtr<Gtk::Action> & action, int order)
   {
     add_main_window_action(m_main_window_search_actions, action, order);
diff --git a/src/actionmanager.hpp b/src/actionmanager.hpp
index 0b9fa5c..f4b0b2f 100644
--- a/src/actionmanager.hpp
+++ b/src/actionmanager.hpp
@@ -71,6 +71,19 @@ public:
   virtual void remove_main_window_search_action(const std::string & name);
   virtual std::vector<Glib::RefPtr<Gtk::Action> > get_main_window_search_actions();
 private:
+  void make_app_actions();
+  void make_app_menu_items();
+  Glib::RefPtr<Gio::Menu> make_app_menu_section(int section) const;
+  void add_main_window_action(std::map<int, Glib::RefPtr<Gtk::Action> > & actions,
+                              const Glib::RefPtr<Gtk::Action> & action, int order);
+  void remove_main_window_action(std::map<int, Glib::RefPtr<Gtk::Action> > & actions, const std::string & 
name);
+  std::vector<Glib::RefPtr<Gtk::Action> > get_main_window_actions(std::map<int, Glib::RefPtr<Gtk::Action> > 
& actions);
+
+  Glib::RefPtr<Gtk::UIManager> m_ui;
+  Glib::RefPtr<Gtk::ActionGroup> m_main_window_actions;
+
+  std::vector<Glib::RefPtr<Gio::SimpleAction> > m_app_actions;
+
   struct AppMenuItem
   {
     int order;
@@ -92,23 +105,6 @@ private:
     };
   };
   typedef std::multimap<int, AppMenuItem> AppMenuItemMultiMap;
-
-  void make_app_actions();
-  void make_app_menu_items();
-  Glib::RefPtr<Gio::Menu> make_app_menu_section(int section) const;
-  void menu_append(const Glib::RefPtr<Gio::Menu> & menu,
-                   const AppMenuItemMultiMap::const_iterator & begin,
-                   const AppMenuItemMultiMap::const_iterator & end) const;
-  void add_main_window_action(std::map<int, Glib::RefPtr<Gtk::Action> > & actions,
-                              const Glib::RefPtr<Gtk::Action> & action, int order);
-  void remove_main_window_action(std::map<int, Glib::RefPtr<Gtk::Action> > & actions, const std::string & 
name);
-  std::vector<Glib::RefPtr<Gtk::Action> > get_main_window_actions(std::map<int, Glib::RefPtr<Gtk::Action> > 
& actions);
-
-  Glib::RefPtr<Gtk::UIManager> m_ui;
-  Glib::RefPtr<Gtk::ActionGroup> m_main_window_actions;
-
-  std::vector<Glib::RefPtr<Gio::SimpleAction> > m_app_actions;
-
   AppMenuItemMultiMap m_app_menu_items;
   std::map<int, Glib::RefPtr<Gtk::Action> > m_main_window_search_actions;
 };


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]