[gnote] Create popovers on demand



commit 4b192a4ea2ee8e669ae4673a76a3b4eb2287dc9f
Author: Aurimas Černius <aurisc4 gmail com>
Date:   Sat Dec 12 20:14:00 2015 +0200

    Create popovers on demand

 src/recentchanges.cpp |   13 ++++++++++---
 1 files changed, 10 insertions(+), 3 deletions(-)
---
diff --git a/src/recentchanges.cpp b/src/recentchanges.cpp
index 9391658..d5c1cec 100644
--- a/src/recentchanges.cpp
+++ b/src/recentchanges.cpp
@@ -113,7 +113,6 @@ namespace gnote {
     find_action("close-window")->signal_activate()
       .connect(sigc::mem_fun(*this, &NoteRecentChanges::on_close_window));
 
-    m_window_menu_default = make_window_menu(m_window_actions_button, std::vector<Gtk::Widget*>());
     embed_widget(m_search_notes_widget);
   }
 
@@ -532,8 +531,10 @@ namespace gnote {
 
     try {
       HasActions &has_actions = dynamic_cast<HasActions&>(widget);
-      std::vector<Gtk::Widget*> items = has_actions.get_popover_widgets();
-      m_window_menu_embedded = make_window_menu(m_window_actions_button, items);
+      if(m_window_menu_embedded) {
+        gtk_widget_destroy(GTK_WIDGET(m_window_menu_embedded));
+        m_window_menu_embedded = NULL;
+      }
     }
     catch(std::bad_cast&) {
     }
@@ -719,9 +720,15 @@ namespace gnote {
   {
     HasActions *embed_with_actions = dynamic_cast<HasActions*>(currently_embedded());
     if(embed_with_actions) {
+      if(m_window_menu_embedded == NULL) {
+        m_window_menu_embedded = make_window_menu(m_window_actions_button, 
embed_with_actions->get_popover_widgets());
+      }
       gtk_widget_show_all(GTK_WIDGET(m_window_menu_embedded));
     }
     else {
+      if(m_window_menu_default == NULL) {
+        m_window_menu_default = make_window_menu(m_window_actions_button, std::vector<Gtk::Widget*>());
+      }
       gtk_widget_show_all(GTK_WIDGET(m_window_menu_default));
     }
   }


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