From 93ef102c231997fc4941ddf6b8e160bafa53c9ba Mon Sep 17 00:00:00 2001 From: Christian Dywan Date: Thu, 12 Jul 2012 00:14:48 +0200 Subject: [PATCH] Deal with moving and switching in dynamic notebook --- katze/katze-preferences.c | 3 ++- midori/midori-browser.c | 34 +++++++++++++++++----------------- 2 files changed, 19 insertions(+), 18 deletions(-) diff --git a/katze/katze-preferences.c b/katze/katze-preferences.c index cb95a146..21183bc5 100644 --- a/katze/katze-preferences.c +++ b/katze/katze-preferences.c @@ -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 diff --git a/midori/midori-browser.c b/midori/midori-browser.c index 7597e875..adf81ca0 100644 --- a/midori/midori-browser.c +++ b/midori/midori-browser.c @@ -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