← Back to team overview

elementaryart team mailing list archive

[Merge] lp:~xapantu/granite/fix-959552 into lp:granite

 

xapantu has proposed merging lp:~xapantu/granite/fix-959552 into lp:granite.

Requested reviews:
  elementary Pantheon team (elementary-pantheon)
Related bugs:
  Bug #959552 in Granite: "double click on tabbar to create new tab"
  https://bugs.launchpad.net/granite/+bug/959552

For more details, see:
https://code.launchpad.net/~xapantu/granite/fix-959552/+merge/98482

Fix bug #959552: double click on tabbar to create new tab
-- 
https://code.launchpad.net/~xapantu/granite/fix-959552/+merge/98482
Your team elementaryart (old) is subscribed to branch lp:granite.
=== modified file 'demo/main.vala'
--- demo/main.vala	2012-03-11 17:33:51 +0000
+++ demo/main.vala	2012-03-20 18:39:17 +0000
@@ -212,6 +212,7 @@
         dynamic_notebook.append_page (new Gtk.Label ("Page 1"), "Page 1");
         dynamic_notebook.append_page (new Gtk.Label ("Page 2"), "Page 2");
         dynamic_notebook.append_page (new Gtk.Label ("Page 3"), "Page 3");
+        dynamic_notebook.add_button_clicked.connect ( () => { dynamic_notebook.append_page (new Gtk.Label("New page"), "New tab"); });
 
         /* window properties */
         win.show_all();

=== modified file 'lib/Widgets/DynamicNotebook.vala'
--- lib/Widgets/DynamicNotebook.vala	2012-03-19 18:39:32 +0000
+++ lib/Widgets/DynamicNotebook.vala	2012-03-20 18:39:17 +0000
@@ -157,6 +157,10 @@
 
     public signal void switch_page (Tab tab);
     public signal void page_removed (Tab tab);
+    /**
+     * Emitted when the user makes a double click on an empty space.
+     **/
+    public signal void need_new_tab ();
 
     public Tabs () {
         tabs = new Gee.ArrayList<Tab>();
@@ -531,6 +535,9 @@
             start_dragging = (int)(event.x/(width - overlap));
             if (start_dragging >= tabs.size) {
                 start_dragging = -1;
+                /* click on an empty space */
+                if (event.type == Gdk.EventType.2BUTTON_PRESS)
+                    need_new_tab ();
             }
             else {
                 tabs[start_dragging].drag_origin = event.x - start_dragging * (width - overlap);
@@ -759,6 +766,7 @@
         tabs.page_removed.connect ( (t) => {
             page_removed (t.widget, 0);
         });
+        tabs.need_new_tab.connect ( () => { add_button_clicked (); });
 
         tabs.show_all ();
         add_eventbox.show_all ();


Follow ups