[gitg] Added populate-popup in sidebar



commit 69011242c74472d01f1bfa941e0e90a82c8ff242
Author: Jesse van den Kieboom <jessevdk gnome org>
Date:   Tue Jul 1 14:15:47 2014 +0200

    Added populate-popup in sidebar

 libgitg/gitg-sidebar.vala |   48 +++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 48 insertions(+), 0 deletions(-)
---
diff --git a/libgitg/gitg-sidebar.vala b/libgitg/gitg-sidebar.vala
index 51a63d7..5bee494 100644
--- a/libgitg/gitg-sidebar.vala
+++ b/libgitg/gitg-sidebar.vala
@@ -193,6 +193,8 @@ public class Sidebar : Gtk.TreeView
 
        public signal void deselected();
 
+       public signal void populate_popup(Gtk.Menu menu);
+
        construct
        {
                d_column.set_cell_data_func(d_renderer_icon, (layout, cell, model, iter) => {
@@ -324,6 +326,52 @@ public class Sidebar : Gtk.TreeView
                get { return base.get_model() as SidebarStore; }
                set { base.set_model(value); }
        }
+
+       private bool do_populate_popup(Gdk.EventButton? event)
+       {
+               Gtk.Menu menu = new Gtk.Menu();
+
+               populate_popup(menu);
+
+               if (menu.get_children() == null)
+               {
+                       return false;
+               }
+
+               menu.show_all();
+               menu.attach_to_widget(this, null);
+
+               uint button = 0;
+               uint32 t = Gdk.CURRENT_TIME;
+
+               if (event != null)
+               {
+                       button = event.button;
+                       t = event.time;
+               }
+
+               menu.popup(null, null, null, button, t);
+               return true;
+       }
+
+       protected override bool button_press_event(Gdk.EventButton event)
+       {
+               var ret = base.button_press_event(event);
+
+               Gdk.Event *ev = (Gdk.Event *)event;
+
+               if (ev->triggers_context_menu())
+               {
+                       return do_populate_popup(event);
+               }
+
+               return ret;
+       }
+
+       protected override bool popup_menu()
+       {
+               return do_populate_popup(null);
+       }
 }
 
 }


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