From d9db3082135dfbaad82dbd3a8121b7b42ee3bec3 Mon Sep 17 00:00:00 2001 From: Jesse van den Kieboom Date: Mon, 6 Feb 2006 18:35:41 +0000 Subject: [PATCH] Added page scrolling, default not show tabs --- gnoemoe/widgets/gm-world-view.c | 57 +++++++++++++++++++++------------ 1 file changed, 37 insertions(+), 20 deletions(-) diff --git a/gnoemoe/widgets/gm-world-view.c b/gnoemoe/widgets/gm-world-view.c index d3a59d4..3676503 100644 --- a/gnoemoe/widgets/gm-world-view.c +++ b/gnoemoe/widgets/gm-world-view.c @@ -68,8 +68,6 @@ void on_gm_world_view_editor_view_close_clicked(GtkButton *button, void on_gm_world_view_log_view_close_clicked(GtkButton *button, GtkWidget *view); -void on_gm_world_view_switch_page(GmWorldView *view, GtkNotebookPage *page, - guint page_num, gpointer user_data); gboolean on_gm_world_view_world_input_view_key_pressed(GtkWidget *widget, GdkEventKey *event, GmWorldView *view); @@ -154,6 +152,29 @@ gm_world_view_destroy(GtkObject *object) { } } + +static gboolean +gm_world_view_input_grab_focus(GmWorldView *view) { + gtk_widget_grab_focus(GTK_WIDGET(view->priv->text_view_input)); + return FALSE; +} + +static void +gm_world_view_switch_page(GtkNotebook *notebook, GtkNotebookPage *page, + guint page_num) { + 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_show(GtkWidget *widget) { GmWorldView *view = GM_WORLD_VIEW(widget); @@ -179,6 +200,7 @@ gm_world_view_class_init(GmWorldViewClass *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; g_type_class_add_private(object_class, sizeof(GmWorldViewPrivate)); } @@ -415,9 +437,6 @@ gm_world_view_init(GmWorldView *view) { label = gm_create_tab_label("world.svg", _("World"), FALSE, &info); gtk_notebook_append_page(GTK_NOTEBOOK(view), gm_world_view_world_page_new(view), label); - - g_signal_connect(view, "switch-page", - G_CALLBACK(on_gm_world_view_switch_page), NULL); } GtkWidget * @@ -920,6 +939,19 @@ on_gm_world_view_world_input_view_key_pressed(GtkWidget *widget, return TRUE; } break; + case GDK_Page_Up: case GDK_Page_Down: + if (!(event->state & GDK_CONTROL_MASK && + !(event->state & GDK_SHIFT_MASK))) { + if (event->keyval == GDK_Page_Up) { + gm_text_scroller_scroll_page( + view->priv->text_scroller_world, -1); + } else { + gm_text_scroller_scroll_page( + view->priv->text_scroller_world, 1); + } + + return TRUE; + } default: break; } @@ -938,18 +970,3 @@ on_gm_world_view_world_text_view_url_activate(GmWorldView *view, gchar const *url) { gm_open_url(url); } - -gboolean -gm_world_view_input_grab_focus(GmWorldView *view) { - gtk_widget_grab_focus(GTK_WIDGET(view->priv->text_view_input)); - return FALSE; -} - -void -on_gm_world_view_switch_page(GmWorldView *view, GtkNotebookPage *page, - guint page_num, gpointer user_data) { - if (page_num == 0) { - g_idle_add((GSourceFunc)gm_world_view_input_grab_focus, view); - } -} -