View Issue Details
| ID | Project | Category | View Status | Date Submitted | Last Update |
|---|---|---|---|---|---|
| 0017923 | Scribus | User Interface | public | 2026-08-15 10:19 | 2026-09-04 13:14 |
| Reporter | qirat | Assigned To | jghali | ||
| Priority | normal | Severity | minor | Reproducibility | always |
| Status | resolved | Resolution | fixed | ||
| Platform | Linux | OS | Fedora Workstation | OS Version | 44 |
| Product Version | 1.7.4.svn | ||||
| Fixed in Version | 1.7.4.svn | ||||
| Summary | 0017923: Dark theme: dock panel title bar/tab strip shows white patches instead of dark | ||||
| Description | A long standing issue for me. I am surprised how tiny the fix was (1kb). With Dark theme active, the inactive tab and filler area in a docked panel's tab strip (e.g. Layers/Arrange Pages) render white. Panel content itself is themed correctly. | ||||
| Steps To Reproduce | - Set theme to Dark. - Dock two panels into the same tab group (e.g. Layers + Arrange Pages). - Inactive tab / strip beside tabs shows white instead of dark. | ||||
| Additional Information | As explained by AI #Root Cause ScribusProxyStyle::createDarkPalette() (scribusproxystyle.cpp) never sets QPalette::Light/Midlight/Dark/Mid. Qt doesn't auto-derive these, so they default to light. Docking stylesheets use palette(mid/light/dark) for the tab strip background, producing white. #Fix Derive Light/Midlight/Dark/Mid from Window in createDarkPalette(). File: scribus/ui/factories/scribusproxystyle.cpp Patch: scribus-dark-theme-palette-fix-r27771-p0.01.patch (1 file, +8 lines) | ||||
| Tags | #please_test | ||||
| Attached Files | scribus-dark-theme-palette-fix-r27771-p0.01.patch (1,004 bytes)
Index: scribus/ui/factories/scribusproxystyle.cpp =================================================================== --- scribus/ui/factories/scribusproxystyle.cpp (revision 27771) +++ scribus/ui/factories/scribusproxystyle.cpp (working copy) @@ -52,6 +52,14 @@ darkPalette.setColor(QPalette::HighlightedText, Qt::black); darkPalette.setColor(QPalette::Shadow, Qt::black); + // Derive Light/Midlight/Dark/Mid from Window so palette(mid)/ + // palette(light)/palette(dark) lookups in style sheets stay dark. + const QColor windowColor = darkPalette.color(QPalette::Window); + darkPalette.setColor(QPalette::Light, windowColor.lighter(150)); + darkPalette.setColor(QPalette::Midlight, windowColor.lighter(120)); + darkPalette.setColor(QPalette::Dark, windowColor.darker(150)); + darkPalette.setColor(QPalette::Mid, windowColor.darker(120)); + darkPalette.setColor(QPalette::Disabled, QPalette::Text, Qt::darkGray); darkPalette.setColor(QPalette::Disabled, QPalette::ButtonText, Qt::darkGray); | ||||
| Patch | Yes | ||||
|
|
Here is some screenshots to show what the issue was. The 1.7.2 (flatpak) did not have the issue it is just for example (see filename) |
|
|
WAIT! Here is a better one that fixes placeholder text in dark theme too. Since it is just one more line in the same file, I combined it. dark-theme-palette-and-placeholder-text-fix-v1.1.patch (1,437 bytes)
Index: scribus/ui/factories/scribusproxystyle.cpp =================================================================== --- scribus/ui/factories/scribusproxystyle.cpp (revision 27771) +++ scribus/ui/factories/scribusproxystyle.cpp (working copy) @@ -44,6 +44,7 @@ darkPalette.setColor(QPalette::ToolTipBase, Qt::white); darkPalette.setColor(QPalette::ToolTipText, Qt::black); darkPalette.setColor(QPalette::Text, Qt::white); + darkPalette.setColor(QPalette::PlaceholderText, QColor(127, 127, 127)); darkPalette.setColor(QPalette::Button, QColor(53, 53, 53)); darkPalette.setColor(QPalette::ButtonText, Qt::white); darkPalette.setColor(QPalette::BrightText, Qt::red); @@ -52,6 +53,14 @@ darkPalette.setColor(QPalette::HighlightedText, Qt::black); darkPalette.setColor(QPalette::Shadow, Qt::black); + // Derive Light/Midlight/Dark/Mid from Window so palette(mid)/ + // palette(light)/palette(dark) lookups in style sheets stay dark. + const QColor windowColor = darkPalette.color(QPalette::Window); + darkPalette.setColor(QPalette::Light, windowColor.lighter(150)); + darkPalette.setColor(QPalette::Midlight, windowColor.lighter(120)); + darkPalette.setColor(QPalette::Dark, windowColor.darker(150)); + darkPalette.setColor(QPalette::Mid, windowColor.darker(120)); + darkPalette.setColor(QPalette::Disabled, QPalette::Text, Qt::darkGray); darkPalette.setColor(QPalette::Disabled, QPalette::ButtonText, Qt::darkGray); |
|
|
Placeholder text before and after (screenshots) |
|
|
Here is a new improved version: adds proper placeholder/shading palette roles; avoids inherited light-theme colours. The initial number in the filename suggests the order it is to go while testing my four dark theme fixes (tickets in order: 0017923, 0017924, 0017925, and 0017926). 1_dark-theme-palette-and-placeholder-text-fix-v1.13.patch (1,483 bytes)
Index: scribus/ui/factories/scribusproxystyle.cpp =================================================================== --- scribus/ui/factories/scribusproxystyle.cpp (revision 27791) +++ scribus/ui/factories/scribusproxystyle.cpp (working copy) @@ -44,6 +44,9 @@ darkPalette.setColor(QPalette::ToolTipBase, Qt::white); darkPalette.setColor(QPalette::ToolTipText, Qt::black); darkPalette.setColor(QPalette::Text, Qt::white); + QColor placeholderTextColor = darkPalette.color(QPalette::Text); + placeholderTextColor.setAlpha(128); + darkPalette.setColor(QPalette::PlaceholderText, placeholderTextColor); darkPalette.setColor(QPalette::Button, QColor(53, 53, 53)); darkPalette.setColor(QPalette::ButtonText, Qt::white); darkPalette.setColor(QPalette::BrightText, Qt::red); @@ -52,6 +55,13 @@ darkPalette.setColor(QPalette::HighlightedText, Qt::black); darkPalette.setColor(QPalette::Shadow, Qt::black); + // Keep the palette's shading roles consistent with dark button surfaces. + const QColor buttonColor = darkPalette.color(QPalette::Button); + darkPalette.setColor(QPalette::Light, buttonColor.lighter(150)); + darkPalette.setColor(QPalette::Midlight, buttonColor.lighter(120)); + 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); |
|
|
My Fedora VM is currently broken, so I could not test your patch in Fedora. However it appears it also fixes issues when using KDE Breeze Qt theme in OpenSuse Tumbleweed, so I applied it. Thanks! |
| Date Modified | Username | Field | Change |
|---|---|---|---|
| 2026-08-15 10:19 | qirat | New Issue | |
| 2026-08-15 10:19 | qirat | File Added: scribus-dark-theme-palette-fix-r27771-p0.01.patch | |
| 2026-08-15 10:21 | qirat | Note Added: 0054208 | |
| 2026-08-15 10:21 | qirat | File Added: good-dark-theme-1.7.2-flatpack.png | |
| 2026-08-15 10:21 | qirat | File Added: bad-dark-theme-1.7.4.png | |
| 2026-08-15 10:21 | qirat | File Added: bad-dark-theme-1.7.4 (2).png | |
| 2026-08-15 11:01 | qirat | Note Added: 0054209 | |
| 2026-08-15 11:01 | qirat | File Added: dark-theme-palette-and-placeholder-text-fix-v1.1.patch | |
| 2026-08-15 11:01 | qirat | Note Added: 0054210 | |
| 2026-08-15 11:01 | qirat | File Added: placeholder-text-fix-action-search-after.png | |
| 2026-08-29 03:26 | qirat | Note Added: 0054363 | |
| 2026-08-29 03:26 | qirat | File Added: 1_dark-theme-palette-and-placeholder-text-fix-v1.13.patch | |
| 2026-08-29 03:30 | qirat | Tag Attached: #please_test | |
| 2026-09-04 13:12 | jghali | Summary | [PATCH] Dark theme: dock panel title bar/tab strip shows white patches instead of dark => Dark theme: dock panel title bar/tab strip shows white patches instead of dark |
| 2026-09-04 13:14 | jghali | Note Added: 0054412 | |
| 2026-09-04 13:14 | jghali | Assigned To | => jghali |
| 2026-09-04 13:14 | jghali | Status | new => resolved |
| 2026-09-04 13:14 | jghali | Resolution | open => fixed |
| 2026-09-04 13:14 | jghali | Fixed in Version | => 1.7.4.svn |