summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2020-11-09 20:07:09 -0500
committerMatthias Clasen <mclasen@redhat.com>2020-11-09 20:07:09 -0500
commita745dbfc1572ffb5af31aafe0aec1e5f410c6894 (patch)
tree0f5d98c5f587223592f45fc69352b472b0981fc5
parent14be50839ed798b3499bb83f6b97bdbcc045fea4 (diff)
downloadgtk+-a745dbfc1572ffb5af31aafe0aec1e5f410c6894.tar.gz
gkt-demo: Add a columview to the scroll demo
This is an interesting case, since it has many labels, and we are struggling to provide good scrolling performance.
-rw-r--r--demos/gtk-demo/iconscroll.c25
-rw-r--r--demos/gtk-demo/listview_ucd.c5
2 files changed, 27 insertions, 3 deletions
diff --git a/demos/gtk-demo/iconscroll.c b/demos/gtk-demo/iconscroll.c
index d7a6c1b5e3..43d74c49f7 100644
--- a/demos/gtk-demo/iconscroll.c
+++ b/demos/gtk-demo/iconscroll.c
@@ -13,7 +13,7 @@ static GtkWidget *window = NULL;
static GtkWidget *scrolledwindow;
static int selected;
-#define N_WIDGET_TYPES 6
+#define N_WIDGET_TYPES 7
static int hincrement = 5;
@@ -177,6 +177,24 @@ populate_grid (void)
gtk_scrolled_window_set_child (GTK_SCROLLED_WINDOW (scrolledwindow), list);
}
+extern GtkWidget *create_ucd_view (GtkWidget *label);
+
+static void
+populate_list2 (void)
+{
+ GtkWidget *list;
+
+ list = create_ucd_view (NULL);
+
+ hincrement = 0;
+ vincrement = 5;
+
+ gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow),
+ GTK_POLICY_AUTOMATIC,
+ GTK_POLICY_AUTOMATIC);
+ gtk_scrolled_window_set_child (GTK_SCROLLED_WINDOW (scrolledwindow), list);
+}
+
static void
set_widget_type (int type)
{
@@ -216,6 +234,11 @@ set_widget_type (int type)
break;
case 5:
+ gtk_window_set_title (GTK_WINDOW (window), "Scrolling a list");
+ populate_list2 ();
+ break;
+
+ case 6:
gtk_window_set_title (GTK_WINDOW (window), "Scrolling a grid");
populate_grid ();
break;
diff --git a/demos/gtk-demo/listview_ucd.c b/demos/gtk-demo/listview_ucd.c
index 9fe85fcbd1..df120fcb08 100644
--- a/demos/gtk-demo/listview_ucd.c
+++ b/demos/gtk-demo/listview_ucd.c
@@ -259,7 +259,7 @@ selection_changed (GObject *object,
gtk_label_set_label (GTK_LABEL (label), buffer);
}
-static GtkWidget *
+GtkWidget *
create_ucd_view (GtkWidget *label)
{
GtkWidget *cv;
@@ -273,7 +273,8 @@ create_ucd_view (GtkWidget *label)
selection = gtk_single_selection_new (ucd_model);
gtk_single_selection_set_autoselect (selection, TRUE);
gtk_single_selection_set_can_unselect (selection, FALSE);
- g_signal_connect (selection, "notify::selected", G_CALLBACK (selection_changed), label);
+ if (label)
+ g_signal_connect (selection, "notify::selected", G_CALLBACK (selection_changed), label);
cv = gtk_column_view_new (GTK_SELECTION_MODEL (selection));
gtk_column_view_set_show_column_separators (GTK_COLUMN_VIEW (cv), TRUE);