diff options
-rw-r--r-- | dev-qt/qtwidgets/files/qtwidgets-5.15.8-QTBUG-104917.patch | 54 | ||||
-rw-r--r-- | dev-qt/qtwidgets/qtwidgets-5.15.8-r4.ebuild | 68 |
2 files changed, 122 insertions, 0 deletions
diff --git a/dev-qt/qtwidgets/files/qtwidgets-5.15.8-QTBUG-104917.patch b/dev-qt/qtwidgets/files/qtwidgets-5.15.8-QTBUG-104917.patch new file mode 100644 index 000000000000..fae665b14d2e --- /dev/null +++ b/dev-qt/qtwidgets/files/qtwidgets-5.15.8-QTBUG-104917.patch @@ -0,0 +1,54 @@ +From 38c54b3ff58972fa16810740fc43933620b6dc0d Mon Sep 17 00:00:00 2001 +From: Axel Spoerl <axel.spoerl@qt.io> +Date: Wed, 27 Jul 2022 15:17:03 +0200 +Subject: [PATCH] Add nullptr guard in + QStyleSheetStyle::drawPrimitive(PE_PanelLineEdit) + +Drawing PE_PanelLineEdit in QStyleSheetStyle with the default argument +widget = nullptr causes a segfault. + +drawPrimitive tries to fall back to a container widget's render rule +and therefore calls containerWidget() - which crashes when called with +nullptr. + +Container widget fallback is pointless when drawPrimitive() is called +with widget == nullptr. This patch skips it in that case. + +Fixes: QTBUG-104917 +Pick-to: 6.4 6.3 6.2 +Change-Id: I09e57dccfebb81a308944c233846d5b9ef58819e +Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io> +(cherry picked from commit effc8be3ce848770a093d51d5651908c375e83f8) +--- + src/widgets/styles/qstylesheetstyle.cpp | 15 +++++++++------ + 1 file changed, 9 insertions(+), 6 deletions(-) + +diff --git a/src/widgets/styles/qstylesheetstyle.cpp b/src/widgets/styles/qstylesheetstyle.cpp +index 9fcb8ba522..50fdee0f69 100644 +--- a/src/widgets/styles/qstylesheetstyle.cpp ++++ b/src/widgets/styles/qstylesheetstyle.cpp +@@ -4449,12 +4449,15 @@ void QStyleSheetStyle::drawPrimitive(PrimitiveElement pe, const QStyleOption *op + + case PE_PanelLineEdit: + if (const QStyleOptionFrame *frm = qstyleoption_cast<const QStyleOptionFrame *>(opt)) { +- QWidget *container = containerWidget(w); +- if (container != w) { +- QRenderRule containerRule = renderRule(container, opt); +- if (!containerRule.hasNativeBorder() || !containerRule.baseStyleCanDraw()) +- return; +- rule = containerRule; ++ // Fall back to container widget's render rule ++ if (w) { ++ QWidget *container = containerWidget(w); ++ if (container != w) { ++ QRenderRule containerRule = renderRule(container, opt); ++ if (!containerRule.hasNativeBorder() || !containerRule.baseStyleCanDraw()) ++ return; ++ rule = containerRule; ++ } + } + + if (rule.hasNativeBorder()) { +-- +2.40.0 + diff --git a/dev-qt/qtwidgets/qtwidgets-5.15.8-r4.ebuild b/dev-qt/qtwidgets/qtwidgets-5.15.8-r4.ebuild new file mode 100644 index 000000000000..45c06643f187 --- /dev/null +++ b/dev-qt/qtwidgets/qtwidgets-5.15.8-r4.ebuild @@ -0,0 +1,68 @@ +# Copyright 1999-2023 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +if [[ ${PV} != *9999* ]]; then + QT5_KDEPATCHSET_REV=5 + KEYWORDS="~amd64 ~arm ~arm64 ~hppa ~loong ~ppc ~ppc64 ~riscv ~sparc ~x86" +fi + +QT5_MODULE="qtbase" +inherit qt5-build + +DESCRIPTION="Set of components for creating classic desktop-style UIs for the Qt5 framework" + +# keep IUSE defaults in sync with qtgui +IUSE="dbus gles2-only gtk +png +X" +REQUIRED_USE="gtk? ( dbus )" + +DEPEND=" + =dev-qt/qtcore-${QT5_PV}*:5= + =dev-qt/qtgui-${QT5_PV}*:5=[gles2-only=,png=,X?] + dbus? ( =dev-qt/qtdbus-${QT5_PV}* ) + gtk? ( + dev-libs/glib:2 + =dev-qt/qtgui-${QT5_PV}*:5=[dbus] + x11-libs/gtk+:3 + x11-libs/libX11 + x11-libs/pango + ) +" +RDEPEND="${DEPEND}" + +QT5_TARGET_SUBDIRS=( + src/tools/uic + src/widgets + src/plugins/platformthemes +) + +QT5_GENTOO_CONFIG=( + dbus:xdgdesktopportal: + gtk:gtk3: + ::widgets + !:no-widgets: +) + +QT5_GENTOO_PRIVATE_CONFIG=( + :widgets +) + +PATCHES=( + "${FILESDIR}/${P}-QTBUG-106569.patch" + "${FILESDIR}/${P}-QTBUG-104917.patch" # KDE-bug 467373 +) + +src_configure() { + local myconf=( + -opengl $(usex gles2-only es2 desktop) + $(usev dbus -dbus-linked) + $(qt_use gtk) + -gui + $(qt_use png libpng system) + -widgets + $(qt_use X xcb) + $(usev X '-xcb-xlib -xkbcommon') + ) + qt5-build_src_configure +} |