From 08218c705642a86c0acad254c6bab96005f19aad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20M=C3=ADchal?= Date: Wed, 18 Jun 2025 20:03:06 +0300 Subject: [PATCH] libgimpwidgets: Enforce minimal sizes of panels in GimpBrowser The 'Plugin Browser' and 'Procedure Browser' use the same logic for enforcing the minimum size of the details page and the list views. And both are doing it by first setting the minimum: size of GtkTreeView and then they climb up the widget tree to do the same. This is not ideal. Setting the minimum size of GtkTreeView is not necessary because it is inside of GtkScrolledWindow which makes this request moot. It also does not enforce the minimum height of the widget for that reason. And if GimpBrowser ever changes, both browsers will need to update their logic. Moving the size enforcing a level up is logical and more robust. --- libgimp/gimpprocbrowserdialog.c | 13 ++----------- libgimpwidgets/gimpbrowser.c | 6 ++++++ plug-ins/common/plugin-browser.c | 11 ----------- 3 files changed, 8 insertions(+), 22 deletions(-) diff --git a/libgimp/gimpprocbrowserdialog.c b/libgimp/gimpprocbrowserdialog.c index 12274fd32b..8843880f20 100644 --- a/libgimp/gimpprocbrowserdialog.c +++ b/libgimp/gimpprocbrowserdialog.c @@ -45,10 +45,8 @@ **/ -#define DBL_LIST_WIDTH 250 -#define DBL_LIST_HEIGHT 250 -#define DBL_WIDTH 650 -#define DBL_HEIGHT 400 +#define DBL_WIDTH 650 +#define DBL_HEIGHT 400 enum @@ -143,7 +141,6 @@ gimp_proc_browser_dialog_init (GimpProcBrowserDialog *dialog) GtkWidget *scrolled_window; GtkCellRenderer *renderer; GtkTreeSelection *selection; - GtkWidget *parent; gtk_window_set_default_size (GTK_WINDOW (dialog), DBL_WIDTH, DBL_HEIGHT); @@ -196,7 +193,6 @@ gimp_proc_browser_dialog_init (GimpProcBrowserDialog *dialog) G_CALLBACK (browser_row_activated), dialog); - gtk_widget_set_size_request (dialog->tree_view, DBL_LIST_WIDTH, DBL_LIST_HEIGHT); gtk_container_add (GTK_CONTAINER (scrolled_window), dialog->tree_view); gtk_widget_show (dialog->tree_view); @@ -206,11 +202,6 @@ gimp_proc_browser_dialog_init (GimpProcBrowserDialog *dialog) G_CALLBACK (browser_selection_changed), dialog); - parent = gtk_widget_get_parent (gimp_browser_get_right_vbox (GIMP_BROWSER (dialog->browser))); - parent = gtk_widget_get_parent (parent); - - gtk_widget_set_size_request (parent, DBL_WIDTH - DBL_LIST_WIDTH, -1); - /* first search (all procedures) */ browser_search (GIMP_BROWSER (dialog->browser), "", SEARCH_TYPE_ALL, dialog); diff --git a/libgimpwidgets/gimpbrowser.c b/libgimpwidgets/gimpbrowser.c index 08bcc7b488..8feb154f43 100644 --- a/libgimpwidgets/gimpbrowser.c +++ b/libgimpwidgets/gimpbrowser.c @@ -42,6 +42,10 @@ * A base class for a documentation browser. **/ +#define GIMP_BROWSER_LEFT_MIN_WIDTH 250 +#define GIMP_BROWSER_LEFT_MIN_HEIGHT 250 +#define GIMP_BROWSER_RIGHT_MIN_WIDTH 400 +#define GIMP_BROWSER_RIGHT_MIN_HEIGHT 250 enum { @@ -122,6 +126,7 @@ gimp_browser_init (GimpBrowser *browser) browser->search_type = -1; browser->left_vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6); + gtk_widget_set_size_request (GTK_WIDGET (browser->left_vbox), GIMP_BROWSER_LEFT_MIN_WIDTH, GIMP_BROWSER_LEFT_MIN_HEIGHT); gtk_paned_pack1 (GTK_PANED (browser), browser->left_vbox, TRUE, FALSE); gtk_widget_show (browser->left_vbox); @@ -170,6 +175,7 @@ gimp_browser_init (GimpBrowser *browser) /* scrolled window */ scrolled_window = gtk_scrolled_window_new (NULL, NULL); + gtk_widget_set_size_request (GTK_WIDGET (scrolled_window), GIMP_BROWSER_RIGHT_MIN_WIDTH, GIMP_BROWSER_RIGHT_MIN_HEIGHT); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); diff --git a/plug-ins/common/plugin-browser.c b/plug-ins/common/plugin-browser.c index fa90bed7a0..5924d3be9f 100644 --- a/plug-ins/common/plugin-browser.c +++ b/plug-ins/common/plugin-browser.c @@ -36,8 +36,6 @@ #define PLUG_IN_PROC "plug-in-plug-in-details" #define PLUG_IN_BINARY "plugin-browser" #define PLUG_IN_ROLE "gimp-plugin-browser" -#define DBL_LIST_WIDTH 250 -#define DBL_LIST_HEIGHT 250 #define DBL_WIDTH 650 #define DBL_HEIGHT 400 @@ -546,7 +544,6 @@ browser_dialog_new (void) GtkTreeStore *tree_store; GtkWidget *list_view; GtkWidget *tree_view; - GtkWidget *parent; GtkTreeViewColumn *column; GtkCellRenderer *renderer; GtkTreeSelection *selection; @@ -642,8 +639,6 @@ browser_dialog_new (void) gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); - gtk_widget_set_size_request (list_view, DBL_LIST_WIDTH, DBL_LIST_HEIGHT); - selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (list_view)); gtk_tree_selection_set_mode (selection, GTK_SELECTION_BROWSE); @@ -704,7 +699,6 @@ browser_dialog_new (void) GTK_SHADOW_IN); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); - gtk_widget_set_size_request (tree_view, DBL_LIST_WIDTH, DBL_LIST_HEIGHT); selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (tree_view)); gtk_tree_selection_set_mode (selection, GTK_SELECTION_BROWSE); @@ -721,11 +715,6 @@ browser_dialog_new (void) gtk_widget_show (scrolled_window); gtk_widget_show (notebook); - parent = gtk_widget_get_parent (gimp_browser_get_right_vbox (GIMP_BROWSER (browser->browser))); - parent = gtk_widget_get_parent (parent); - - gtk_widget_set_size_request (parent, DBL_WIDTH - DBL_LIST_WIDTH, -1); - /* now build the list */ browser_search (GIMP_BROWSER (browser->browser), "", 0, browser);