summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--demos/gtk-demo/main.c48
-rw-r--r--demos/gtk-demo/main.ui2
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>