From 0cb71c3d2a88f78af0040303481774d155952727 Mon Sep 17 00:00:00 2001 From: Leon Date: Mon, 31 Aug 2026 18:59:00 +0800 Subject: [PATCH] Fix dark inactive tab title visibility --- src/DockedEditor.cpp | 1 + tests/CompareSessionTests.cpp | 62 ++++++++++++++++++++++++----------- 2 files changed, 43 insertions(+), 20 deletions(-) diff --git a/src/DockedEditor.cpp b/src/DockedEditor.cpp index 7d331c0..546cd7e 100644 --- a/src/DockedEditor.cpp +++ b/src/DockedEditor.cpp @@ -63,6 +63,7 @@ DockedEditor::DockedEditor(QWidget *parent) : QObject(parent) ads::CDockManager::setConfigFlag(ads::CDockManager::EqualSplitOnInsertion, true); ads::CDockManager::setConfigFlag(ads::CDockManager::MiddleMouseButtonClosesTab, true); ads::CDockManager::setConfigFlag(ads::CDockManager::DockAreaHasTabsMenuButton, false); + ads::CDockManager::setConfigFlag(ads::CDockManager::DisableStylesheet, true); dockManager = new ads::CDockManager(parent); dockManager->setStyleSheet(""); diff --git a/tests/CompareSessionTests.cpp b/tests/CompareSessionTests.cpp index 9e4edec..b875d46 100644 --- a/tests/CompareSessionTests.cpp +++ b/tests/CompareSessionTests.cpp @@ -166,38 +166,60 @@ private slots: QFile styleSheet(QStringLiteral(":/stylesheets/npp.css")); QVERIFY(styleSheet.open(QIODevice::ReadOnly | QIODevice::Text)); const QByteArray css = styleSheet.readAll(); + const QPalette originalPalette = QApplication::palette(); + const auto restorePalette = qScopeGuard([originalPalette] { + QApplication::setPalette(originalPalette); + }); + + QPalette lightPalette = originalPalette; + lightPalette.setColor(QPalette::Window, Qt::white); + lightPalette.setColor(QPalette::WindowText, Qt::black); + lightPalette.setColor(QPalette::Base, Qt::white); + lightPalette.setColor(QPalette::Text, Qt::black); + QApplication::setPalette(lightPalette); + QWidget host; - QPalette darkPalette = host.palette(); + host.resize(900, 600); + DockedEditor dockedEditor(&host); + dockedEditor.addEditor(new ScintillaNext(QStringLiteral("first.cpp"))); + dockedEditor.addEditor(new ScintillaNext(QStringLiteral("second.cpp"))); + dockedEditor.addEditor(new ScintillaNext(QStringLiteral("third.cpp"))); + host.show(); + QCoreApplication::processEvents(); + + QPalette darkPalette = lightPalette; darkPalette.setColor(QPalette::Window, QColor(QStringLiteral("#191A1B"))); darkPalette.setColor(QPalette::WindowText, QColor(QStringLiteral("#BFBFBF"))); darkPalette.setColor(QPalette::Base, QColor(QStringLiteral("#121314"))); darkPalette.setColor(QPalette::Text, QColor(QStringLiteral("#BBBEBF"))); darkPalette.setColor(QPalette::PlaceholderText, QColor(QStringLiteral("#555555"))); - host.setPalette(darkPalette); - host.resize(900, 600); - - DockedEditor dockedEditor(&host); - dockedEditor.addEditor(new ScintillaNext(QStringLiteral("first.cpp"))); - dockedEditor.addEditor(new ScintillaNext(QStringLiteral("second.cpp"))); + darkPalette.setColor(QPalette::Light, QColor(QStringLiteral("#242526"))); + QApplication::setPalette(darkPalette); host.setStyleSheet(QString::fromUtf8(css) + DockedEditor::tabTitleStyleSheet( QColor(QStringLiteral("#BFBFBF")), QColor(QStringLiteral("#8C8C8C")))); - host.show(); QCoreApplication::processEvents(); + ads::CDockManager *dockManager = host.findChild(); + QVERIFY(dockManager != nullptr); + QVERIFY(dockManager->styleSheet().isEmpty()); + const QList tabs = host.findChildren(); - QCOMPARE(tabs.size(), 2); - auto inactive = std::find_if(tabs.cbegin(), tabs.cend(), [](const auto *tab) { - return !tab->isActiveTab(); - }); - QVERIFY(inactive != tabs.cend()); - - const QList labels = - (*inactive)->findChildren(); - QCOMPARE(labels.size(), 1); - labels.first()->ensurePolished(); - QCOMPARE(labels.first()->palette().color(QPalette::WindowText), - QColor(QStringLiteral("#8C8C8C"))); + QCOMPARE(tabs.size(), 3); + int inactiveCount = 0; + for (ads::CDockWidgetTab *tab : tabs) { + if (tab->isActiveTab()) + continue; + + ++inactiveCount; + const QList labels = + tab->findChildren(); + QCOMPARE(labels.size(), 1); + labels.first()->ensurePolished(); + QCOMPARE(labels.first()->palette().color(QPalette::WindowText), + QColor(QStringLiteral("#8C8C8C"))); + } + QCOMPARE(inactiveCount, 2); } void navigationWrapsInBothDirections()