]> spindle.queued.net Git - midori/commitdiff
Deal with moving and switching in dynamic notebook
authorChristian Dywan <christian@twotoasts.de>
Wed, 11 Jul 2012 22:14:48 +0000 (00:14 +0200)
committerChristian Dywan <christian@twotoasts.de>
Wed, 11 Jul 2012 22:14:48 +0000 (00:14 +0200)
katze/katze-preferences.c
midori/midori-browser.c

index cb95a146341f8aae74dbde7f86d8703d77eb2a7d..21183bc5ea266a887f5997fe01e57f67a4bfa40a 100644 (file)
@@ -210,7 +210,8 @@ katze_preferences_prepare (KatzePreferences* preferences)
                       G_CALLBACK (gtk_widget_destroyed), &priv->scrolled);
     #else
     #if HAVE_GRANITE
-    priv->notebook = granite_widgets_static_notebook_new (FALSE);
+    /* FIXME: granite: should return GtkWidget* like GTK+ */
+    priv->notebook = (GtkWidget*)granite_widgets_static_notebook_new (FALSE);
     #else
     priv->notebook = gtk_notebook_new ();
     #endif
index 7597e875cbb9f267b8d860d184e352c3317a0263..adf81ca0dcc0b6ef5223dc0c1ced0c506f563fc0 100644 (file)
@@ -309,10 +309,9 @@ midori_browser_update_secondary_icon (MidoriBrowser* browser,
 }
 
 static void
-_midori_browser_update_interface (MidoriBrowser* browser)
+_midori_browser_update_interface (MidoriBrowser* browser,
+                                  MidoriView*    view)
 {
-    GtkWidget* widget = midori_browser_get_current_tab (browser);
-    MidoriView* view = MIDORI_VIEW (widget);
     gboolean loading = midori_view_get_load_status (view) != MIDORI_LOAD_FINISHED;
     gboolean can_reload = midori_view_can_reload (view);
     GtkAction* action;
@@ -376,7 +375,7 @@ _midori_browser_update_interface (MidoriBrowser* browser)
     action = _action_by_name (browser, "Location");
     midori_location_action_set_security_hint (
         MIDORI_LOCATION_ACTION (action), midori_view_get_security (view));
-    midori_browser_update_secondary_icon (browser, MIDORI_VIEW (view), action);
+    midori_browser_update_secondary_icon (browser, view, action);
 }
 
 static void
@@ -528,7 +527,7 @@ midori_view_notify_load_status_cb (GtkWidget*      widget,
             g_object_notify (G_OBJECT (browser), "uri");
         }
 
-        _midori_browser_update_interface (browser);
+        _midori_browser_update_interface (browser, view);
         _midori_browser_set_statusbar_text (browser, NULL);
 
         /* This is a hack to ensure that the address entry is focussed
@@ -795,7 +794,7 @@ midori_browser_edit_bookmark_dialog_new (MidoriBrowser* browser,
         /* FIXME: granite: should return GtkWidget* like GTK+ */
         dialog = (GtkWidget*)granite_widgets_pop_over_new ();
         granite_widgets_pop_over_move_to_widget (
-            GRANITE_WIDGETS_POP_OVER (dialog), proxy);
+            GRANITE_WIDGETS_POP_OVER (dialog), proxy, TRUE);
     }
     else
     #endif
@@ -4844,11 +4843,7 @@ _action_tab_move_backward_activate (GtkAction*     action,
     else
         new_pos = midori_browser_get_n_pages (browser) - 1;
     #ifdef HAVE_GRANITE
-    /* FIXME: There is no move/ set_tab_position function */
-    granite_widgets_dynamic_notebook_remove_tab (
-        GRANITE_WIDGETS_DYNAMIC_NOTEBOOK (browser->notebook),
-        midori_view_get_tab (MIDORI_VIEW (widget)));
-    granite_widgets_dynamic_notebook_insert_tab (
+    granite_widgets_dynamic_notebook_set_tab_position (
         GRANITE_WIDGETS_DYNAMIC_NOTEBOOK (browser->notebook),
         midori_view_get_tab (MIDORI_VIEW (widget)), new_pos);
     #else
@@ -5222,7 +5217,7 @@ midori_browser_notebook_switch_page_cb (GtkWidget*       notebook,
     GtkAction* action;
     const gchar* text;
 
-    if (!(widget = midori_browser_get_current_tab (browser)))
+    if (!(widget = midori_browser_get_nth_tab (browser, page_num)))
         return;
 
     action = _action_by_name (browser, "Location");
@@ -5242,7 +5237,7 @@ midori_browser_notebook_switch_page_after_cb (GtkWidget*       notebook,
     const gchar* uri;
     GtkAction* action;
 
-    if (!(widget = midori_browser_get_current_tab (browser)))
+    if (!(widget = midori_browser_get_nth_tab (browser, page_num)))
         return;
 
     view = MIDORI_VIEW (widget);
@@ -5261,7 +5256,7 @@ midori_browser_notebook_switch_page_after_cb (GtkWidget*       notebook,
     g_object_notify (G_OBJECT (browser), "tab");
 
     _midori_browser_set_statusbar_text (browser, NULL);
-    _midori_browser_update_interface (browser);
+    _midori_browser_update_interface (browser, view);
     _midori_browser_update_progress (browser, view);
 }
 
@@ -5310,13 +5305,18 @@ midori_browser_notebook_tab_added_cb (GtkWidget*         notebook,
 }
 
 static void
-midori_browser_notebook_tab_switched_cb (GtkWidget*         notebook,
+midori_browser_notebook_tab_switched_cb (GraniteWidgetsDynamicNotebook* notebook,
                                          GraniteWidgetsTab* old_tab,
                                          GraniteWidgetsTab* new_tab,
                                          MidoriBrowser*     browser)
 {
-    midori_browser_notebook_switch_page_cb (notebook, NULL, 0, browser);
-    midori_browser_notebook_switch_page_after_cb (notebook, NULL, 0, browser);
+    gint new_pos = granite_widgets_dynamic_notebook_get_tab_position (notebook, new_tab);
+    if (old_tab)
+    {
+        gint old_pos = granite_widgets_dynamic_notebook_get_tab_position (notebook, old_tab);
+        midori_browser_notebook_switch_page_cb (browser->notebook, NULL, old_pos, browser);
+    }
+    midori_browser_notebook_switch_page_after_cb (browser->notebook, NULL, new_pos, browser);
 }
 
 static void