From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtp.gentoo.org (woodpecker.gentoo.org [140.211.166.183]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by finch.gentoo.org (Postfix) with ESMTPS id EF87A158074 for ; Sat, 28 Jun 2025 08:56:51 +0000 (UTC) Received: from lists.gentoo.org (bobolink.gentoo.org [140.211.166.189]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519) (No client certificate requested) (Authenticated sender: relay-lists.gentoo.org@gentoo.org) by smtp.gentoo.org (Postfix) with ESMTPSA id D98B4335DCC for ; Sat, 28 Jun 2025 08:56:51 +0000 (UTC) Received: from bobolink.gentoo.org (localhost [127.0.0.1]) by bobolink.gentoo.org (Postfix) with ESMTP id D1900110278; Sat, 28 Jun 2025 08:56:50 +0000 (UTC) Received: from smtp.gentoo.org (woodpecker.gentoo.org [140.211.166.183]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519) (No client certificate requested) by bobolink.gentoo.org (Postfix) with ESMTPS id C5D60110278 for ; Sat, 28 Jun 2025 08:56:50 +0000 (UTC) Received: from oystercatcher.gentoo.org (oystercatcher.gentoo.org [148.251.78.52]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id 70B3C335DCC for ; Sat, 28 Jun 2025 08:56:50 +0000 (UTC) Received: from localhost.localdomain (localhost [IPv6:::1]) by oystercatcher.gentoo.org (Postfix) with ESMTP id 108AF2AB3 for ; Sat, 28 Jun 2025 08:56:49 +0000 (UTC) From: "Ionen Wolkens" To: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: 8bit Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "Ionen Wolkens" Message-ID: <1751100985.d5400b79bee654a40508d5165f14a879c7140534.ionen@gentoo> Subject: [gentoo-commits] repo/gentoo:master commit in: dev-qt/qtbase/files/, dev-qt/qtbase/ X-VCS-Repository: repo/gentoo X-VCS-Files: dev-qt/qtbase/files/qtbase-6.9.1-QTBUG-137755.patch dev-qt/qtbase/qtbase-6.9.1-r1.ebuild dev-qt/qtbase/qtbase-6.9.1.ebuild X-VCS-Directories: dev-qt/qtbase/ dev-qt/qtbase/files/ X-VCS-Committer: ionen X-VCS-Committer-Name: Ionen Wolkens X-VCS-Revision: d5400b79bee654a40508d5165f14a879c7140534 X-VCS-Branch: master Date: Sat, 28 Jun 2025 08:56:49 +0000 (UTC) Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-commits@lists.gentoo.org X-Auto-Response-Suppress: DR, RN, NRN, OOF, AutoReply X-Archives-Salt: 9c75fce4-2da9-4b53-9a9a-6b60d1ff577d X-Archives-Hash: e7798653f7196267192189218b4d6ae6 commit: d5400b79bee654a40508d5165f14a879c7140534 Author: Ionen Wolkens gentoo org> AuthorDate: Sat Jun 28 07:39:16 2025 +0000 Commit: Ionen Wolkens gentoo org> CommitDate: Sat Jun 28 08:56:25 2025 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=d5400b79 dev-qt/qtbase: backport fix for QTBUG-137755 Would've been nicer to get this in before stable, but at this point do not want to re-stabilize over this and the backport set is an upstream suggestion and should hopefully be safe, so doing straight-to. Closes: https://bugs.gentoo.org/959225 Thanks-to: Tobias Leupold Signed-off-by: Ionen Wolkens gentoo.org> .../qtbase/files/qtbase-6.9.1-QTBUG-137755.patch | 130 +++++++++++++++++++++ ...{qtbase-6.9.1.ebuild => qtbase-6.9.1-r1.ebuild} | 1 + 2 files changed, 131 insertions(+) diff --git a/dev-qt/qtbase/files/qtbase-6.9.1-QTBUG-137755.patch b/dev-qt/qtbase/files/qtbase-6.9.1-QTBUG-137755.patch new file mode 100644 index 000000000000..b7b2c2b3c586 --- /dev/null +++ b/dev-qt/qtbase/files/qtbase-6.9.1-QTBUG-137755.patch @@ -0,0 +1,130 @@ +https://bugs.gentoo.org/959225 +https://bugreports.qt.io/browse/QTBUG-137755 +https://codereview.qt-project.org/c/qt/qtbase/+/653890 +https://codereview.qt-project.org/c/qt/qtbase/+/653891 +https://codereview.qt-project.org/c/qt/qtbase/+/653892 +https://codereview.qt-project.org/c/qt/qtbase/+/653893 +https://codereview.qt-project.org/c/qt/qtbase/+/653894 +--- a/src/widgets/widgets/qmainwindowlayout.cpp ++++ b/src/widgets/widgets/qmainwindowlayout.cpp +@@ -1768,6 +1768,4 @@ + for (QTabBar *bar : std::as_const(usedTabBars)) + bar->setDocumentMode(_documentMode); +- for (QTabBar *bar : std::as_const(unusedTabBars)) +- bar->setDocumentMode(_documentMode); + } + +@@ -1894,5 +1892,5 @@ + { + Q_OBJECT +- QMainWindow *mainWindow; ++ QPointer mainWindow; + QPointer draggingDock; // Currently dragging (detached) dock widget + public: +@@ -1909,4 +1907,20 @@ + }; + ++QDebug operator<<(QDebug debug, const QMainWindowTabBar *bar) ++{ ++ if (!bar) ++ return debug << "QMainWindowTabBar(0x0)"; ++ QDebugStateSaver saver(debug); ++ debug.nospace().noquote() << "QMainWindowTabBar(" << static_cast(bar) << ", "; ++ debug.nospace().noquote() << "ParentWidget=(" << bar->parentWidget() << "), "; ++ const auto dockWidgets = bar->dockWidgets(); ++ if (dockWidgets.isEmpty()) ++ debug.nospace().noquote() << "No QDockWidgets"; ++ else ++ debug.nospace().noquote() << "DockWidgets(" << dockWidgets << ")"; ++ debug.nospace().noquote() << ")"; ++ return debug; ++} ++ + QMainWindowTabBar *QMainWindowLayout::findTabBar(const QDockWidget *dockWidget) const + { +@@ -1954,5 +1968,5 @@ + QMainWindowTabBar *that = const_cast(this); + QMainWindowLayout* mlayout = qt_mainwindow_layout(mainWindow); +- QDockAreaLayoutInfo *info = mlayout->dockInfo(that); ++ QDockAreaLayoutInfo *info = mlayout ? mlayout->dockInfo(that) : nullptr; + if (!info) + return nullptr; +@@ -2049,5 +2063,4 @@ + if (!mwLayout) + return; +- mwLayout->unusedTabBars.removeOne(this); + mwLayout->usedTabBars.remove(this); + } +@@ -2105,4 +2118,10 @@ + } + ++void QMainWindowLayout::unuseTabBar(QTabBar *bar) ++{ ++ Q_ASSERT(qobject_cast(bar)); ++ delete bar; ++} ++ + QTabBar *QMainWindowLayout::getTabBar() + { +@@ -2116,19 +2135,14 @@ + } + +- QTabBar *result = nullptr; +- if (!unusedTabBars.isEmpty()) { +- result = unusedTabBars.takeLast(); +- } else { +- result = new QMainWindowTabBar(static_cast(parentWidget())); +- result->setDrawBase(true); +- result->setElideMode(Qt::ElideRight); +- result->setDocumentMode(_documentMode); +- result->setMovable(true); +- connect(result, SIGNAL(currentChanged(int)), this, SLOT(tabChanged())); +- connect(result, &QTabBar::tabMoved, this, &QMainWindowLayout::tabMoved); +- } ++ QTabBar *bar = new QMainWindowTabBar(static_cast(parentWidget())); ++ bar->setDrawBase(true); ++ bar->setElideMode(Qt::ElideRight); ++ bar->setDocumentMode(_documentMode); ++ bar->setMovable(true); ++ connect(bar, SIGNAL(currentChanged(int)), this, SLOT(tabChanged())); ++ connect(bar, &QTabBar::tabMoved, this, &QMainWindowLayout::tabMoved); + +- usedTabBars.insert(result); +- return result; ++ usedTabBars.insert(bar); ++ return bar; + } + +@@ -2731,12 +2745,4 @@ + + delete statusbar; +- +-#if QT_CONFIG(dockwidget) && QT_CONFIG(tabwidget) +- // unusedTabBars contains unparented tab bars, which need to be removed manually. +- // ~QMainWindowTabBar() attempts to remove the barĀ from unusedTabBars +- // => move it out of the way first. +- const auto bars = std::move(unusedTabBars); +- qDeleteAll(bars); +-#endif // QT_CONFIG(dockwidget) && QT_CONFIG(tabwidget) + } + +@@ -3213,8 +3219,5 @@ + usedTabBars = used; + for (QTabBar *tab_bar : retired) { +- tab_bar->hide(); +- while (tab_bar->count() > 0) +- tab_bar->removeTab(0); +- unusedTabBars.append(tab_bar); ++ unuseTabBar(tab_bar); + } + +--- a/src/widgets/widgets/qmainwindowlayout_p.h ++++ b/src/widgets/widgets/qmainwindowlayout_p.h +@@ -551,6 +551,6 @@ + + QTabBar *getTabBar(); ++ void unuseTabBar(QTabBar *bar); + QSet usedTabBars; +- QList unusedTabBars; + bool verticalTabsEnabled; + diff --git a/dev-qt/qtbase/qtbase-6.9.1.ebuild b/dev-qt/qtbase/qtbase-6.9.1-r1.ebuild similarity index 99% rename from dev-qt/qtbase/qtbase-6.9.1.ebuild rename to dev-qt/qtbase/qtbase-6.9.1-r1.ebuild index 2444b572887b..a79014dcb62f 100644 --- a/dev-qt/qtbase/qtbase-6.9.1.ebuild +++ b/dev-qt/qtbase/qtbase-6.9.1-r1.ebuild @@ -180,6 +180,7 @@ PATCHES=( "${FILESDIR}"/${PN}-6.6.3-gcc14-avx512fp16.patch "${FILESDIR}"/${PN}-6.8.2-cross.patch "${FILESDIR}"/${PN}-6.9.0-no-direct-extern-access.patch + "${FILESDIR}"/${PN}-6.9.1-QTBUG-137755.patch ) src_prepare() {