[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#859936: marked as done (unblock: ktexteditor/5.28.0-2)



Your message dated Wed, 12 Apr 2017 07:30:00 +0000
with message-id <f9fc9235-2abc-a558-2173-e48d4ed48467@thykier.net>
and subject line Re: Bug#859936: unblock: ktexteditor/5.28.0-2
has caused the Debian Bug report #859936,
regarding unblock: ktexteditor/5.28.0-2
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact owner@bugs.debian.org
immediately.)


-- 
859936: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=859936
Debian Bug Tracking System
Contact owner@bugs.debian.org with problems
--- Begin Message ---
Package: release.debian.org
Severity: normal
User: release.debian.org@packages.debian.org
Usertags: unblock

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

Dear release team,

I've backported two upstream fixes in ktexteditor for stretch that I consider 
worthwhile:
 + Fix: Forward dragging text results in wrong selection (a4ad36c)
   KDE#374163
 + fix minimap rendering for HiDPI envs (030c37b)

I've uploaded 5.28.0-2 with these changes and it has built successfully in all 
the release architectures.

I'm attaching the corresponding debdiff.

Happy hacking,

Please unblock package ktexteditor

unblock ktexteditor/5.28.0-2

- -- System Information:
Debian Release: 9.0
  APT prefers unstable-debug
  APT policy: (500, 'unstable-debug'), (500, 'testing-debug'), (500, 'testing'), (500, 'stable'), (50, 'unstable'), (1, 'experimental')
Architecture: amd64 (x86_64)
Foreign Architectures: i386, armhf

Kernel: Linux 4.9.0-2-amd64 (SMP w/4 CPU cores)
Locale: LANG=en_GB.UTF-8, LC_CTYPE=en_GB.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/bash
Init: systemd (via /run/systemd/system)

-----BEGIN PGP SIGNATURE-----

iQJEBAEBCgAuFiEE+JIdOnQEyG4RNSIVxxl2mbKbIyoFAljqJoYQHG1heHlAZGVi
aWFuLm9yZwAKCRDHGXaZspsjKjGOD/9ZV9w3eQ4O2Sj6WQt2fa1AcpTgszPdfpoG
rEKQ9MFN+NzN33IW1z0/qcx20ehWMdeSsW79TCkHHIxTWftd6vWmVt1vlQJ8tSpQ
T8kixf7n/OQSmCPD2omCfrNW7ONWoG7hd4qjMJm3D16W8WYyNIynpIr8hmtQWJN6
HgVH6UFPRgWAnh4slcMbCPobtDbFLwI5k8zxQJZf7vnv/iK+v0kWFUUOPjgU7u7D
T5GGmD1jreQ+3ZMBgd+UEeEf7Cmw4ar4f3C58DwU8z/1Lc4kngYpy9g32xmRTsHk
ix4vKbCjKlsD1ZFmXGra1RJ67lkekRWS42PeWNIp8Y1r+IYyq6bujZdhM5pKRvaZ
zTj3vIA4K2JHS6crMbTjNF+sdrmw2IIVSPE/SUxujes1l4DnJ9cQy3E9Myl0cw7I
NNetgKAL3GLV1H/FoBoz1/5evheK3TfqxQdBL6Rf1fpg99MP++X0KbPupDhYp7QP
56mjAyg8jk0Vcc/691pxhThqNkBuXsAlY5EqjKhRuhsKWO/csEkwdy9PBsn8DiKo
B/owcwejDXrdCk14JjPaM6iBxvUYCvVReoev38MMKx9XFPrTIhFOxF7qWhbvyvE3
PEF68svk02Dj5e4m2Tpk45Fiv9BMg0Ok63cky9ZLUpQaauYljHxBHiTEchvN6tAS
sBzOAwAQ+g==
=sMwv
-----END PGP SIGNATURE-----
diff -Nru ktexteditor-5.28.0/debian/changelog ktexteditor-5.28.0/debian/changelog
--- ktexteditor-5.28.0/debian/changelog	2016-11-18 16:07:00.000000000 +0100
+++ ktexteditor-5.28.0/debian/changelog	2017-04-07 11:57:02.000000000 +0200
@@ -1,3 +1,14 @@
+ktexteditor (5.28.0-2) unstable; urgency=medium
+
+  * Apply "Fix: Forward dragging text results in wrong selection" (a4ad36c)
+    Add the upstream patch as:
+     Fix-Forward-dragging-text-results-in-wrong-selection.patch
+    This fixes KDE#374163
+  * Apply "fix minimap rendering for HiDPI envs" (030c37b)
+    Add upstream patch as: fix-minimap-rendering-for-HiDPI-envs.patch
+
+ -- Maximiliano Curia <maxy@debian.org>  Fri, 07 Apr 2017 11:57:02 +0200
+
 ktexteditor (5.28.0-1) unstable; urgency=medium
 
   [ Maximiliano Curia ]
