[gtk+] gtk3-demo: Add a scrollbar context menu
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+] gtk3-demo: Add a scrollbar context menu
- Date: Wed, 29 Jul 2015 03:48:50 +0000 (UTC)
commit 1fb154e62a6b3cfb2cc6ed89c3a891950ca6a325
Author: Matthias Clasen <mclasen redhat com>
Date: Tue Jul 28 23:48:10 2015 -0400
gtk3-demo: Add a scrollbar context menu
Just to demonstrate the capability, not because this is
excellent UI.
demos/gtk-demo/main.c | 48 ++++++++++++++++++++++++++++++++++++++++++++++++
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 ee87fc9..ea47c88 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 f24989f..ebdb9cd 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>
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]