Revision: 45690
http://sourceforge.net/p/vice-emu/code/45690
Author: compyx
Date: 2025-05-22 19:03:56 +0000 (Thu, 22 May 2025)
Log Message:
-----------
Joyatick: gtk3: pack input widgets in scrolled window
Use a scrolled window with automatic vertical scroll bars to avoid stretching
the settings dialog when there are many inputs (e.g. buttons) available for a
device.
Modified Paths:
--------------
branches/compyx/joymap-003/vice/src/arch/gtk3/widgets/settings_joymap.c
Modified: branches/compyx/joymap-003/vice/src/arch/gtk3/widgets/settings_joymap.c
===================================================================
--- branches/compyx/joymap-003/vice/src/arch/gtk3/widgets/settings_joymap.c 2025-05-20 22:09:53 UTC (rev 45689)
+++ branches/compyx/joymap-003/vice/src/arch/gtk3/widgets/settings_joymap.c 2025-05-22 19:03:56 UTC (rev 45690)
@@ -205,6 +205,31 @@
return grid;
}
+/** \brief Create GtkScrolledWindow wrapping a widget
+ *
+ * Create scrolled window with vertical scroll bars, visible only when the
+ * content doesn't fit the preset height, and add \a child as its child.
+ *
+ * \param[in] child child widget for the scrolled window
+ *
+ * \return new \c GtkScrolledWindow
+ */
+static GtkWidget *scrolled_window_helper(GtkWidget *child)
+{
+ GtkWidget *scrolled = gtk_scrolled_window_new(NULL, NULL);
+
+ gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolled),
+ GTK_POLICY_NEVER,
+ GTK_POLICY_AUTOMATIC);
+ gtk_widget_set_hexpand(scrolled, TRUE);
+ gtk_widget_set_vexpand(scrolled, FALSE);
+ /* FIXME: can we avoid setting "fixed" width? */
+ gtk_widget_set_size_request(scrolled, -1, 380);
+ gtk_container_add(GTK_CONTAINER(scrolled), child);
+ return scrolled;
+}
+
+
/* TODO: Repaint widgets once after all events have been processed, with
* Gtk fram tick or so?
*/
@@ -215,15 +240,15 @@
GtkWidget *bgrid;
GtkWidget *hgrid;
- grid = grid_helper("<b>Device events</b>", 16, 8, 3);
-
+ grid = gtk_grid_new();
agrid = create_axes_grid(joydev);
bgrid = create_buttons_grid(joydev);
hgrid = grid_helper("<b>Hats (TODO)</b>", 8, 8, 2);
- gtk_grid_attach(GTK_GRID(grid), agrid, 0, 1, 1, 1);
- gtk_grid_attach(GTK_GRID(grid), bgrid, 1, 1, 1, 1);
- gtk_grid_attach(GTK_GRID(grid), hgrid, 2, 1, 1, 1);
+ gtk_grid_attach(GTK_GRID(grid), scrolled_window_helper(agrid), 0, 0, 1, 1);
+ gtk_grid_attach(GTK_GRID(grid), scrolled_window_helper(bgrid), 1, 0, 1, 1);
+ gtk_grid_attach(GTK_GRID(grid), scrolled_window_helper(hgrid), 2, 0, 1, 1);
+
return grid;
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|