From 9c9176912ed459ebce3db165be8393962f7d31d2 Mon Sep 17 00:00:00 2001 From: Jesse van den Kieboom Date: Thu, 23 Mar 2006 20:30:26 +0000 Subject: [PATCH] Fixed tab hiding --- gnoemoe/widgets/gm-world-view.c | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/gnoemoe/widgets/gm-world-view.c b/gnoemoe/widgets/gm-world-view.c index 3676503..8833e1c 100644 --- a/gnoemoe/widgets/gm-world-view.c +++ b/gnoemoe/widgets/gm-world-view.c @@ -165,16 +165,26 @@ gm_world_view_switch_page(GtkNotebook *notebook, GtkNotebookPage *page, if (GTK_NOTEBOOK_CLASS(gm_world_view_parent_class)->switch_page) { GTK_NOTEBOOK_CLASS(gm_world_view_parent_class)->switch_page(notebook, page, page_num); } - - if (gtk_notebook_get_n_pages(notebook) == 1) { - gtk_notebook_set_show_tabs(notebook, FALSE); - } + if (page_num == 0) { g_idle_add((GSourceFunc)gm_world_view_input_grab_focus, GM_WORLD_VIEW(notebook)); } } +static void +gm_world_view_remove_page(GtkContainer *container, GtkWidget *page) { + GtkNotebook *notebook = GTK_NOTEBOOK(container); + + if (GTK_CONTAINER_CLASS(gm_world_view_parent_class)->remove) { + GTK_CONTAINER_CLASS(gm_world_view_parent_class)->remove(container, page); + } + + if (gtk_notebook_get_n_pages(notebook) == 1) { + gtk_notebook_set_show_tabs(notebook, FALSE); + } +} + static void gm_world_view_show(GtkWidget *widget) { GmWorldView *view = GM_WORLD_VIEW(widget); @@ -196,11 +206,13 @@ gm_world_view_class_init(GmWorldViewClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS(klass); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS(klass); GtkObjectClass *gtk_object_class = GTK_OBJECT_CLASS(klass); + GtkContainerClass *container_class = GTK_CONTAINER_CLASS(klass); object_class->finalize = gm_world_view_finalize; widget_class->show = gm_world_view_show; gtk_object_class->destroy = gm_world_view_destroy; GTK_NOTEBOOK_CLASS(klass)->switch_page = gm_world_view_switch_page; + container_class->remove = gm_world_view_remove_page; g_type_class_add_private(object_class, sizeof(GmWorldViewPrivate)); }