View Issue Details

IDProjectCategoryView StatusLast Update
0017979ScribusUser Interfacepublic2026-09-13 06:54
Reporterbuttar Assigned To 
PrioritynormalSeverityminorReproducibilityalways
Status newResolutionopen 
PlatformLinuxOSFedora WorkstationOS Version44
Product Version1.7.4.svn 
Summary0017979: [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)
PatchYes

Activities

buttar

2026-09-13 06:54

reporter   ~0054463

Selected buttons are highlighted better and improved visibility/distinction of disabled ones as well.
light-blue-select-highlight.png (195,035 bytes)   
light-blue-select-highlight.png (195,035 bytes)   

Issue History

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