]> spindle.queued.net Git - midori/commitdiff
Make the History List recognize tabs open before its activation
authorAndré Stösel <Midori-Plugin@PyIT.de>
Wed, 28 Oct 2009 19:36:34 +0000 (20:36 +0100)
committerChristian Dywan <christian@twotoasts.de>
Wed, 28 Oct 2009 19:36:34 +0000 (20:36 +0100)
extensions/tab-switcher.c

index 39e10032e742575fde602dfdfaa124674089da0c..d4749e83a7ca22aa7e3c52db94e1bc45ecf7887a 100644 (file)
@@ -70,8 +70,9 @@ static GtkWidget* tab_selector_init_window (MidoriBrowser   *browser)
     gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
 
 
-    hbox = gtk_hbox_new(FALSE, 5);
+    hbox = gtk_hbox_new(FALSE, 1);
     gtk_container_add(GTK_CONTAINER(window), hbox);
+    gtk_container_set_border_width(GTK_CONTAINER(hbox), 1);
 
     sw = gtk_scrolled_window_new (NULL, NULL);
     gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (sw),
@@ -241,26 +242,6 @@ static void tab_selector_switch_page (GtkNotebook     *notebook,
     }
 }
 
-static void tab_selector_page_added (GtkNotebook     *notebook,
-                                     GtkWidget       *child,
-                                     guint            page_num,
-                                     MidoriBrowser   *browser)
-{
-    GList *list = g_object_get_data(G_OBJECT(browser), "tab_selector_list");
-    list = g_list_append(list, child);
-    g_object_set_data(G_OBJECT(browser), "tab_selector_list", list);
-}
-
-static void tab_selector_page_removed (GtkNotebook     *notebook,
-                                       GtkWidget       *child,
-                                       guint            page_num,
-                                       MidoriBrowser   *browser)
-{
-    GList *list = g_object_get_data(G_OBJECT(browser), "tab_selector_list");
-    list = g_list_remove(list, child);
-    g_object_set_data(G_OBJECT(browser), "tab_selector_list", list);
-}
-
 static void
 tab_selector_browser_add_tab_cb (MidoriBrowser      *browser,
                                  GtkWidget          *view,
@@ -270,6 +251,20 @@ tab_selector_browser_add_tab_cb (MidoriBrowser      *browser,
             G_CALLBACK (tab_selector_handle_events), browser);
     g_signal_connect (view, "key_release_event",
             G_CALLBACK (tab_selector_handle_events), browser);
+
+    GList *list = g_object_get_data(G_OBJECT(browser), "tab_selector_list");
+    list = g_list_append(list, view);
+    g_object_set_data(G_OBJECT(browser), "tab_selector_list", list);
+}
+
+static void
+tab_selector_browser_remove_tab_cb (MidoriBrowser      *browser,
+                                    GtkWidget          *view,
+                                    MidoriExtension    *extension)
+{
+    GList *list = g_object_get_data(G_OBJECT(browser), "tab_selector_list");
+    list = g_list_remove(list, view);
+    g_object_set_data(G_OBJECT(browser), "tab_selector_list", list);
 }
 
 static void
@@ -289,8 +284,10 @@ tab_selector_app_add_browser_cb (MidoriApp       *app,
 
     g_object_set_data(G_OBJECT(browser), "tab_selector_list", NULL);
 
-    g_signal_connect_after (browser, "add-tab",
+    g_signal_connect (browser, "add-tab",
         G_CALLBACK (tab_selector_browser_add_tab_cb), extension);
+    g_signal_connect (browser, "remove-tab",
+        G_CALLBACK (tab_selector_browser_remove_tab_cb), extension);
 
     navigationbar = katze_object_get_object(browser, "navigationbar");
     g_signal_connect (navigationbar, "key_press_event",
@@ -302,10 +299,6 @@ tab_selector_app_add_browser_cb (MidoriApp       *app,
     notebook = katze_object_get_object(browser, "notebook");
     g_signal_connect_after (notebook, "switch-page",
             G_CALLBACK (tab_selector_switch_page), browser);
-    g_signal_connect (notebook, "page-added",
-            G_CALLBACK (tab_selector_page_added), browser);
-    g_signal_connect (notebook, "page-removed",
-            G_CALLBACK (tab_selector_page_removed), browser);
     g_object_unref(notebook);
 }
 
@@ -330,6 +323,8 @@ tab_selector_disconnect_browser_cb (MidoriApp       *app,
 
     g_signal_handlers_disconnect_by_func (
         browser, tab_selector_browser_add_tab_cb, extension);
+    g_signal_handlers_disconnect_by_func (
+        browser, tab_selector_browser_remove_tab_cb, extension);
     g_signal_handlers_disconnect_by_func (
         katze_object_get_object (browser, "navigationbar"),
         tab_selector_handle_events, browser);
@@ -344,10 +339,6 @@ tab_selector_disconnect_browser_cb (MidoriApp       *app,
     notebook = katze_object_get_object (browser, "notebook");
     g_signal_handlers_disconnect_by_func (notebook,
             tab_selector_switch_page, browser);
-    g_signal_handlers_disconnect_by_func (notebook,
-            tab_selector_page_added, browser);
-    g_signal_handlers_disconnect_by_func (notebook,
-            tab_selector_page_removed, browser);
     g_object_unref (notebook);
 }
 
@@ -355,14 +346,19 @@ static void
 tab_selector_activate_cb (MidoriExtension   *extension,
                           MidoriApp         *app)
 {
+    GtkWidget *view;
     KatzeArray *browsers;
     MidoriBrowser *browser;
-    guint i;
+    guint i, j;
 
     browsers = katze_object_get_object (app, "browsers");
     i = 0;
-    while ((browser = katze_array_get_nth_item (browsers, i++)))
+    while ((browser = katze_array_get_nth_item (browsers, i++))) {
+        j = 0;
         tab_selector_app_add_browser_cb (app, browser, extension);
+        while((view = midori_browser_get_nth_tab(browser, j++)))
+            tab_selector_browser_add_tab_cb(browser, view, extension);
+    }
     g_object_unref (browsers);
     g_signal_connect (app, "add-browser",
         G_CALLBACK (tab_selector_app_add_browser_cb), extension);