[SCM] qtbase packaging branch, ubuntu+1, updated. debian/5.6.0+dfsg-2-152-g7d4beba

Timo Jyrinki timo at moszumanska.debian.org
Mon May 2 10:39:40 UTC 2016


Gitweb-URL: http://git.debian.org/?p=pkg-kde/qt/qtbase.git;a=commitdiff;h=75e13d3

The following commit has been merged in the ubuntu+1 branch:
commit 75e13d33b4ea9918c07b00c758b1a34b5ee35194
Author: Timo Jyrinki <timo.jyrinki at canonical.com>
Date:   Mon May 2 07:26:44 2016 +0000

    Fix drag and drop issues with patches from upstream. (LP: #1577313)
    
    * Fix drag and drop issues with patches from upstream. (LP: #1577313)
      - debian/patches/xcb-Fix-drag-and-drop-to-Emacs.patch
      - debian/patches/xcb-Fix-drag-and-drop-to-applications-like-Emacs-and.patch
---
 debian/changelog                                   |  3 +
 debian/patches/series                              |  2 +
 .../patches/xcb-Fix-drag-and-drop-to-Emacs.patch   | 35 ++++++++
 ...g-and-drop-to-applications-like-Emacs-and.patch | 98 ++++++++++++++++++++++
 4 files changed, 138 insertions(+)

diff --git a/debian/changelog b/debian/changelog
index cee2be9..9f25f89 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -6,6 +6,9 @@ qtbase-opensource-src (5.5.1+dfsg-16ubuntu10) UNRELEASED; urgency=medium
     QXcbWindow crashes (LP: #1571158).
     - debian/patches/Fix-crash-because-of-NULL-screen-in-QXcbWindow.patch
     - debian/patches/QtGui-Don-t-set-a-screen-to-a-child-window.patch
+  * Fix drag and drop issues with patches from upstream. (LP: #1577313)
+    - debian/patches/xcb-Fix-drag-and-drop-to-Emacs.patch
+    - debian/patches/xcb-Fix-drag-and-drop-to-applications-like-Emacs-and.patch
 
  -- Timo Jyrinki <timo-jyrinki at ubuntu.com>  Mon, 02 May 2016 07:14:37 +0000
 
diff --git a/debian/patches/series b/debian/patches/series
index 740d893..77e08e0 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -34,6 +34,8 @@ detect-indicator-application.diff
 Blacklist-Mali-T760-Mali-T720-from-supporting-BGRA.patch
 Fix-crash-because-of-NULL-screen-in-QXcbWindow.patch
 QtGui-Don-t-set-a-screen-to-a-child-window.patch
+xcb-Fix-drag-and-drop-to-applications-like-Emacs-and.patch
+xcb-Fix-drag-and-drop-to-Emacs.patch
 
 # Debian specific.
 gnukfreebsd.diff
diff --git a/debian/patches/xcb-Fix-drag-and-drop-to-Emacs.patch b/debian/patches/xcb-Fix-drag-and-drop-to-Emacs.patch
new file mode 100644
index 0000000..159987d
--- /dev/null
+++ b/debian/patches/xcb-Fix-drag-and-drop-to-Emacs.patch
@@ -0,0 +1,35 @@
+From 427a0fc9bc3481626da250efe5229186ab8847d4 Mon Sep 17 00:00:00 2001
+From: Urs Fleisch <ufleisch at users.sourceforge.net>
+Date: Sun, 1 May 2016 14:31:48 +0200
+Subject: [PATCH] xcb: Fix drag and drop to Emacs.
+
+Unfortunately, the improved patch for QTBUG-45812 fixed things for
+Chromium, but did no longer work for Emacs. This fixes commit [269fdb]
+to make it work for both Emacs and Chromium.
+
+Task-number: QTBUG-45812
+Change-Id: I2fca708503f27679681bc6959de1ad94943a063e
+---
+ src/plugins/platforms/xcb/qxcbdrag.cpp | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/plugins/platforms/xcb/qxcbdrag.cpp b/src/plugins/platforms/xcb/qxcbdrag.cpp
+index f1428d0..529f91e 100644
+--- a/src/plugins/platforms/xcb/qxcbdrag.cpp
++++ b/src/plugins/platforms/xcb/qxcbdrag.cpp
+@@ -1134,10 +1134,10 @@ void QXcbDrag::handleSelectionRequest(const xcb_selection_request_event_t *event
+             at = findTransactionByWindow(event->requestor);
+         }
+ 
+-        if (at == -1 && event->time == XCB_CURRENT_TIME) {
++        if (at == -1) {
+             xcb_window_t target = findXdndAwareParent(connection(), event->requestor);
+             if (target) {
+-                if (current_target == target)
++                if (event->time == XCB_CURRENT_TIME && current_target == target)
+                     at = -2;
+                 else
+                     at = findTransactionByWindow(target);
+-- 
+2.7.4
+
diff --git a/debian/patches/xcb-Fix-drag-and-drop-to-applications-like-Emacs-and.patch b/debian/patches/xcb-Fix-drag-and-drop-to-applications-like-Emacs-and.patch
new file mode 100644
index 0000000..9e89ba5
--- /dev/null
+++ b/debian/patches/xcb-Fix-drag-and-drop-to-applications-like-Emacs-and.patch
@@ -0,0 +1,98 @@
+From 269fdbdd2bedda5f5eacb751224d3a3fc3eed5bc Mon Sep 17 00:00:00 2001
+From: Urs Fleisch <ufleisch at users.sourceforge.net>
+Date: Fri, 26 Feb 2016 17:46:09 +0100
+Subject: [PATCH] xcb: Fix drag and drop to applications like Emacs and
+ Chromium.
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Drops without matching time stamp do not work. I have fixed the issue by
+reanimating the findXdndAwareParent() function (adapted to XCB) and
+using it to find a matching transaction if all else fails.
+
+Task-number: QTBUG-45812
+Change-Id: Ibca15bbab02ccf2f25280418e9edf36972ebf9a0
+Reviewed-by: Błażej Szczygieł <spaz16 at wp.pl>
+Reviewed-by: Dmitry Shachnev <mitya57 at gmail.com>
+Reviewed-by: Shawn Rutledge <shawn.rutledge at theqtcompany.com>
+---
+ src/plugins/platforms/xcb/qxcbdrag.cpp | 55 +++++++++++++++++++++++++++-------
+ 1 file changed, 44 insertions(+), 11 deletions(-)
+
+diff --git a/src/plugins/platforms/xcb/qxcbdrag.cpp b/src/plugins/platforms/xcb/qxcbdrag.cpp
+index f5cc873..f1428d0 100644
+--- a/src/plugins/platforms/xcb/qxcbdrag.cpp
++++ b/src/plugins/platforms/xcb/qxcbdrag.cpp
+@@ -1072,6 +1072,40 @@ void QXcbDrag::cancel()
+         send_leave();
+ }
+ 
++// find an ancestor with XdndAware on it
++static xcb_window_t findXdndAwareParent(QXcbConnection *c, xcb_window_t window)
++{
++    xcb_window_t target = 0;
++    forever {
++        // check if window has XdndAware
++        xcb_get_property_cookie_t gpCookie = Q_XCB_CALL(
++            xcb_get_property(c->xcb_connection(), false, window,
++                             c->atom(QXcbAtom::XdndAware), XCB_GET_PROPERTY_TYPE_ANY, 0, 0));
++        xcb_get_property_reply_t *gpReply = xcb_get_property_reply(
++            c->xcb_connection(), gpCookie, 0);
++        bool aware = gpReply && gpReply->type != XCB_NONE;
++        free(gpReply);
++        if (aware) {
++            target = window;
++            break;
++        }
++
++        // try window's parent
++        xcb_query_tree_cookie_t qtCookie = Q_XCB_CALL(
++            xcb_query_tree_unchecked(c->xcb_connection(), window));
++        xcb_query_tree_reply_t *qtReply = xcb_query_tree_reply(
++            c->xcb_connection(), qtCookie, NULL);
++        if (!qtReply)
++            break;
++        xcb_window_t root = qtReply->root;
++        xcb_window_t parent = qtReply->parent;
++        free(qtReply);
++        if (window == root)
++            break;
++        window = parent;
++    }
++    return target;
++}
+ 
+ void QXcbDrag::handleSelectionRequest(const xcb_selection_request_event_t *event)
+ {
+@@ -1099,17 +1133,16 @@ void QXcbDrag::handleSelectionRequest(const xcb_selection_request_event_t *event
+             // xcb_convert_selection() that we sent the XdndDrop event to.
+             at = findTransactionByWindow(event->requestor);
+         }
+-//        if (at == -1 && event->time == XCB_CURRENT_TIME) {
+-//            // previous Qt versions always requested the data on a child of the target window
+-//            // using CurrentTime... but it could be asking for either drop data or the current drag's data
+-//            Window target = findXdndAwareParent(event->requestor);
+-//            if (target) {
+-//                if (current_target && current_target == target)
+-//                    at = -2;
+-//                else
+-//                    at = findXdndDropTransactionByWindow(target);
+-//            }
+-//        }
++
++        if (at == -1 && event->time == XCB_CURRENT_TIME) {
++            xcb_window_t target = findXdndAwareParent(connection(), event->requestor);
++            if (target) {
++                if (current_target == target)
++                    at = -2;
++                else
++                    at = findTransactionByWindow(target);
++            }
++        }
+     }
+ 
+     QDrag *transactionDrag = 0;
+-- 
+2.7.4
+

-- 
qtbase packaging



More information about the pkg-kde-commits mailing list