Make the History List recognize tabs open before its activation

This commit is contained in:
André Stösel 2009-10-28 20:36:34 +01:00 committed by Christian Dywan
parent bda19771c3
commit ee87663b35

View file

@ -70,8 +70,9 @@ static GtkWidget* tab_selector_init_window (MidoriBrowser *browser)
gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER); 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_add(GTK_CONTAINER(window), hbox);
gtk_container_set_border_width(GTK_CONTAINER(hbox), 1);
sw = gtk_scrolled_window_new (NULL, NULL); sw = gtk_scrolled_window_new (NULL, NULL);
gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (sw), 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 static void
tab_selector_browser_add_tab_cb (MidoriBrowser *browser, tab_selector_browser_add_tab_cb (MidoriBrowser *browser,
GtkWidget *view, GtkWidget *view,
@ -270,6 +251,20 @@ tab_selector_browser_add_tab_cb (MidoriBrowser *browser,
G_CALLBACK (tab_selector_handle_events), browser); G_CALLBACK (tab_selector_handle_events), browser);
g_signal_connect (view, "key_release_event", g_signal_connect (view, "key_release_event",
G_CALLBACK (tab_selector_handle_events), browser); 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 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_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_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"); navigationbar = katze_object_get_object(browser, "navigationbar");
g_signal_connect (navigationbar, "key_press_event", 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"); notebook = katze_object_get_object(browser, "notebook");
g_signal_connect_after (notebook, "switch-page", g_signal_connect_after (notebook, "switch-page",
G_CALLBACK (tab_selector_switch_page), browser); 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); g_object_unref(notebook);
} }
@ -330,6 +323,8 @@ tab_selector_disconnect_browser_cb (MidoriApp *app,
g_signal_handlers_disconnect_by_func ( g_signal_handlers_disconnect_by_func (
browser, tab_selector_browser_add_tab_cb, extension); 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 ( g_signal_handlers_disconnect_by_func (
katze_object_get_object (browser, "navigationbar"), katze_object_get_object (browser, "navigationbar"),
tab_selector_handle_events, browser); tab_selector_handle_events, browser);
@ -344,10 +339,6 @@ tab_selector_disconnect_browser_cb (MidoriApp *app,
notebook = katze_object_get_object (browser, "notebook"); notebook = katze_object_get_object (browser, "notebook");
g_signal_handlers_disconnect_by_func (notebook, g_signal_handlers_disconnect_by_func (notebook,
tab_selector_switch_page, browser); 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); g_object_unref (notebook);
} }
@ -355,14 +346,19 @@ static void
tab_selector_activate_cb (MidoriExtension *extension, tab_selector_activate_cb (MidoriExtension *extension,
MidoriApp *app) MidoriApp *app)
{ {
GtkWidget *view;
KatzeArray *browsers; KatzeArray *browsers;
MidoriBrowser *browser; MidoriBrowser *browser;
guint i; guint i, j;
browsers = katze_object_get_object (app, "browsers"); browsers = katze_object_get_object (app, "browsers");
i = 0; 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); 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_object_unref (browsers);
g_signal_connect (app, "add-browser", g_signal_connect (app, "add-browser",
G_CALLBACK (tab_selector_app_add_browser_cb), extension); G_CALLBACK (tab_selector_app_add_browser_cb), extension);