Added page scrolling, default not show tabs

This commit is contained in:
Jesse van den Kieboom 2006-02-06 18:35:41 +00:00
parent a3de8c9394
commit d9db308213
1 changed files with 37 additions and 20 deletions

View File

@ -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);
}
}