Fixed clipboard copy->paste between Firefox windows (mozbz#1434572).
This commit is contained in:
parent
e757b29a9f
commit
86ba393fb9
@ -98,7 +98,7 @@ ExclusiveArch: x86_64 i686
|
|||||||
Summary: Mozilla Firefox Web browser
|
Summary: Mozilla Firefox Web browser
|
||||||
Name: firefox
|
Name: firefox
|
||||||
Version: 59.0
|
Version: 59.0
|
||||||
Release: 0.4%{?pre_tag}%{?dist}
|
Release: 0.5%{?pre_tag}%{?dist}
|
||||||
URL: https://www.mozilla.org/firefox/
|
URL: https://www.mozilla.org/firefox/
|
||||||
License: MPLv1.1 or GPLv2+ or LGPLv2+
|
License: MPLv1.1 or GPLv2+ or LGPLv2+
|
||||||
#Source0: https://archive.mozilla.org/pub/firefox/releases/%{version}%{?pre_version}/source/firefox-%{version}%{?pre_version}.source.tar.xz
|
#Source0: https://archive.mozilla.org/pub/firefox/releases/%{version}%{?pre_version}/source/firefox-%{version}%{?pre_version}.source.tar.xz
|
||||||
@ -162,6 +162,7 @@ Patch451: mozilla-1432414.patch
|
|||||||
Patch452: mozilla-1434202.patch
|
Patch452: mozilla-1434202.patch
|
||||||
Patch453: mozilla-1433081.patch
|
Patch453: mozilla-1433081.patch
|
||||||
Patch454: remote-profile.patch
|
Patch454: remote-profile.patch
|
||||||
|
Patch455: mozilla-1434572.patch
|
||||||
|
|
||||||
# Debian patches
|
# Debian patches
|
||||||
Patch500: mozilla-440908.patch
|
Patch500: mozilla-440908.patch
|
||||||
@ -331,6 +332,7 @@ This package contains results of tests executed during build.
|
|||||||
%patch452 -p1 -b .1434202
|
%patch452 -p1 -b .1434202
|
||||||
%patch453 -p1 -b .1433081
|
%patch453 -p1 -b .1433081
|
||||||
%patch454 -p1 -b .remote-profile
|
%patch454 -p1 -b .remote-profile
|
||||||
|
%patch455 -p1 -b .1434572
|
||||||
|
|
||||||
# Patch for big endian platforms only
|
# Patch for big endian platforms only
|
||||||
%if 0%{?big_endian}
|
%if 0%{?big_endian}
|
||||||
@ -864,6 +866,10 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
|
|||||||
#---------------------------------------------------------------------
|
#---------------------------------------------------------------------
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Thu Feb 1 2018 Martin Stransky <stransky@redhat.com> - 59.0-0.5
|
||||||
|
- Fixed clipboard copy->paste between Firefox windows
|
||||||
|
(mozbz#1434572).
|
||||||
|
|
||||||
* Wed Jan 31 2018 Martin Stransky <stransky@redhat.com> - 59.0-0.4
|
* Wed Jan 31 2018 Martin Stransky <stransky@redhat.com> - 59.0-0.4
|
||||||
- Fixed remote launch when no profile name is given.
|
- Fixed remote launch when no profile name is given.
|
||||||
|
|
||||||
|
93
mozilla-1434572.patch
Normal file
93
mozilla-1434572.patch
Normal file
@ -0,0 +1,93 @@
|
|||||||
|
diff --git a/widget/gtk/mozgtk/mozgtk.c b/widget/gtk/mozgtk/mozgtk.c
|
||||||
|
--- a/widget/gtk/mozgtk/mozgtk.c
|
||||||
|
+++ b/widget/gtk/mozgtk/mozgtk.c
|
||||||
|
@@ -66,16 +66,17 @@ STUB(gdk_screen_get_number)
|
||||||
|
STUB(gdk_screen_get_resolution)
|
||||||
|
STUB(gdk_screen_get_rgba_visual)
|
||||||
|
STUB(gdk_screen_get_root_window)
|
||||||
|
STUB(gdk_screen_get_system_visual)
|
||||||
|
STUB(gdk_screen_get_width)
|
||||||
|
STUB(gdk_screen_height)
|
||||||
|
STUB(gdk_screen_is_composited)
|
||||||
|
STUB(gdk_screen_width)
|
||||||
|
+STUB(gdk_selection_owner_get)
|
||||||
|
STUB(gdk_set_program_class)
|
||||||
|
STUB(gdk_unicode_to_keyval)
|
||||||
|
STUB(gdk_visual_get_depth)
|
||||||
|
STUB(gdk_visual_get_system)
|
||||||
|
STUB(gdk_window_add_filter)
|
||||||
|
STUB(gdk_window_begin_move_drag)
|
||||||
|
STUB(gdk_window_begin_resize_drag)
|
||||||
|
STUB(gdk_window_destroy)
|
||||||
|
diff --git a/widget/gtk/nsClipboardWayland.cpp b/widget/gtk/nsClipboardWayland.cpp
|
||||||
|
--- a/widget/gtk/nsClipboardWayland.cpp
|
||||||
|
+++ b/widget/gtk/nsClipboardWayland.cpp
|
||||||
|
@@ -337,21 +346,68 @@ nsRetrievalContextWayland::GetTargets(in
|
||||||
|
for (int32_t j = 0; j < length; j++) {
|
||||||
|
targetList[j] = mTargetMIMETypes[j];
|
||||||
|
}
|
||||||
|
|
||||||
|
*aTargetNum = length;
|
||||||
|
return targetList;
|
||||||
|
}
|
||||||
|
|
||||||
|
+struct fastTrackClipboardData
|
||||||
|
+{
|
||||||
|
+ char* data;
|
||||||
|
+ int dataLength;
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+static void
|
||||||
|
+wayland_clipboard_contents_received(GtkClipboard *clipboard,
|
||||||
|
+ GtkSelectionData *selection_data,
|
||||||
|
+ gpointer data)
|
||||||
|
+{
|
||||||
|
+ fastTrackClipboardData* clipboardData =
|
||||||
|
+ static_cast<fastTrackClipboardData*>(data);
|
||||||
|
+
|
||||||
|
+ int contentLength = gtk_selection_data_get_length(selection_data);
|
||||||
|
+ if (contentLength > 0) {
|
||||||
|
+ clipboardData->data = reinterpret_cast<char*>(
|
||||||
|
+ g_malloc(sizeof(char)*contentLength));
|
||||||
|
+ memcpy(clipboardData->data,
|
||||||
|
+ gtk_selection_data_get_data(selection_data),
|
||||||
|
+ sizeof(char)*contentLength);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ clipboardData->dataLength = contentLength;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
const char*
|
||||||
|
nsRetrievalContextWayland::GetClipboardData(const char* aMimeType,
|
||||||
|
int32_t aWhichClipboard,
|
||||||
|
uint32_t* aContentLength)
|
||||||
|
{
|
||||||
|
+ /* If actual clipboard data is owned by us we don't need to go
|
||||||
|
+ * through Wayland but we ask Gtk+ to directly call data
|
||||||
|
+ * getter callback nsClipboard::SelectionGetEvent().
|
||||||
|
+ */
|
||||||
|
+ GdkAtom selection = GetSelectionAtom(aWhichClipboard);
|
||||||
|
+ if (gdk_selection_owner_get(selection)) {
|
||||||
|
+ fastTrackClipboardData clipboardData = { nullptr, 0 };
|
||||||
|
+ gtk_clipboard_request_contents(gtk_clipboard_get(selection),
|
||||||
|
+ gdk_atom_intern(aMimeType, FALSE),
|
||||||
|
+ wayland_clipboard_contents_received,
|
||||||
|
+ &clipboardData);
|
||||||
|
+ *aContentLength = clipboardData.dataLength;
|
||||||
|
+ return static_cast<const char*>(clipboardData.data);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ /* TODO: We need to implement GDK_SELECTION_PRIMARY (X11 text selection)
|
||||||
|
+ * for Wayland backend.
|
||||||
|
+ */
|
||||||
|
+ if (selection == GDK_SELECTION_PRIMARY)
|
||||||
|
+ return nullptr;
|
||||||
|
+
|
||||||
|
NS_ASSERTION(mDataOffer, "Requested data without valid data offer!");
|
||||||
|
|
||||||
|
if (!mDataOffer) {
|
||||||
|
// TODO
|
||||||
|
// Something went wrong. We're requested to provide clipboard data
|
||||||
|
// but we haven't got any from wayland. Looks like rhbz#1455915.
|
||||||
|
return nullptr;
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user