Resolves: #2318389 (WebKitGTK 2.46.1: Middle mouse button inserts primary clipboard twice)

This commit is contained in:
Milan Crha 2024-10-14 17:14:30 +02:00
commit b1d66824d0
2 changed files with 43 additions and 2 deletions

View file

@ -44,7 +44,7 @@
Name: evolution
Version: 3.50.4
Release: 2%{?dist}
Release: 3%{?dist}
Summary: Mail and calendar client for GNOME
License: GPL-2.0-or-later AND GFDL-1.3-or-later
URL: https://wiki.gnome.org/Apps/Evolution
@ -53,6 +53,7 @@ Source1: flatpak-evolution-fix-service-names.sh
Source2: flatpak-evolution-wrapper.sh.in
# 0-99: General patches
Patch001: webkitgtk-2.46.1.patch
# 100-199: Flatpak-specific patches
# https://gitlab.gnome.org/GNOME/evolution-data-server/-/merge_requests/144
@ -592,7 +593,10 @@ grep -v "%{_datadir}/locale" evolution.lang > help.lang
%endif
%changelog
* Wed Feb 28 2024 Owen Taylor <otaylor@redhat.com> - 3.50.3-2
* Mon Oct 14 2024 Milan Crha <mcrha@redhat.com> - 3.50.4-3
- Resolves: #2318389 (WebKitGTK 2.46.1: Middle mouse button inserts primary clipboard twice)
* Wed Feb 28 2024 Owen Taylor <otaylor@redhat.com> - 3.50.4-2
- Add patch to fix backup tool for F39-style Flatpaks where the
EDS D-Bus service name prefix is set at container creation time.

37
webkitgtk-2.46.1.patch Normal file
View file

@ -0,0 +1,37 @@
diff --git a/src/modules/webkit-editor/e-webkit-editor.c b/src/modules/webkit-editor/e-webkit-editor.c
index bc423841a8..d3217cd48b 100644
--- a/src/modules/webkit-editor/e-webkit-editor.c
+++ b/src/modules/webkit-editor/e-webkit-editor.c
@@ -5724,6 +5724,24 @@ webkit_editor_button_press_event (GtkWidget *widget,
GTK_WIDGET_CLASS (e_webkit_editor_parent_class)->button_press_event (widget, event);
}
+static gboolean
+webkit_editor_button_release_event (GtkWidget *widget,
+ GdkEventButton *event)
+{
+ if (event->button == 2) {
+ /* WebKitGTK 2.46.1 changed the middle-click paste behavior and moved
+ the paste handler from the button-press event into the button-release
+ event, which causes double paste of the clipboard content. As the paste
+ is handled in the webkit_editor_button_press_event() above, make sure
+ the release handler is not called here regardless whether the user
+ uses the changed WebkitGTK or not. */
+ return TRUE;
+ }
+
+ /* Chain up to parent's method. */
+ return GTK_WIDGET_CLASS (e_webkit_editor_parent_class)->button_release_event (widget, event);
+}
+
static gboolean
webkit_editor_key_press_event (GtkWidget *widget,
GdkEventKey *event)
@@ -5814,6 +5832,7 @@ e_webkit_editor_class_init (EWebKitEditorClass *class)
widget_class = GTK_WIDGET_CLASS (class);
widget_class->button_press_event = webkit_editor_button_press_event;
+ widget_class->button_release_event = webkit_editor_button_release_event;
widget_class->key_press_event = webkit_editor_key_press_event;
g_object_class_override_property (