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

Bug#944856: marked as done (buster-pu: package qtbase-opensource-src/5.11.3+dfsg1-1+deb10u2)



Your message dated Sat, 08 Feb 2020 14:21:36 +0000
with message-id <cf1cb2f35981916a86b98b83609df15c95aa378b.camel@adam-barratt.org.uk>
and subject line Closing requests included in 10.3 point release
has caused the Debian Bug report #944856,
regarding buster-pu: package qtbase-opensource-src/5.11.3+dfsg1-1+deb10u2
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.)


-- 
944856: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=944856
Debian Bug Tracking System
Contact owner@bugs.debian.org with problems
--- Begin Message ---
Package: release.debian.org
Severity: normal
Tags: buster
User: release.debian.org@packages.debian.org
Usertags: pu

Dear Release team,

I would like to update qtbase-opensource-src in Buster, to fix the following
bugs:

#911702 — okular does not print to network printer
#911844 — okular prints to the wrong printer
#935909 — segfault when removing rich content (like tables) from QLabel
#935627 — graphics tablet hover events (tooltips/mouse-over) broken

The fix for the first two bugs has already been ACKed during the freeze in
#930669, but the fix did not reach bullseye because it was built against gcc-8
from sid.

All these bugs are already fixed in sid/bullseye.

The debdiff against the current version in buster (which was a security
upload) is attached.

