diff --git a/SOURCES/0001-entry-Only-offer-Emoji-if-requested.patch b/SOURCES/0001-entry-Only-offer-Emoji-if-requested.patch new file mode 100644 index 0000000..162e2a5 --- /dev/null +++ b/SOURCES/0001-entry-Only-offer-Emoji-if-requested.patch @@ -0,0 +1,41 @@ +From 12a00f024c16a4540d5f457389fada2a4886d884 Mon Sep 17 00:00:00 2001 +From: Matthias Clasen +Date: Tue, 25 May 2021 16:07:58 -0400 +Subject: [PATCH] entry: Only offer Emoji if requested + +Only offer the "Insert Emoji" context menu when input +hints explicitly suggest supporting Emoji. +--- + gtk/gtkentry.c | 2 +- + gtk/gtktextview.c | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/gtk/gtkentry.c b/gtk/gtkentry.c +index a01684101f..1f5a790ccc 100644 +--- a/gtk/gtkentry.c ++++ b/gtk/gtkentry.c +@@ -9591,7 +9591,7 @@ popup_targets_received (GtkClipboard *clipboard, + gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem); + + if (info_entry_priv->show_emoji_icon || +- (gtk_entry_get_input_hints (entry) & GTK_INPUT_HINT_NO_EMOJI) == 0) ++ (gtk_entry_get_input_hints (entry) & GTK_INPUT_HINT_EMOJI) != 0) + { + menuitem = gtk_menu_item_new_with_mnemonic (_("Insert _Emoji")); + gtk_widget_set_sensitive (menuitem, +diff --git a/gtk/gtktextview.c b/gtk/gtktextview.c +index e0b1e20e87..eb53843fa6 100644 +--- a/gtk/gtktextview.c ++++ b/gtk/gtktextview.c +@@ -9521,7 +9521,7 @@ popup_targets_received (GtkClipboard *clipboard, + gtk_widget_show (menuitem); + gtk_menu_shell_append (GTK_MENU_SHELL (priv->popup_menu), menuitem); + +- if ((gtk_text_view_get_input_hints (text_view) & GTK_INPUT_HINT_NO_EMOJI) == 0) ++ if ((gtk_text_view_get_input_hints (text_view) & GTK_INPUT_HINT_EMOJI) != 0) + { + menuitem = gtk_menu_item_new_with_mnemonic (_("Insert _Emoji")); + gtk_widget_set_sensitive (menuitem, can_insert); +-- +2.31.1 + diff --git a/SOURCES/0001-fix-nonoverlay-scrollbars.patch b/SOURCES/0001-fix-nonoverlay-scrollbars.patch new file mode 100644 index 0000000..23c872a --- /dev/null +++ b/SOURCES/0001-fix-nonoverlay-scrollbars.patch @@ -0,0 +1,72 @@ +diff --git a/gtk/gtkscrolledwindow.c b/gtk/gtkscrolledwindow.c +index 19090772201388c31bffba9f56db0e6e707f6093..a931d2bad5094aec76fc91c57792034357ed94d1 100644 +--- a/gtk/gtkscrolledwindow.c ++++ b/gtk/gtkscrolledwindow.c +@@ -1900,10 +1900,19 @@ gtk_scrolled_window_measure (GtkCssGadget *gadget, + */ + if (policy_may_be_visible (priv->hscrollbar_policy)) + { +- minimum_req.width = MAX (minimum_req.width, hscrollbar_requisition.width + sborder.left + sborder.right); +- natural_req.width = MAX (natural_req.width, hscrollbar_requisition.width + sborder.left + sborder.right); ++ int vscrollbar_extra_size; + +- if (!priv->use_indicators && priv->hscrollbar_policy == GTK_POLICY_ALWAYS) ++ if (!priv->use_indicators && policy_may_be_visible (priv->vscrollbar_policy)) ++ vscrollbar_extra_size = vscrollbar_requisition.width; ++ else ++ vscrollbar_extra_size = 0; ++ ++ minimum_req.width = MAX (minimum_req.width, ++ hscrollbar_requisition.width + sborder.left + sborder.right + vscrollbar_extra_size); ++ natural_req.width = MAX (natural_req.width, ++ hscrollbar_requisition.width + sborder.left + sborder.right + vscrollbar_extra_size); ++ ++ if (!priv->use_indicators) + { + minimum_req.height += scrollbar_spacing + hscrollbar_requisition.height; + natural_req.height += scrollbar_spacing + hscrollbar_requisition.height; +@@ -1912,10 +1921,19 @@ gtk_scrolled_window_measure (GtkCssGadget *gadget, + + if (policy_may_be_visible (priv->vscrollbar_policy)) + { +- minimum_req.height = MAX (minimum_req.height, vscrollbar_requisition.height + sborder.top + sborder.bottom); +- natural_req.height = MAX (natural_req.height, vscrollbar_requisition.height + sborder.top + sborder.bottom); ++ int hscrollbar_extra_size; ++ ++ if (!priv->use_indicators && policy_may_be_visible (priv->hscrollbar_policy)) ++ hscrollbar_extra_size = hscrollbar_requisition.height; ++ else ++ hscrollbar_extra_size = 0; ++ ++ minimum_req.height = MAX (minimum_req.height, ++ vscrollbar_requisition.height + sborder.top + sborder.bottom + hscrollbar_extra_size); ++ natural_req.height = MAX (natural_req.height, ++ vscrollbar_requisition.height + sborder.top + sborder.bottom + hscrollbar_extra_size); + +- if (!priv->use_indicators && priv->vscrollbar_policy == GTK_POLICY_ALWAYS) ++ if (!priv->use_indicators) + { + minimum_req.width += scrollbar_spacing + vscrollbar_requisition.width; + natural_req.width += scrollbar_spacing + vscrollbar_requisition.width; +diff --git a/testsuite/gtk/scrolledwindow.c b/testsuite/gtk/scrolledwindow.c +index c6093d8256e52071e00885d266d92b5bb7e664f7..e141fe35baa628592114e6cceebe8863b7b078dd 100644 +--- a/testsuite/gtk/scrolledwindow.c ++++ b/testsuite/gtk/scrolledwindow.c +@@ -58,7 +58,7 @@ test_size (gboolean overlay, + /* If the relevant scrollbar is non-overlay and always shown, it is added + * to the preferred size. When comparing to the expected size, we need to + * to exclude that extra, as we are only interested in the content size */ +- if (!overlay && policy == GTK_POLICY_ALWAYS) ++ if (!overlay) + { + GtkWidget *scrollbar = gtk_scrolled_window_get_vscrollbar (GTK_SCROLLED_WINDOW (scrolledwindow)); + gtk_widget_get_preferred_width (scrollbar, &scrollbar_size, NULL); +@@ -87,7 +87,7 @@ test_size (gboolean overlay, + gtk_widget_get_preferred_height (box, &child_size, NULL); + } + +- if (!overlay && policy == GTK_POLICY_ALWAYS) ++ if (!overlay) + { + GtkWidget *scrollbar = gtk_scrolled_window_get_hscrollbar (GTK_SCROLLED_WINDOW (scrolledwindow)); + gtk_widget_get_preferred_height (scrollbar, &scrollbar_size, NULL); diff --git a/SOURCES/0001-reftests-Enforce-default-settings.patch b/SOURCES/0001-reftests-Enforce-default-settings.patch new file mode 100644 index 0000000..e75895d --- /dev/null +++ b/SOURCES/0001-reftests-Enforce-default-settings.patch @@ -0,0 +1,70 @@ +From b541ad48d1c7060e2d38205d4874675e27578b9b Mon Sep 17 00:00:00 2001 +From: Matthias Clasen +Date: Mon, 19 Jul 2021 13:10:31 -0400 +Subject: [PATCH] reftests: Enforce default settings + +Set all settings to their default values, so we +are less dependent on the environment to be set +up just right. In particular, this fixes animations +being disabled when we happen to run in a vm. +--- + testsuite/reftests/gtk-reftest.c | 36 ++++++++++++++++++++++++++++++++ + 1 file changed, 36 insertions(+) + +diff --git a/testsuite/reftests/gtk-reftest.c b/testsuite/reftests/gtk-reftest.c +index 585e1c393d..1a51a9756b 100644 +--- a/testsuite/reftests/gtk-reftest.c ++++ b/testsuite/reftests/gtk-reftest.c +@@ -368,6 +368,40 @@ add_test_for_file (GFile *file) + g_list_free_full (files, g_object_unref); + } + ++static void ++enforce_default_settings (void) ++{ ++ GtkSettings *settings; ++ GTypeClass *klass; ++ GParamSpec **pspecs; ++ guint n_pspecs; ++ int i; ++ ++ settings = gtk_settings_get_default (); ++ ++ klass = g_type_class_ref (G_OBJECT_TYPE (settings)); ++ ++ pspecs = g_object_class_list_properties (klass, &n_pspecs); ++ for (i = 0; i < n_pspecs; i++) ++ { ++ GParamSpec *pspec = pspecs[i]; ++ const GValue *value; ++ ++ if ((pspec->flags & G_PARAM_WRITABLE) == 0) ++ continue; ++ ++ if (pspec->value_type == G_TYPE_HASH_TABLE) ++ continue; ++ ++ value = g_param_spec_get_default_value (pspec); ++ g_object_set_property (settings, pspec->name, value); ++ } ++ ++ g_free (pspecs); ++ ++ g_type_class_unref (klass); ++} ++ + int + main (int argc, char **argv) + { +@@ -382,6 +416,8 @@ main (int argc, char **argv) + if (!parse_command_line (&argc, &argv)) + return 1; + ++ enforce_default_settings (); ++ + if (arg_base_dir) + basedir = arg_base_dir; + else +-- +2.31.1 + diff --git a/SPECS/gtk3.spec b/SPECS/gtk3.spec index e95a026..d5f9610 100644 --- a/SPECS/gtk3.spec +++ b/SPECS/gtk3.spec @@ -22,7 +22,7 @@ Name: gtk3 Version: 3.22.30 -Release: 6%{?dist} +Release: 8%{?dist} Summary: GTK+ graphical user interface library License: LGPLv2+ @@ -40,6 +40,12 @@ Patch5: 0002-scrolled-window-respect-overlay-scrolling-setting.patch # Backported from upstream / https://gitlab.gnome.org/GNOME/gtk/merge_requests/1114 # rhbz#1843486 Patch6: 0001-gtklistbox-Only-unparent-header-rows-if-they-haven-t.patch +# rhbz#1893196 +Patch7: 0001-entry-Only-offer-Emoji-if-requested.patch +# rhbz#1873488 +Patch8: 0001-fix-nonoverlay-scrollbars.patch +# Upstream patch to make reftests work in a vm +Patch9: 0001-reftests-Enforce-default-settings.patch BuildRequires: pkgconfig(atk) >= %{atk_version} BuildRequires: pkgconfig(atk-bridge-2.0) @@ -185,6 +191,9 @@ the functionality of the installed %{name} package. %patch4 -p1 %patch5 -p1 %patch6 -p1 +%patch7 -p1 +%patch8 -p1 +%patch9 -p1 %build export CFLAGS='-fno-strict-aliasing %optflags' @@ -343,6 +352,13 @@ gtk-query-immodules-3.0-%{__isa_bits} --update-cache &>/dev/null || : %{_datadir}/installed-tests %changelog +* Mon Jul 19 2021 Matthias Clasen - 3.22.30-8 +- Make reftests work in a vm + +* Fri Jul 16 2021 Matthias Clasen - 3.22.30-7 +- Only mention Emoji in context menus when requested (rhbz#1893196) +- Fix warnings from non-overlay scrollbars (rhbz#1873488) + * Wed Jun 03 2020 Kalev Lember - 3.22.30-6 - Fix reuse of list box header widgets (#rhbz1843486)