diff options
-rw-r--r-- | demos/gtk-demo/main.c | 48 | ||||
-rw-r--r-- | demos/gtk-demo/main.ui | 2 |
2 files changed, 49 insertions, 1 deletions
diff --git a/demos/gtk-demo/main.c b/demos/gtk-demo/main.c index ee87fc983d..ea47c8892f 100644 --- a/demos/gtk-demo/main.c +++ b/demos/gtk-demo/main.c @@ -973,6 +973,32 @@ row_activated_cb (GtkWidget *tree_view, } static void +start_cb (GtkMenuItem *item, GtkWidget *scrollbar) +{ + GtkAdjustment *adj; + + adj = gtk_range_get_adjustment (GTK_RANGE (scrollbar)); + gtk_adjustment_set_value (adj, gtk_adjustment_get_lower (adj)); +} + +static void +end_cb (GtkMenuItem *item, GtkWidget *scrollbar) +{ + GtkAdjustment *adj; + + adj = gtk_range_get_adjustment (GTK_RANGE (scrollbar)); + gtk_adjustment_set_value (adj, gtk_adjustment_get_upper (adj) - gtk_adjustment_get_page_size (adj)); +} + +static gboolean +scrollbar_popup (GtkWidget *scrollbar, GtkWidget *menu) +{ + gtk_menu_popup (GTK_MENU (menu), NULL, NULL, NULL, NULL, 0, gtk_get_current_event_time ()); + + return TRUE; +} + +static void activate (GApplication *app) { GtkBuilder *builder; @@ -981,6 +1007,11 @@ activate (GApplication *app) GtkTreeModel *model; GtkTreeIter iter; GError *error = NULL; + GtkWidget *sw; + GtkWidget *scrollbar; + GtkWidget *menu; + GtkWidget *item; + static GActionEntry win_entries[] = { { "run", activate_run, NULL, NULL, NULL } }; @@ -1007,6 +1038,23 @@ activate (GApplication *app) treeview = (GtkWidget *)gtk_builder_get_object (builder, "treeview"); model = gtk_tree_view_get_model (GTK_TREE_VIEW (treeview)); + sw = (GtkWidget *)gtk_builder_get_object (builder, "source-scrolledwindow"); + scrollbar = gtk_scrolled_window_get_vscrollbar (GTK_SCROLLED_WINDOW (sw)); + + menu = gtk_menu_new (); + + item = gtk_menu_item_new_with_label ("Start"); + g_signal_connect (item, "activate", G_CALLBACK (start_cb), scrollbar); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); + + item = gtk_menu_item_new_with_label ("End"); + g_signal_connect (item, "activate", G_CALLBACK (end_cb), scrollbar); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); + + gtk_widget_show_all (menu); + + g_signal_connect (scrollbar, "popup-menu", G_CALLBACK (scrollbar_popup), menu); + load_file (gtk_demos[0].name, gtk_demos[0].filename); populate_model (model); diff --git a/demos/gtk-demo/main.ui b/demos/gtk-demo/main.ui index f24989fc30..ebdb9cd872 100644 --- a/demos/gtk-demo/main.ui +++ b/demos/gtk-demo/main.ui @@ -160,7 +160,7 @@ </packing> </child> <child> - <object class="GtkScrolledWindow" id="scrolledwindow2"> + <object class="GtkScrolledWindow" id="source-scrolledwindow"> <property name="visible">True</property> <property name="can_focus">True</property> <property name="shadow_type">none</property> |