--
Dmitry Shachnev
diff --git a/debian/changelog b/debian/changelog
index 2dc6b71..ce68d2f 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,17 @@
+qtbase-opensource-src (5.11.3+dfsg1-1+deb10u2) UNRELEASED; urgency=medium
+
+  [ Dmitry Shachnev ]
+  * Backport upstream patch to add support for non-PPD printers and avoid
+    silent fallback to a printer supporting PPD (closes: #911702, #911844).
+  * Backport upstream patch to fix crash in QStyleSheetStyle::repolish()
+    when using QLabels with rich text (closes: #935909).
+
+  [ Melvin Vermeeren ]
+  * Backport upstream patch to fix graphics tablet hover events (closes:
+    #935627).
+
+ -- Dmitry Shachnev <mitya57@debian.org>  Sat, 16 Nov 2019 15:48:41 +0300
+
 qtbase-opensource-src (5.11.3+dfsg1-1+deb10u1) buster-security; urgency=high
 
   * Fix crash when text contains too many directional chars (CVE-2019-18281).
diff --git a/debian/patches/ensure-qtabletevent-is-not-pre-accepted.patch b/debian/patches/ensure-qtabletevent-is-not-pre-accepted.patch
new file mode 100644
index 0000000..a0ff4f3
--- /dev/null
+++ b/debian/patches/ensure-qtabletevent-is-not-pre-accepted.patch
@@ -0,0 +1,38 @@
+Description: ensure that QTabletEvent is not pre-accepted before sending
+ In QWidget-world it's normal for input events to have the accepted
+ flag false by default, so that it's obvious after visiting a widget
+ subclass that does not override a particular handler function that it
+ did not handle that event type at all.  For tablet events in
+ particular, the contract (to which we've been paying more attention to
+ ensure that QTBUG-47007 remains properly fixed) is that if a
+ QTabletEvent is not accepted, a mouse event will follow.
+ Tablet-unaware applications need to get the same mouse events from a
+ Wacom stylus as they would receive from an actual mouse.
+ .
+ In this case the issue was missing hover events (mouse movements
+ in which no mouse button is pressed).  Without those, the enterEvent
+ and exitEvent virtuals are also not invoked properly.
+Origin: upstream, https://code.qt.io/cgit/qt/qtbase.git/commit/?id=b4b706d454b785ae
+Bug: https://bugs.debian.org/935627
+Last-Update: 2019-08-24
+
+--- a/src/widgets/kernel/qapplication.cpp
++++ b/src/widgets/kernel/qapplication.cpp
+@@ -3374,6 +3374,7 @@ bool QApplication::notify(QObject *recei
+                                 tablet->tangentialPressure(), tablet->rotation(), tablet->z(),
+                                 tablet->modifiers(), tablet->uniqueId(), tablet->button(), tablet->buttons());
+                 te.spont = e->spontaneous();
++                te.setAccepted(false);
+                 res = d->notify_helper(w, w == receiver ? tablet : &te);
+                 eventAccepted = ((w == receiver) ? tablet : &te)->isAccepted();
+                 e->spont = false;
+--- a/src/widgets/kernel/qwidgetwindow.cpp
++++ b/src/widgets/kernel/qwidgetwindow.cpp
+@@ -1021,6 +1021,7 @@ void QWidgetWindow::handleTabletEvent(QT
+                         event->pressure(), event->xTilt(), event->yTilt(), event->tangentialPressure(),
+                         event->rotation(), event->z(), event->modifiers(), event->uniqueId(), event->button(), event->buttons());
+         ev.setTimestamp(event->timestamp());
++        ev.setAccepted(false);
+         QGuiApplication::forwardEvent(widget, &ev, event);
+         event->setAccepted(ev.isAccepted());
+     }
diff --git a/debian/patches/raw_printers.diff b/debian/patches/raw_printers.diff
new file mode 100644
index 0000000..9ac8395
--- /dev/null
+++ b/debian/patches/raw_printers.diff
@@ -0,0 +1,92 @@
+Description: cups: support raw printers
+ They don't have a ppd but we don't *really* need a ppd to just print.
+Origin: upstream, https://code.qt.io/cgit/qt/qtbase.git/commit/?id=84cc8d0badb4abc3
+Last-Update: 2019-06-16
+
+--- a/src/plugins/printsupport/cups/qcupsprintengine.cpp
++++ b/src/plugins/printsupport/cups/qcupsprintengine.cpp
+@@ -104,7 +104,11 @@ void QCupsPrintEngine::setProperty(Print
+         break;
+     case PPK_QPageLayout: {
+         QPageLayout pageLayout = value.value<QPageLayout>();
+-        if (pageLayout.isValid() && (d->m_printDevice.isValidPageLayout(pageLayout, d->resolution) || d->m_printDevice.supportsCustomPageSizes())) {
++        if (pageLayout.isValid() && (d->m_printDevice.isValidPageLayout(pageLayout, d->resolution)
++                                     || d->m_printDevice.supportsCustomPageSizes()
++                                     || d->m_printDevice.supportedPageSizes().isEmpty())) {
++            // supportedPageSizes().isEmpty() because QPageSetupWidget::initPageSizes says
++            // "If no available printer page sizes, populate with all page sizes"
+             d->m_pageLayout = pageLayout;
+             d->setPageSize(pageLayout.pageSize());
+         }
+--- a/src/plugins/printsupport/cups/qppdprintdevice.cpp
++++ b/src/plugins/printsupport/cups/qppdprintdevice.cpp
+@@ -71,7 +71,7 @@ QPpdPrintDevice::QPpdPrintDevice(const Q
+             m_cupsInstance = parts.at(1).toUtf8();
+         loadPrinter();
+ 
+-        if (m_cupsDest && m_ppd) {
++        if (m_cupsDest) {
+             m_name = printerOption("printer-info");
+             m_location = printerOption("printer-location");
+             m_makeAndModel = printerOption("printer-make-and-model");
+@@ -87,10 +87,6 @@ QPpdPrintDevice::QPpdPrintDevice(const Q
+             // Cups ppd_file_t variable_sizes custom_min custom_max
+             // PPD MaxMediaWidth MaxMediaHeight
+             m_supportsCustomPageSizes = type & CUPS_PRINTER_VARIABLE;
+-            m_minimumPhysicalPageSize = QSize(m_ppd->custom_min[0], m_ppd->custom_min[1]);
+-            m_maximumPhysicalPageSize = QSize(m_ppd->custom_max[0], m_ppd->custom_max[1]);
+-            m_customMargins = QMarginsF(m_ppd->custom_margins[0], m_ppd->custom_margins[3],
+-                                        m_ppd->custom_margins[2], m_ppd->custom_margins[1]);
+         }
+     }
+ }
+@@ -107,7 +103,7 @@ QPpdPrintDevice::~QPpdPrintDevice()
+ 
+ bool QPpdPrintDevice::isValid() const
+ {
+-    return m_cupsDest && m_ppd;
++    return m_cupsDest;
+ }
+ 
+ bool QPpdPrintDevice::isDefault() const
+@@ -152,8 +148,8 @@ void QPpdPrintDevice::loadPageSizes() co
+                 }
+             }
+         }
+-        m_havePageSizes = true;
+     }
++    m_havePageSizes = true;
+ }
+ 
+ QPageSize QPpdPrintDevice::defaultPageSize() const
+@@ -505,10 +501,11 @@ void QPpdPrintDevice::loadPrinter()
+             ppdMarkDefaults(m_ppd);
+             cupsMarkOptions(m_ppd, m_cupsDest->num_options, m_cupsDest->options);
+             ppdLocalize(m_ppd);
+-        } else {
+-            cupsFreeDests(1, m_cupsDest);
+-            m_cupsDest = 0;
+-            m_ppd = 0;
++
++            m_minimumPhysicalPageSize = QSize(m_ppd->custom_min[0], m_ppd->custom_min[1]);
++            m_maximumPhysicalPageSize = QSize(m_ppd->custom_max[0], m_ppd->custom_max[1]);
++            m_customMargins = QMarginsF(m_ppd->custom_margins[0], m_ppd->custom_margins[3],
++                                        m_ppd->custom_margins[2], m_ppd->custom_margins[1]);
+         }
+     }
+ }
+--- a/src/printsupport/dialogs/qpagesetupdialog_unix.cpp
++++ b/src/printsupport/dialogs/qpagesetupdialog_unix.cpp
+@@ -415,6 +415,12 @@ void QPageSetupWidget::setPrinter(QPrint
+     initPageSizes();
+     updateWidget();
+     updateSavedValues();
++
++    if (m_ui.pageSizeCombo->currentIndex() == -1) {
++        // This can happen in raw printers that since they don't have a default
++        // page size none will get selected so just default to the first size (A4)
++        m_ui.pageSizeCombo->setCurrentIndex(0);
++    }
+ }
+ 
+ // Update the widget with the current settings
diff --git a/debian/patches/repolish_run_on_direct_children.diff b/debian/patches/repolish_run_on_direct_children.diff
new file mode 100644
index 0000000..0c99bf7
--- /dev/null
+++ b/debian/patches/repolish_run_on_direct_children.diff
@@ -0,0 +1,23 @@
+Description: QStyleSheetStyle::repolish: only run on direct children
+ When re-parenting, some widgets change their children. For example
+ QLabel, when set to rich text, will not update, until receiving a polish
+ call, at which time getting a list of all children recursively and then
+ trying to call functions on them will crash, since the children change
+ in the middle of this operation.
+Origin: upstream, https://code.qt.io/cgit/qt/qtbase.git/commit/?id=21dcb96ddca357a6
+Last-Update: 2019-09-06
+
+--- a/src/widgets/styles/qstylesheetstyle.cpp
++++ b/src/widgets/styles/qstylesheetstyle.cpp
+@@ -2878,7 +2878,10 @@ void QStyleSheetStyle::polish(QPalette &
+ 
+ void QStyleSheetStyle::repolish(QWidget *w)
+ {
+-    QList<const QObject *> children = w->findChildren<const QObject *>(QString());
++    QList<const QObject *> children;
++    children.reserve(w->children().size() + 1);
++    for (auto child: qAsConst(w->children()))
++        children.append(child);
+     children.append(w);
+     styleSheetCaches->styleSheetCache.remove(w);
+     updateObjects(children);
diff --git a/debian/patches/series b/debian/patches/series
index 061cef3..c2bba31 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -5,6 +5,9 @@ remove_need_for_glXGetProcAddressARB.patch
 mysql_free_results_when_qsqlquery_finished_is_called.patch
 qprintdialog_duplex.diff
 cve-2019-18281.diff
+raw_printers.diff
+ensure-qtabletevent-is-not-pre-accepted.patch
+repolish_run_on_direct_children.diff
 
 # Debian specific.
 gnukfreebsd.diff

Attachment: signature.asc
Description: PGP signature


--- End Message ---
--- Begin Message ---
Package: release.debian.org
Version: 10.3

Hi,

Each of the uploads referred to by these bugs was included in today's
stable point release.

Regards,

Adam

--- End Message ---

Reply to: