[gimp/gimp-2-10] app: add GTK+ patch to fix list-style combo-box popup width
- From: Ell <ell src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp/gimp-2-10] app: add GTK+ patch to fix list-style combo-box popup width
- Date: Thu, 28 Mar 2019 00:30:43 +0000 (UTC)
commit 1749fd995c5ab3e6059775dc27890e5646c10d12
Author: Ell <ell_se yahoo com>
Date: Wed Mar 27 17:52:45 2019 -0400
app: add GTK+ patch to fix list-style combo-box popup width
Add a GTK+ patch that makes sure that list-style combo-box popups
are never narrower than their content. This fixes the popup width
when using the System theme on Windows, for combo-boxes whose popup
cell-layout is wider than the combo-box cell-layout. It is also
required for the next commit.
build/patches/gtk+-2.24-gimp-issue-2828-0001.patch | 73 ++++++++++++++++++++++
themes/System/gtkrc | 1 -
2 files changed, 73 insertions(+), 1 deletion(-)
---
diff --git a/build/patches/gtk+-2.24-gimp-issue-2828-0001.patch
b/build/patches/gtk+-2.24-gimp-issue-2828-0001.patch
new file mode 100644
index 0000000000..04d0ebc000
--- /dev/null
+++ b/build/patches/gtk+-2.24-gimp-issue-2828-0001.patch
@@ -0,0 +1,73 @@
+From f54275d743cf301ed4fcff41255929ece160392c Mon Sep 17 00:00:00 2001
+From: Ell <ell_se yahoo com>
+Date: Mon, 28 Jan 2019 14:46:07 -0500
+Subject: [PATCH 1/2] ComboBox: make sure drop-down list is not narrower than
+ its natural width
+
+When using the "appears-as-list" style, make sure the drop-down
+list is not narrower than either the combo box, *or* the list's own
+natural width, so that horizontal scrolling is never necessary.
+---
+ gtk/gtkcombobox.c | 24 ++++++++----------------
+ 1 file changed, 8 insertions(+), 16 deletions(-)
+
+diff --git a/gtk/gtkcombobox.c b/gtk/gtkcombobox.c
+index e74cd297c2..bd5c0d0a23 100644
+--- a/gtk/gtkcombobox.c
++++ b/gtk/gtkcombobox.c
+@@ -1816,21 +1816,11 @@ gtk_combo_box_list_position (GtkComboBox *combo_box,
+
+ gdk_window_get_root_coords (sample->window, *x, *y, x, y);
+
+- *width = sample->allocation.width;
+-
+ hpolicy = vpolicy = GTK_POLICY_NEVER;
+ gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (priv->scrolled_window),
+ hpolicy, vpolicy);
+ gtk_widget_size_request (priv->scrolled_window, &popup_req);
+
+- if (popup_req.width > *width)
+- {
+- hpolicy = GTK_POLICY_ALWAYS;
+- gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (priv->scrolled_window),
+- hpolicy, vpolicy);
+- gtk_widget_size_request (priv->scrolled_window, &popup_req);
+- }
+-
+ *height = popup_req.height;
+
+ screen = gtk_widget_get_screen (GTK_WIDGET (combo_box));
+@@ -1838,11 +1828,6 @@ gtk_combo_box_list_position (GtkComboBox *combo_box,
+ GTK_WIDGET (combo_box)->window);
+ gdk_screen_get_monitor_geometry (screen, monitor_num, &monitor);
+
+- if (*x < monitor.x)
+- *x = monitor.x;
+- else if (*x + *width > monitor.x + monitor.width)
+- *x = monitor.x + monitor.width - *width;
+-
+ if (*y + sample->allocation.height + *height <= monitor.y + monitor.height)
+ *y += sample->allocation.height;
+ else if (*y - *height >= monitor.y)
+@@ -1861,10 +1846,17 @@ gtk_combo_box_list_position (GtkComboBox *combo_box,
+ if (popup_req.height > *height)
+ {
+ vpolicy = GTK_POLICY_ALWAYS;
+-
+ gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (priv->scrolled_window),
+ hpolicy, vpolicy);
++ gtk_widget_size_request (priv->scrolled_window, &popup_req);
+ }
++
++ *width = MAX (sample->allocation.width, popup_req.width);
++
++ if (*x < monitor.x)
++ *x = monitor.x;
++ else if (*x + *width > monitor.x + monitor.width)
++ *x = monitor.x + monitor.width - *width;
+ }
+
+ static gboolean
+--
+2.19.1
+
diff --git a/themes/System/gtkrc b/themes/System/gtkrc
index 3da549e26d..c304938b5d 100644
--- a/themes/System/gtkrc
+++ b/themes/System/gtkrc
@@ -60,7 +60,6 @@ style "gimp-default-style"
GtkDialog::content-area-border = 0
GtkDialog::button-spacing = 6
GtkDialog::action-area-border = 12
- GimpUnitComboBox::appears-as-list = 0
}
class "GtkWidget" style "gimp-default-style"
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]