diff -Nru ktexteditor-5.28.0/debian/patches/Fix-Forward-dragging-text-results-in-wrong-selection.patch ktexteditor-5.28.0/debian/patches/Fix-Forward-dragging-text-results-in-wrong-selection.patch
--- ktexteditor-5.28.0/debian/patches/Fix-Forward-dragging-text-results-in-wrong-selection.patch	1970-01-01 01:00:00.000000000 +0100
+++ ktexteditor-5.28.0/debian/patches/Fix-Forward-dragging-text-results-in-wrong-selection.patch	2017-04-07 11:57:02.000000000 +0200
@@ -0,0 +1,138 @@
+From: Dominik Haumann <dhaumann@kde.org>
+Date: Sat, 7 Jan 2017 12:15:39 +0100
+Subject: Fix: Forward dragging text results in wrong selection
+
+Thanks to Serge Roussak for the patch!
+
+REVIEW: 129758
+BUG: 374163
+---
+ autotests/src/kateview_test.cpp | 67 +++++++++++++++++++++++++++++++++++++++++
+ autotests/src/kateview_test.h   |  2 ++
+ src/view/kateviewinternal.cpp   | 12 +++++---
+ 3 files changed, 77 insertions(+), 4 deletions(-)
+
+diff --git a/autotests/src/kateview_test.cpp b/autotests/src/kateview_test.cpp
+index 950184f4..7372d235 100644
+--- a/autotests/src/kateview_test.cpp
++++ b/autotests/src/kateview_test.cpp
+@@ -317,4 +317,71 @@ void KateViewTest::testFoldFirstLine()
+     QVERIFY(view->textFolding().isLineVisible(1));
+ }
+ 
++// test for bug https://bugs.kde.org/374163
++void KateViewTest::testDragAndDrop()
++{
++    KTextEditor::DocumentPrivate doc(false, false);
++    doc.setText("line0\n"
++                "line1\n"
++                "line2\n"
++                "\n"
++                "line4");
++
++    KTextEditor::View* view = static_cast<KTextEditor::View*>(doc.createView(Q_NULLPTR));
++    view->show();
++    view->resize(400, 300);
++
++    QWidget *internalView = nullptr;
++    foreach (QObject* child, view->children()) {
++        if (child->metaObject()->className() == QByteArrayLiteral("KateViewInternal")) {
++            internalView = qobject_cast<QWidget *>(child);
++            break;
++        }
++    }
++    QVERIFY(internalView);
++
++    // select "line1\n"
++    view->setSelection(Range(1, 0, 2, 0));
++    QCOMPARE(view->selectionRange(), Range(1, 0, 2, 0));
++
++    QTest::qWaitForWindowExposed(view);
++    const QPoint startDragPos = internalView->mapFrom(view, view->cursorToCoordinate(KTextEditor::Cursor(1, 2)));
++    const QPoint endDragPos = internalView->mapFrom(view, view->cursorToCoordinate(KTextEditor::Cursor(3, 0)));
++    const QPoint gStartDragPos = internalView->mapToGlobal(startDragPos);
++    const QPoint gEndDragPos = internalView->mapToGlobal(endDragPos);
++
++    // now drag and drop selected text to Cursor(3, 0)
++    QMouseEvent pressEvent(QEvent::MouseButtonPress, startDragPos, gStartDragPos,
++                                Qt::LeftButton, Qt::LeftButton, Qt::NoModifier);
++    QCoreApplication::sendEvent(internalView, &pressEvent);
++
++    // ugly workaround: Drag & Drop has own blocking event queue. Therefore, we need a single-shot timer to
++    // break out of the blocking event queue, see (*)
++    QTimer::singleShot(50, [&](){
++        QMouseEvent moveEvent(QEvent::MouseMove, endDragPos + QPoint(5, 0), gEndDragPos + QPoint(5, 0),
++                            Qt::LeftButton, Qt::LeftButton, Qt::NoModifier);
++        QMouseEvent releaseEvent(QEvent::MouseButtonRelease, endDragPos, gEndDragPos,
++                            Qt::LeftButton, Qt::NoButton, Qt::NoModifier);
++        QCoreApplication::sendEvent(internalView, &moveEvent);
++        QCoreApplication::sendEvent(internalView, &releaseEvent);
++    });
++
++    // (*) this somehow blocks...
++    QMouseEvent moveEvent1(QEvent::MouseMove, endDragPos + QPoint(10, 0), gEndDragPos + QPoint(10, 0),
++                           Qt::LeftButton, Qt::LeftButton, Qt::NoModifier);
++    QCoreApplication::sendEvent(internalView, &moveEvent1);
++
++    QTest::qWait(100);
++
++    // final tests of dragged text
++    QCOMPARE(doc.text(), QString("line0\n"
++                                 "line2\n"
++                                 "line1\n"
++                                 "\n"
++                                 "line4"));
++
++    QCOMPARE(view->cursorPosition(), KTextEditor::Cursor(3, 0));
++    QCOMPARE(view->selectionRange(), Range(2, 0, 3, 0));
++}
++
+ // kate: indent-mode cstyle; indent-width 4; replace-tabs on;
+diff --git a/autotests/src/kateview_test.h b/autotests/src/kateview_test.h
+index 672e74e6..a48720d9 100644
+--- a/autotests/src/kateview_test.h
++++ b/autotests/src/kateview_test.h
+@@ -43,6 +43,8 @@ private Q_SLOTS:
+     void testKillline();
+ 
+     void testFoldFirstLine();
++
++    void testDragAndDrop();
+ };
+ 
+ #endif // KATE_VIEW_TEST_H
+diff --git a/src/view/kateviewinternal.cpp b/src/view/kateviewinternal.cpp
+index 35545cc1..23a1e21e 100644
+--- a/src/view/kateviewinternal.cpp
++++ b/src/view/kateviewinternal.cpp
+@@ -3241,22 +3241,26 @@ void KateViewInternal::dropEvent(QDropEvent *event)
+         doc()->insertText(targetCursor, text, m_view->blockSelection());
+ 
+         KTextEditor::DocumentCursor startCursor(doc(), targetCursor);
++        KTextEditor::DocumentCursor endCursor1(doc(), targetCursor);
++        const int textLength = text.length();
+ 
+         if (event->dropAction() != Qt::CopyAction) {
+             m_view->removeSelectedText();
++            if (m_cursor.toCursor() < startCursor.toCursor()) {
++                startCursor.move(-textLength);
++                endCursor1.move(-textLength);
++            }
+         }
+ 
+-        KTextEditor::DocumentCursor endCursor1(doc(), startCursor);
+-
+         if (!m_view->blockSelection()) {
+-            endCursor1.move(text.length());
++            endCursor1.move(textLength);
+         } else {
+             endCursor1.setColumn(startCursor.column() + selectionWidth);
+             endCursor1.setLine(startCursor.line() + selectionHeight);
+         }
+ 
+         KTextEditor::Cursor endCursor(endCursor1);
+-        qCDebug(LOG_KTE) << startCursor << "---(" << text.length() << ")---" << endCursor;
++        qCDebug(LOG_KTE) << startCursor << "---(" << textLength << ")---" << endCursor;
+         setSelection(KTextEditor::Range(startCursor, endCursor));
+         editSetCursor(endCursor);
+ 
diff -Nru ktexteditor-5.28.0/debian/patches/fix-minimap-rendering-for-HiDPI-envs.patch ktexteditor-5.28.0/debian/patches/fix-minimap-rendering-for-HiDPI-envs.patch
--- ktexteditor-5.28.0/debian/patches/fix-minimap-rendering-for-HiDPI-envs.patch	1970-01-01 01:00:00.000000000 +0100
+++ ktexteditor-5.28.0/debian/patches/fix-minimap-rendering-for-HiDPI-envs.patch	2017-04-07 11:57:02.000000000 +0200
@@ -0,0 +1,64 @@
+From: Christoph Cullmann <cullmann@kde.org>
+Date: Mon, 9 Jan 2017 06:17:42 +0100
+Subject: fix minimap rendering for HiDPI envs
+
+Differential Revision: https://phabricator.kde.org/D4018
+---
+ src/view/kateviewhelpers.cpp | 15 ++++++++++-----
+ 1 file changed, 10 insertions(+), 5 deletions(-)
+
+diff --git a/src/view/kateviewhelpers.cpp b/src/view/kateviewhelpers.cpp
+index e74a237e..3b45d8d4 100644
+--- a/src/view/kateviewhelpers.cpp
++++ b/src/view/kateviewhelpers.cpp
+@@ -476,7 +476,8 @@ void KateScrollBar::updatePixmap()
+     modifiedLineColor.setHsv(modifiedLineColor.hue(), 255, 255 - backgroundColor.value() / 3);
+     savedLineColor.setHsv(savedLineColor.hue(), 100, 255 - backgroundColor.value() / 3);
+ 
+-    m_pixmap = QPixmap(pixmapLineWidth, pixmapLineCount);
++    // increase dimensions by ratio
++    m_pixmap = QPixmap(pixmapLineWidth * m_view->devicePixelRatio(), pixmapLineCount * m_view->devicePixelRatio());
+     m_pixmap.fill(QColor("transparent"));
+ 
+     // The text currently selected in the document, to be drawn later.
+@@ -583,6 +584,10 @@ void KateScrollBar::updatePixmap()
+             }
+         }
+     }
++
++    // set right ratio
++    m_pixmap.setDevicePixelRatio(m_view->devicePixelRatio());
++
+     //qCDebug(LOG_KTE) << time.elapsed();
+     // Redraw the scrollbar widget with the updated pixmap.
+     update();
+@@ -627,7 +632,7 @@ void KateScrollBar::miniMapPaintEvent(QPaintEvent *e)
+     //style()->drawControl(QStyle::CE_ScrollBarSubLine, &opt, &painter, this);
+ 
+     // calculate the document size and position
+-    const int docHeight = qMin(grooveRect.height(), m_pixmap.height() * 2) - 2 * docXMargin;
++    const int docHeight = qMin(grooveRect.height(), int(m_pixmap.height() / m_pixmap.devicePixelRatio() * 2)) - 2 * docXMargin;
+     const int yoffset = 1; // top-aligned in stead of center-aligned (grooveRect.height() - docHeight) / 2;
+     const QRect docRect(QPoint(grooveRect.left() + docXMargin, yoffset + grooveRect.top()), QSize(grooveRect.width() - docXMargin, docHeight));
+     m_mapGroveRect = docRect;
+@@ -683,17 +688,17 @@ void KateScrollBar::miniMapPaintEvent(QPaintEvent *e)
+     }
+ 
+     // Smooth transform only when squeezing
+-    if (grooveRect.height() < m_pixmap.height()) {
++    if (grooveRect.height() < m_pixmap.height() / m_pixmap.devicePixelRatio()) {
+         painter.setRenderHint(QPainter::SmoothPixmapTransform);
+     }
+ 
+     // draw the modified lines margin
+-    QRect pixmapMarginRect(QPoint(0, 0), QSize(s_pixelMargin, m_pixmap.height()));
++    QRect pixmapMarginRect(QPoint(0, 0), QSize(s_pixelMargin, m_pixmap.height() / m_pixmap.devicePixelRatio()));
+     QRect docPixmapMarginRect(QPoint(0, docRect.top()), QSize(s_pixelMargin, docRect.height()));
+     painter.drawPixmap(docPixmapMarginRect, m_pixmap, pixmapMarginRect);
+ 
+     // calculate the stretch and draw the stretched lines (scrollbar marks)
+-    QRect pixmapRect(QPoint(s_pixelMargin, 0), QSize(m_pixmap.width() - s_pixelMargin, m_pixmap.height()));
++    QRect pixmapRect(QPoint(s_pixelMargin, 0), QSize(m_pixmap.width() / m_pixmap.devicePixelRatio() - s_pixelMargin, m_pixmap.height() / m_pixmap.devicePixelRatio()));
+     QRect docPixmapRect(QPoint(s_pixelMargin, docRect.top()), QSize(docRect.width() - s_pixelMargin, docRect.height()));
+     painter.drawPixmap(docPixmapRect, m_pixmap, pixmapRect);
+ 
diff -Nru ktexteditor-5.28.0/debian/patches/katesyntaxtest_check_basename ktexteditor-5.28.0/debian/patches/katesyntaxtest_check_basename
--- ktexteditor-5.28.0/debian/patches/katesyntaxtest_check_basename	2016-11-18 16:07:00.000000000 +0100
+++ ktexteditor-5.28.0/debian/patches/katesyntaxtest_check_basename	2017-04-07 11:57:02.000000000 +0200
@@ -7,7 +7,7 @@
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/autotests/src/katesyntaxtest.cpp b/autotests/src/katesyntaxtest.cpp
-index 04d74bf..4f0b4f8 100644
+index 04d74bf2..4f0b4f86 100644
 --- a/autotests/src/katesyntaxtest.cpp
 +++ b/autotests/src/katesyntaxtest.cpp
 @@ -55,7 +55,7 @@ void KateSyntaxTest::testSyntaxHighlighting_data()
diff -Nru ktexteditor-5.28.0/debian/patches/series ktexteditor-5.28.0/debian/patches/series
--- ktexteditor-5.28.0/debian/patches/series	2016-11-18 16:07:00.000000000 +0100
+++ ktexteditor-5.28.0/debian/patches/series	2017-04-07 11:57:02.000000000 +0200
@@ -1 +1,3 @@
 katesyntaxtest_check_basename
+Fix-Forward-dragging-text-results-in-wrong-selection.patch
+fix-minimap-rendering-for-HiDPI-envs.patch

--- End Message ---
--- Begin Message ---
Maximiliano Curia:
> Package: release.debian.org
> Severity: normal
> User: release.debian.org@packages.debian.org
> Usertags: unblock
> 
> Dear release team,
> 
> I've backported two upstream fixes in ktexteditor for stretch that I consider 
> worthwhile:
>  + Fix: Forward dragging text results in wrong selection (a4ad36c)
>    KDE#374163
>  + fix minimap rendering for HiDPI envs (030c37b)
> 
> I've uploaded 5.28.0-2 with these changes and it has built successfully in all 
> the release architectures.
> 
> I'm attaching the corresponding debdiff.
> 
> Happy hacking,
> 
> Please unblock package ktexteditor
> 
> unblock ktexteditor/5.28.0-2
> 
> [...]

Unblocked, thanks.

~Niels

--- End Message ---

Reply to: