[SCM] qtdeclarative packaging branch, ubuntu, updated. ubuntu/5.5.1-2ubuntu3-4-gdd688bb

Timo Jyrinki timo at moszumanska.debian.org
Tue Jan 26 08:44:21 UTC 2016


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

The following commit has been merged in the ubuntu branch:
commit dd688bb6e66e8983c2d237c959b00ef2dca9f5e7
Author: Timo Jyrinki <timo.jyrinki at canonical.com>
Date:   Mon Jan 25 11:58:10 2016 +0000

    Add debian/patches/WIP-QQuickItem-fix-another-infinite-loop-in-nextItem.patch
---
 debian/changelog                                   |   3 +-
 ...tem-fix-another-infinite-loop-in-nextItem.patch | 133 +++++++++++++++++++++
 debian/patches/series                              |   1 +
 3 files changed, 136 insertions(+), 1 deletion(-)

diff --git a/debian/changelog b/debian/changelog
index 90562b8..8d026c9 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -2,7 +2,8 @@ qtdeclarative-opensource-src (5.5.1-2ubuntu4) UNRELEASED; urgency=medium
 
   * debian/patches/Add-isTabFence-private-flag.patch:
     - Tab should not leave dialog/popover/menu (LP: #1526208)
-  * debian/patches/QQuickItem-fix-an-infinite-loop-nextItemInFocusChain.patch:
+  * debian/patches/QQuickItem-fix-an-infinite-loop-nextItemInFocusChain.patch
+    debian/patches/WIP-QQuickItem-fix-another-infinite-loop-in-nextItem.patch:
     - Refine the previous patch (LP: #1526208)
 
  -- Timo Jyrinki <timo-jyrinki at ubuntu.com>  Wed, 16 Dec 2015 15:06:40 +0000
diff --git a/debian/patches/WIP-QQuickItem-fix-another-infinite-loop-in-nextItem.patch b/debian/patches/WIP-QQuickItem-fix-another-infinite-loop-in-nextItem.patch
new file mode 100644
index 0000000..632960e
--- /dev/null
+++ b/debian/patches/WIP-QQuickItem-fix-another-infinite-loop-in-nextItem.patch
@@ -0,0 +1,133 @@
+From a7c504dadd31e9161ba55634c5ed77490b59adc1 Mon Sep 17 00:00:00 2001
+From: Liang Qi <liang.qi at theqtcompany.com>
+Date: Thu, 21 Jan 2016 13:19:24 +0100
+Subject: [PATCH] WIP: QQuickItem: fix another infinite loop in
+ nextItemInFocusChain()
+
+Task-number: QTBUG-50516
+Change-Id: I6a1513b22401b0fe45da758a239ad82038b83264
+---
+ src/quick/items/qquickitem.cpp                     | 13 ++++++++---
+ .../auto/quick/qquickitem2/data/qtbug_50516_2.qml  | 17 +++++++++++++++
+ tests/auto/quick/qquickitem2/tst_qquickitem.cpp    | 25 ++++++++++++++++++++++
+ 3 files changed, 52 insertions(+), 3 deletions(-)
+ create mode 100644 tests/auto/quick/qquickitem2/data/qtbug_50516_2.qml
+
+diff --git a/src/quick/items/qquickitem.cpp b/src/quick/items/qquickitem.cpp
+index 059bb4b..19df4ff 100644
+--- a/src/quick/items/qquickitem.cpp
++++ b/src/quick/items/qquickitem.cpp
+@@ -2471,6 +2471,7 @@ QQuickItem *QQuickItemPrivate::prevTabChildItem(const QQuickItem *item, int star
+ QQuickItem* QQuickItemPrivate::nextPrevItemInTabFocusChain(QQuickItem *item, bool forward)
+ {
+     Q_ASSERT(item);
++    qCDebug(DBG_FOCUS) << "QQuickItemPrivate::nextPrevItemInTabFocusChain: item:" << item << ", forward:" << forward;
+ 
+     if (!item->window())
+         return item;
+@@ -2481,19 +2482,25 @@ QQuickItem* QQuickItemPrivate::nextPrevItemInTabFocusChain(QQuickItem *item, boo
+     bool all = QGuiApplication::styleHints()->tabFocusBehavior() == Qt::TabFocusAllControls;
+ 
+     QQuickItem *from = 0;
++    bool isTabFence = item->d_func()->isTabFence;
+     if (forward) {
+-       from = item->parentItem();
++        if (!isTabFence)
++            from = item->parentItem();
+     } else {
+         if (!item->childItems().isEmpty())
+             from = item->childItems().first();
+-        else
++        else if (!isTabFence)
+             from = item->parentItem();
+     }
+     bool skip = false;
+     QQuickItem * startItem = item;
+     QQuickItem * firstFromItem = from;
+     QQuickItem *current = item;
++    qCDebug(DBG_FOCUS) << "QQuickItemPrivate::nextPrevItemInTabFocusChain: startItem:" << startItem;
++    qCDebug(DBG_FOCUS) << "QQuickItemPrivate::nextPrevItemInTabFocusChain: firstFromItem:" << firstFromItem;
+     do {
++        qCDebug(DBG_FOCUS) << "QQuickItemPrivate::nextPrevItemInTabFocusChain: current:" << current;
++        qCDebug(DBG_FOCUS) << "QQuickItemPrivate::nextPrevItemInTabFocusChain: from:" << from;
+         skip = false;
+         QQuickItem *last = current;
+ 
+@@ -2507,7 +2514,7 @@ QQuickItem* QQuickItemPrivate::nextPrevItemInTabFocusChain(QQuickItem *item, boo
+             else
+                 lastChild = prevTabChildItem(current, -1);
+         }
+-        bool isTabFence = current->d_func()->isTabFence;
++        isTabFence = current->d_func()->isTabFence;
+         if (isTabFence && !hasChildren)
+             return current;
+ 
+diff --git a/tests/auto/quick/qquickitem2/data/qtbug_50516_2.qml b/tests/auto/quick/qquickitem2/data/qtbug_50516_2.qml
+new file mode 100644
+index 0000000..e45c1a1
+--- /dev/null
++++ b/tests/auto/quick/qquickitem2/data/qtbug_50516_2.qml
+@@ -0,0 +1,17 @@
++import QtQuick 2.1
++import Test 1.0
++
++TabFence {
++    objectName: "root"
++    focus: true
++    width: 800
++    height: 600
++    FocusScope {
++        objectName: "focusscope"
++        focus: true
++        Item {
++            objectName: "item"
++            focus: true
++        }
++    }
++}
+diff --git a/tests/auto/quick/qquickitem2/tst_qquickitem.cpp b/tests/auto/quick/qquickitem2/tst_qquickitem.cpp
+index 8a75cba..101e72c 100644
+--- a/tests/auto/quick/qquickitem2/tst_qquickitem.cpp
++++ b/tests/auto/quick/qquickitem2/tst_qquickitem.cpp
+@@ -75,6 +75,7 @@ private slots:
+ 
+     void tabFence();
+     void qtbug_50516();
++    void qtbug_50516_2();
+ 
+     void keys();
+     void standardKeys_data();
+@@ -1216,6 +1217,30 @@ void tst_QQuickItem::qtbug_50516()
+     delete window;
+ }
+ 
++void tst_QQuickItem::qtbug_50516_2()
++{
++    QQuickView *window = new QQuickView(0);
++    window->setBaseSize(QSize(800,600));
++
++    window->setSource(testFileUrl("qtbug_50516_2.qml"));
++    window->show();
++    window->requestActivate();
++    QVERIFY(QTest::qWaitForWindowActive(window));
++    QVERIFY(QGuiApplication::focusWindow() == window);
++    QVERIFY(window->rootObject()->hasActiveFocus());
++
++    QQuickItem *contentItem = window->rootObject();
++    qDebug() << "contentItem:" << contentItem;
++    QQuickItem *next = contentItem->nextItemInFocusChain(true);
++    qDebug() << "next:" << next;
++    //QCOMPARE(next, contentItem);
++    next = contentItem->nextItemInFocusChain(false);
++    qDebug() << "next:" << next;
++    //QCOMPARE(next, contentItem);
++
++    delete window;
++}
++
+ void tst_QQuickItem::keys()
+ {
+     QQuickView *window = new QQuickView(0);
+-- 
+2.7.0.rc3
+
diff --git a/debian/patches/series b/debian/patches/series
index 40f6ec0..a2aa15f 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -10,6 +10,7 @@ Flickable-avoid-perturbing-the-timeline-further-whil.patch
 MultiPointTouchArea-Fixed-released-duplication-on-mo.patch
 Add-isTabFence-private-flag.patch
 QQuickItem-fix-an-infinite-loop-nextItemInFocusChain.patch
+WIP-QQuickItem-fix-another-infinite-loop-in-nextItem.patch
 
 # Debian patches
 check_system_double-conversion.patch

-- 
qtdeclarative packaging



More information about the pkg-kde-commits mailing list