diff options
author | Christian Dywan <christian@twotoasts.de> | 2012-12-16 13:59:46 +0100 |
---|---|---|
committer | Christian Dywan <christian@twotoasts.de> | 2012-12-16 13:59:46 +0100 |
commit | 735166de30b49d6aa63c2d4cb57206cd5c5b7d51 (patch) | |
tree | bbd83fa53200892814d83abea9e67b4d0cafbc3b | |
parent | 0fbbe63e3d6fe14a92c3e8ba59f2dc48ebab70df (diff) | |
download | midori-735166de30b49d6aa63c2d4cb57206cd5c5b7d51.tar.gz |
Remove midori_browser_foreach in favour of GList
Iterating a list is less tempting into hacks and faster,
more importantly 1 code path for 1 feature is more maintainable.
-rw-r--r-- | extensions/addons.c | 34 | ||||
-rw-r--r-- | extensions/formhistory/formhistory.c | 29 | ||||
-rw-r--r-- | extensions/mouse-gestures.c | 20 | ||||
-rw-r--r-- | extensions/tab-panel.c | 14 | ||||
-rw-r--r-- | midori/midori-browser.c | 54 | ||||
-rw-r--r-- | midori/midori-browser.h | 5 | ||||
-rw-r--r-- | midori/midori-view.c | 17 |
7 files changed, 57 insertions, 116 deletions
diff --git a/extensions/addons.c b/extensions/addons.c index 3242e71b..08c14b14 100644 --- a/extensions/addons.c +++ b/extensions/addons.c @@ -1518,29 +1518,18 @@ addons_add_tab_cb (MidoriBrowser* browser, } static void -addons_add_tab_foreach_cb (MidoriView* view, - MidoriBrowser* browser, - MidoriExtension* extension) -{ - addons_add_tab_cb (browser, view, extension); -} - -static void -addons_deactivate_tabs (MidoriView* view, - MidoriExtension* extension) -{ - GtkWidget* web_view = midori_view_get_web_view (view); - g_signal_handlers_disconnect_by_func ( - web_view, addons_context_ready_cb, extension); -} - -static void addons_browser_destroy (MidoriBrowser* browser, MidoriExtension* extension) { GtkWidget* scripts, *styles; - - midori_browser_foreach (browser, (GtkCallback)addons_deactivate_tabs, extension); + GList* tabs = midori_browser_get_tabs (browser); + for (; tabs; tabs = g_list_next (tabs)) + { + GtkWidget* web_view = midori_view_get_web_view (tabs->data); + g_signal_handlers_disconnect_by_func ( + web_view, addons_context_ready_cb, extension); + } + g_list_free (tabs); g_signal_handlers_disconnect_by_func (browser, addons_add_tab_cb, extension); scripts = (GtkWidget*)g_object_get_data (G_OBJECT (browser), "scripts-addons"); @@ -1620,9 +1609,10 @@ addons_app_add_browser_cb (MidoriApp* app, { GtkWidget* panel; GtkWidget* scripts, *styles; - - midori_browser_foreach (browser, - (GtkCallback)addons_add_tab_foreach_cb, extension); + GList* tabs = midori_browser_get_tabs (browser); + for (; tabs; tabs = g_list_next (tabs)) + addons_add_tab_cb (browser, tabs->data, extension); + g_list_free (tabs); g_signal_connect (browser, "add-tab", G_CALLBACK (addons_add_tab_cb), extension); panel = katze_object_get_object (browser, "panel"); diff --git a/extensions/formhistory/formhistory.c b/extensions/formhistory/formhistory.c index d999cd4d..510a135f 100644 --- a/extensions/formhistory/formhistory.c +++ b/extensions/formhistory/formhistory.c @@ -416,13 +416,6 @@ formhistory_add_tab_cb (MidoriBrowser* browser, } static void -formhistory_add_tab_foreach_cb (MidoriView* view, - MidoriExtension* extension) -{ - formhistory_add_tab_cb (NULL, view, extension); -} - -static void formhistory_app_add_browser_cb (MidoriApp* app, MidoriBrowser* browser, MidoriExtension* extension) @@ -446,8 +439,10 @@ formhistory_app_add_browser_cb (MidoriApp* app, if (midori_extension_get_boolean (extension, "always-load")) { - midori_browser_foreach (browser, - (GtkCallback)formhistory_add_tab_foreach_cb, extension); + GList* tabs = midori_browser_get_tabs (browser); + for (; tabs; tabs = g_list_next (tabs)) + formhistory_add_tab_cb (browser, tabs->data, extension); + g_list_free (tabs); g_signal_connect (browser, "add-tab", G_CALLBACK (formhistory_add_tab_cb), extension); } @@ -487,8 +482,10 @@ formhistory_deactivate_cb (MidoriExtension* extension, extension, formhistory_deactivate_cb, browser); g_signal_handlers_disconnect_by_func ( app, formhistory_app_add_browser_cb, extension); - midori_browser_foreach (browser, - (GtkCallback)formhistory_deactivate_tab, extension); + GList* tabs = midori_browser_get_tabs (browser); + for (; tabs; tabs = g_list_next (tabs)) + formhistory_deactivate_tab (tabs->data, extension); + g_list_free (tabs); g_object_set_data (G_OBJECT (browser), "FormHistoryExtension", NULL); action = gtk_action_group_get_action (action_group, "FormHistoryToggleState"); @@ -589,18 +586,20 @@ formhistory_preferences_response_cb (GtkWidget* dialog, browsers = katze_object_get_object (app, "browsers"); KATZE_ARRAY_FOREACH_ITEM (browser, browsers) { - midori_browser_foreach (browser, - (GtkCallback)formhistory_deactivate_tab, extension); + GList* tabs = midori_browser_get_tabs (browser); + for (; tabs; tabs = g_list_next (tabs)) + formhistory_deactivate_tab (tabs->data, extension); g_signal_handlers_disconnect_by_func ( browser, formhistory_add_tab_cb, extension); if (new_state) { - midori_browser_foreach (browser, - (GtkCallback)formhistory_add_tab_foreach_cb, extension); + for (; tabs; tabs = g_list_next (tabs)) + formhistory_add_tab_cb (browser, tabs->data, extension); g_signal_connect (browser, "add-tab", G_CALLBACK (formhistory_add_tab_cb), extension); } + g_list_free (tabs); } } } diff --git a/extensions/mouse-gestures.c b/extensions/mouse-gestures.c index b1f5b28e..39415946 100644 --- a/extensions/mouse-gestures.c +++ b/extensions/mouse-gestures.c @@ -221,20 +221,14 @@ mouse_gestures_deactivate_cb (MidoriExtension* extension, MidoriBrowser* browser); static void -mouse_gestures_add_tab_foreach_cb (MidoriView* view, - MidoriBrowser* browser, - MidoriExtension* extension) -{ - mouse_gestures_add_tab_cb (browser, view, extension); -} - -static void mouse_gestures_app_add_browser_cb (MidoriApp* app, MidoriBrowser* browser, MidoriExtension* extension) { - midori_browser_foreach (browser, - (GtkCallback)mouse_gestures_add_tab_foreach_cb, extension); + GList* tabs = midori_browser_get_tabs (browser); + for (; tabs; tabs = g_list_next (tabs)) + mouse_gestures_add_tab_cb (browser, tabs->data, extension); + g_list_free (tabs); g_signal_connect (browser, "add-tab", G_CALLBACK (mouse_gestures_add_tab_cb), extension); g_signal_connect (extension, "deactivate", @@ -269,9 +263,11 @@ mouse_gestures_deactivate_cb (MidoriExtension* extension, app, mouse_gestures_app_add_browser_cb, extension); g_signal_handlers_disconnect_by_func ( browser, mouse_gestures_add_tab_cb, extension); - midori_browser_foreach (browser, - (GtkCallback)mouse_gestures_deactivate_tabs, browser); + GList* tabs = midori_browser_get_tabs (browser); + for (; tabs; tabs = g_list_next (tabs)) + mouse_gestures_deactivate_tabs (tabs->data, browser); + g_list_free (tabs); g_free (gesture); } diff --git a/extensions/tab-panel.c b/extensions/tab-panel.c index c0cc1431..9b1ed688 100644 --- a/extensions/tab-panel.c +++ b/extensions/tab-panel.c @@ -467,14 +467,6 @@ tab_panel_browser_add_tab_cb (MidoriBrowser* browser, } static void -tab_panel_browser_foreach_cb (GtkWidget* view, - MidoriExtension* extension) -{ - tab_panel_browser_add_tab_cb (midori_browser_get_for_widget (view), - view, extension); -} - -static void tab_panel_browser_remove_tab_cb (MidoriBrowser* browser, GtkWidget* view, MidoriExtension* extension) @@ -590,8 +582,10 @@ tab_panel_app_add_browser_cb (MidoriApp* app, midori_panel_set_current_page (MIDORI_PANEL (panel), i); g_object_unref (panel); - midori_browser_foreach (browser, - (GtkCallback)tab_panel_browser_foreach_cb, treeview); + GList* tabs = midori_browser_get_tabs (browser); + for (; tabs; tabs = g_list_next (tabs)) + tab_panel_browser_add_tab_cb (browser, tabs->data, extension); + g_list_free (tabs); g_signal_connect_after (browser, "add-tab", G_CALLBACK (tab_panel_browser_add_tab_cb), extension); diff --git a/midori/midori-browser.c b/midori/midori-browser.c index ff91db6c..d6150225 100644 --- a/midori/midori-browser.c +++ b/midori/midori-browser.c @@ -1668,35 +1668,6 @@ _midori_browser_add_tab (MidoriBrowser* browser, _midori_browser_update_actions (browser); } -/** - * midori_browser_foreach: - * @browser: a #MidoriBrowser - * @callback: a #GtkCallback - * @callback_data: custom data - * - * Calls the specified callback for each view contained - * in the browser. - * - * Since: 0.1.7 - **/ -void -midori_browser_foreach (MidoriBrowser* browser, - GtkCallback callback, - gpointer callback_data) -{ - g_return_if_fail (MIDORI_IS_BROWSER (browser)); - - #ifdef HAVE_GRANITE - /* FIXME */ - if (GTK_IS_BIN (browser->notebook)) - gtk_container_foreach (GTK_CONTAINER (gtk_bin_get_child (GTK_BIN ( - browser->notebook))), callback, callback_data); - else - #endif - gtk_container_foreach (GTK_CONTAINER (browser->notebook), - callback, callback_data); -} - static void _midori_browser_quit (MidoriBrowser* browser) { @@ -4606,20 +4577,17 @@ _action_tab_duplicate_activate (GtkAction* action, } static void -midori_browser_close_other_tabs_cb (GtkWidget* view, - gpointer data) -{ - GtkWidget* remaining_view = data; - if (view != remaining_view) - gtk_widget_destroy (view); -} - -static void _action_tab_close_other_activate (GtkAction* action, MidoriBrowser* browser) { GtkWidget* view = midori_browser_get_current_tab (browser); - midori_browser_foreach (browser, midori_browser_close_other_tabs_cb, view); + GList* tabs = midori_browser_get_tabs (browser); + for (; tabs; tabs = g_list_next (tabs)) + { + if (tabs->data != view) + gtk_widget_destroy (tabs->data); + } + g_list_free (tabs); } static const gchar* credits_authors[] = @@ -5100,7 +5068,7 @@ midori_browser_notebook_button_press_event_after_cb (GtkNotebook* notebook, else if (event->type == GDK_BUTTON_PRESS && MIDORI_EVENT_CONTEXT_MENU (event)) { GtkWidget* menu = gtk_menu_new (); - GList* tabs = gtk_container_get_children (GTK_CONTAINER (notebook)); + GList* tabs = midori_browser_get_tabs (browser); GtkWidget* menuitem = sokoke_action_create_popup_menu_item ( gtk_action_group_get_action (browser->action_group, "TabNew")); gint i = 0; @@ -7059,8 +7027,10 @@ midori_browser_set_property (GObject* object, _midori_browser_update_settings (browser); g_signal_connect (browser->settings, "notify", G_CALLBACK (midori_browser_settings_notify), browser); - midori_browser_foreach (browser, - (GtkCallback) midori_view_set_settings, browser->settings); + GList* tabs = midori_browser_get_tabs (browser); + for (; tabs; tabs = g_list_next (tabs)) + midori_view_set_settings (tabs->data, browser->settings); + g_list_free (tabs); break; case PROP_BOOKMARKS: midori_browser_set_bookmarks (browser, g_value_get_object (value)); diff --git a/midori/midori-browser.h b/midori/midori-browser.h index 43d7461d..16f3868a 100644 --- a/midori/midori-browser.h +++ b/midori/midori-browser.h @@ -82,11 +82,6 @@ void midori_browser_close_tab (MidoriBrowser* browser, GtkWidget* widget); -void -midori_browser_foreach (MidoriBrowser* browser, - GtkCallback callback, - gpointer callback_data); - gint midori_browser_add_item (MidoriBrowser* browser, KatzeItem* item); diff --git a/midori/midori-view.c b/midori/midori-view.c index 9a581b8b..dbac434c 100644 --- a/midori/midori-view.c +++ b/midori/midori-view.c @@ -4362,20 +4362,17 @@ midori_view_duplicate (MidoriView* view) } static void -midori_view_browser_close_tabs_cb (GtkWidget* view, - gpointer data) -{ - GtkWidget* remaining_view = data; - if (view != remaining_view) - midori_browser_close_tab (midori_browser_get_for_widget (view), view); -} - -static void midori_view_tab_label_menu_close_other_tabs_cb (GtkWidget* menuitem, GtkWidget* view) { MidoriBrowser* browser = midori_browser_get_for_widget (view); - midori_browser_foreach (browser, midori_view_browser_close_tabs_cb, view); + GList* tabs = midori_browser_get_tabs (browser); + for (; tabs; tabs = g_list_next (tabs)) + { + if (tabs->data != view) + gtk_widget_destroy (tabs->data); + } + g_list_free (tabs); } static void |