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.
This commit is contained in:
Ondřej Míchal 2025-06-18 20:03:06 +03:00 committed by Bruno
parent 8ff7102557
commit 08218c7056
3 changed files with 8 additions and 22 deletions

View file

@ -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);

View file

@ -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);

View file

@ -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);