[gnote] Handle popover widget change



commit 26b13d3bb7902468cf81a165d09bbe3c7c39db0d
Author: Aurimas Černius <aurisc4 gmail com>
Date:   Sat Dec 12 20:15:47 2015 +0200

    Handle popover widget change

 src/recentchanges.cpp |   12 +++++++++++-
 src/recentchanges.hpp |    2 ++
 2 files changed, 13 insertions(+), 1 deletions(-)
---
diff --git a/src/recentchanges.cpp b/src/recentchanges.cpp
index f4150ab..4ea3093 100644
--- a/src/recentchanges.cpp
+++ b/src/recentchanges.cpp
@@ -535,6 +535,8 @@ namespace gnote {
         gtk_widget_destroy(GTK_WIDGET(m_window_menu_embedded));
         m_window_menu_embedded = NULL;
       }
+      m_signal_popover_widgets_changed_cid = has_actions.signal_popover_widgets_changed
+        .connect(sigc::mem_fun(*this, &NoteRecentChanges::on_popover_widgets_changed));
     }
     catch(std::bad_cast&) {
     }
@@ -549,7 +551,7 @@ namespace gnote {
       Gtk::Widget &wid = dynamic_cast<Gtk::Widget&>(widget);
       widget.background();
       m_embed_box.remove(wid);
-
+      m_signal_popover_widgets_changed_cid.disconnect();
       m_current_embedded_name_slot.disconnect();
 
       if(m_window_menu_embedded) {
@@ -769,6 +771,14 @@ namespace gnote {
     set_title(name);
   }
 
+  void NoteRecentChanges::on_popover_widgets_changed()
+  {
+    if(m_window_menu_embedded) {
+      gtk_widget_destroy(GTK_WIDGET(m_window_menu_embedded));
+      m_window_menu_embedded = NULL;
+    }
+  }
+
   void NoteRecentChanges::on_settings_changed(const Glib::ustring & key)
   {
     if(key == Preferences::OPEN_NOTES_IN_NEW_WINDOW) {
diff --git a/src/recentchanges.hpp b/src/recentchanges.hpp
index 659473f..f30c90d 100644
--- a/src/recentchanges.hpp
+++ b/src/recentchanges.hpp
@@ -93,6 +93,7 @@ private:
   bool on_notes_widget_key_press(GdkEventKey*);
   void on_close_window(const Glib::VariantBase&);
   void add_action(const MainWindowAction::Ptr & action);
+  void on_popover_widgets_changed();
 
   NoteManager        &m_note_manager;
   Gtk::Widget        *m_header_bar;
@@ -110,6 +111,7 @@ private:
   std::list<EmbeddableWidget*> m_embedded_widgets;
   bool                m_mapped;
   sigc::connection    m_current_embedded_name_slot;
+  sigc::connection    m_signal_popover_widgets_changed_cid;
   utils::InterruptableTimeout *m_entry_changed_timeout;
   GtkPopoverMenu     *m_window_menu_embedded;
   GtkPopoverMenu     *m_window_menu_default;


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