View Issue Details
| ID | Project | Category | View Status | Date Submitted | Last Update |
|---|---|---|---|---|---|
| 0017979 | Scribus | User Interface | public | 2026-09-13 06:52 | 2026-09-13 06:54 |
| Reporter | buttar | Assigned To | |||
| Priority | normal | Severity | minor | Reproducibility | always |
| Status | new | Resolution | open | ||
| Platform | Linux | OS | Fedora Workstation | OS Version | 44 |
| Product Version | 1.7.4.svn | ||||
| Summary | 0017979: [patch] Dark theme palette and interaction-state polish | ||||
| Description | # Issue * The Dark theme is functional but some states are visually harsher or less distinct than they need to be. * Selection/highlight blue is relatively strong, tooltips switch to a light treatment, and disabled text can be difficult to distinguish comfortably. * Checked tool buttons and active dock tabs can also be too subtle in the dark interface. | ||||
| Additional Information | * Keep native Qt/Scribus widget geometry and rendering intact; limit the changes to palette values and compact state accents. ## `dark1-dark-palette-modernization-v1.01.patch` - Softens the Dark selection/highlight colour. - Separates Link from Highlight. - Uses dark selected text for contrast. - Adds dark-neutral tooltips. - Improves disabled-text contrast. ## `dark2-dark-interaction-state-polish-v1.01.patch` - Adds a thin highlight outline to checked enabled tool buttons. - Adds a 2px highlight marker to the active ADS dock tab. - Uses the effective Qt dark colour scheme, so explicit Dark and Auto-with-dark-system-theme behave consistently. - Keeps the dock-tab styling isolated in `scribus-dark.css`. | ||||
| Tags | #please_test | ||||
| Attached Files | dark1-dark-palette-modernization-v1.01.patch (2,181 bytes)
Index: scribus/ui/factories/scribusproxystyle.cpp =================================================================== --- scribus/ui/factories/scribusproxystyle.cpp (revision 27829) +++ scribus/ui/factories/scribusproxystyle.cpp (working copy) @@ -41,8 +41,8 @@ darkPalette.setColor(QPalette::WindowText, Qt::white); darkPalette.setColor(QPalette::Base, QColor(42, 42, 42)); darkPalette.setColor(QPalette::AlternateBase, QColor(53, 53, 53)); - darkPalette.setColor(QPalette::ToolTipBase, Qt::white); - darkPalette.setColor(QPalette::ToolTipText, Qt::black); + darkPalette.setColor(QPalette::ToolTipBase, QColor(36, 40, 44)); + darkPalette.setColor(QPalette::ToolTipText, QColor(236, 239, 241)); darkPalette.setColor(QPalette::Text, Qt::white); QColor placeholderTextColor = darkPalette.color(QPalette::Text); placeholderTextColor.setAlpha(128); @@ -50,9 +50,9 @@ darkPalette.setColor(QPalette::Button, QColor(53, 53, 53)); darkPalette.setColor(QPalette::ButtonText, Qt::white); darkPalette.setColor(QPalette::BrightText, Qt::red); - darkPalette.setColor(QPalette::Link, QColor(42, 130, 218)); - darkPalette.setColor(QPalette::Highlight, QColor(42, 130, 218)); - darkPalette.setColor(QPalette::HighlightedText, Qt::black); + darkPalette.setColor(QPalette::Link, QColor(102, 167, 217)); + darkPalette.setColor(QPalette::Highlight, QColor(79, 147, 200)); + darkPalette.setColor(QPalette::HighlightedText, QColor(32, 36, 40)); darkPalette.setColor(QPalette::Shadow, Qt::black); // Keep the palette's shading roles consistent with dark button surfaces. @@ -62,8 +62,10 @@ darkPalette.setColor(QPalette::Dark, buttonColor.darker(150)); darkPalette.setColor(QPalette::Mid, buttonColor.darker(120)); - darkPalette.setColor(QPalette::Disabled, QPalette::Text, Qt::darkGray); - darkPalette.setColor(QPalette::Disabled, QPalette::ButtonText, Qt::darkGray); + const QColor disabledText(138, 143, 148); + darkPalette.setColor(QPalette::Disabled, QPalette::WindowText, disabledText); + darkPalette.setColor(QPalette::Disabled, QPalette::Text, disabledText); + darkPalette.setColor(QPalette::Disabled, QPalette::ButtonText, disabledText); return darkPalette; } dark2-dark-interaction-state-polish-v1.01.patch (2,477 bytes)
Index: scribus/CMakeLists.txt
===================================================================
--- scribus/CMakeLists.txt (revision 27829)
+++ scribus/CMakeLists.txt (working copy)
@@ -401,5 +401,6 @@
#Install our stylesheet
install(FILES
scribus.css
+ scribus-dark.css
DESTINATION ${LIBDIR}
)
Index: scribus/scribus-dark.css
===================================================================
--- scribus/scribus-dark.css (nonexistent)
+++ scribus/scribus-dark.css (working copy)
@@ -0,0 +1,10 @@
+/*
+Dark-theme interaction-state polish.
+
+Keep geometry and native control rendering unchanged; use the palette highlight only
+as a compact state accent.
+*/
+
+ads--CDockWidgetTab[activeTab="true"] {
+ border-bottom: 2px solid palette(highlight);
+}
Index: scribus/scribus.cpp
===================================================================
--- scribus/scribus.cpp (revision 27829)
+++ scribus/scribus.cpp (working copy)
@@ -623,6 +623,17 @@
stylesheet.replace("___overlayRgb___", overlayRgb);
}
+ if (QApplication::styleHints()->colorScheme() == Qt::ColorScheme::Dark)
+ {
+ QByteArray darkStyleSheet;
+ if (loadRawText(ScPaths::instance().libDir() + "scribus-dark.css", darkStyleSheet))
+ {
+ if (!stylesheet.isEmpty())
+ stylesheet.append('\n');
+ stylesheet.append(darkStyleSheet);
+ }
+ }
+
dockManager->setStyleSheet(stylesheet); // style sheet should be enabled when theme manager is implemented to handle color palettes in css file.
layerMenu->setStyleSheet(stylesheet);
Index: scribus/ui/factories/scribusproxystyle.cpp
===================================================================
--- scribus/ui/factories/scribusproxystyle.cpp (revision 27829)
+++ scribus/ui/factories/scribusproxystyle.cpp (working copy)
@@ -235,6 +235,21 @@
}
QProxyStyle::drawComplexControl(cc, opt, painter, widget);
+
+ if (cc == QStyle::ComplexControl::CC_ToolButton
+ && opt
+ && (opt->state & QStyle::State_Enabled)
+ && (opt->state & QStyle::State_On)
+ && QApplication::styleHints()->colorScheme() == Qt::ColorScheme::Dark)
+ {
+ painter->save();
+ painter->setRenderHint(QPainter::Antialiasing, true);
+ painter->setPen(opt->palette.color(QPalette::Highlight));
+ painter->setBrush(Qt::NoBrush);
+ const QRectF borderRect = QRectF(opt->rect).adjusted(0.5, 0.5, -0.5, -0.5);
+ painter->drawRoundedRect(borderRect, 3.0, 3.0);
+ painter->restore();
+ }
}
bool ScribusProxyStyle::eventFilter(QObject *object, QEvent *event)
| ||||
| Patch | Yes | ||||
|
|
Selected buttons are highlighted better and improved visibility/distinction of disabled ones as well. |
| Date Modified | Username | Field | Change |
|---|---|---|---|
| 2026-09-13 06:52 | buttar | New Issue | |
| 2026-09-13 06:52 | buttar | Tag Attached: #please_test | |
| 2026-09-13 06:52 | buttar | File Added: dark1-dark-palette-modernization-v1.01.patch | |
| 2026-09-13 06:52 | buttar | File Added: dark2-dark-interaction-state-polish-v1.01.patch | |
| 2026-09-13 06:54 | buttar | Note Added: 0054463 | |
| 2026-09-13 06:54 | buttar | File Added: light-blue-select-highlight.png |