mirror of
https://github.com/qelectrotech/qelectrotech-source-mirror.git
synced 2026-08-14 10:34:14 +02:00
Fix bugtracker #335: element icons invisible on dark themes
https://qelectrotech.org/bugtracker/view.php?id=335 ## Bug Element library icons (collection tree thumbnails, drag icon, preview panels) render with a fully transparent background. Element definitions almost always hardcode a black stroke color, on the assumption of the white diagram sheet they are normally drawn on. Against a dark widget/ tree-view background (e.g. KDE Plasma dark theme), that black stroke disappears entirely - reported as icons being "black and almost invisible". scorpio810_mantis linked this to the same recurring family as #231, #247, #267. ## Fix ElementPictureFactory::pixmap() is the single shared point where every consumer of these icons gets its QPixmap (collection tree via ElementsCollectionCache -> Element::pixmap(), master/slave properties tree, element properties preview, drag icon). Change its background fill from fully transparent to opaque white - exactly what the element already visually assumes in every context this pixmap is used, so it is correct regardless of the surrounding widget's palette. ## Testing Built both variants and compared under Xvfb using a simple, decisive visual test: select the tree row (giving it a highlighted/colored background) and compare what shows immediately around the icon's glyph. - Before: the icon's background matches the row's selection color - confirms it is transparent, so on a dark unselected row the black strokes would have the same problem. - After: a solid white square is visible behind the glyph regardless of the row's background color. Note for the on-disk pixmap cache used by ElementsCollectionCache (~/.local/share/QElectroTech/QElectroTech/elements_cache.sqlite): existing cached PNGs predate this fix and will keep their transparent background until regenerated. That cache already keys strictly on path+uuid with no invalidation on QET version, so this is an existing characteristic of that cache, not something introduced here.
This commit is contained in:
@@ -99,7 +99,14 @@ QPixmap ElementPictureFactory::pixmap(const ElementsLocation &location)
|
||||
int hsy = qMin(doc.document_element().attribute("hotspot_y").as_int(), h);
|
||||
|
||||
QPixmap pix(w, h);
|
||||
pix.fill(QColor(255, 255, 255, 0));
|
||||
//Element definitions almost always draw with a hardcoded black
|
||||
//stroke color, on the assumption of the white diagram sheet they
|
||||
//are normally placed on. A transparent background here makes
|
||||
//that stroke disappear against a dark widget/tree-view background
|
||||
//(bugtracker #335). Give it an opaque white background instead -
|
||||
//exactly what the element already assumes visually, in every
|
||||
//context this pixmap is used (tree icons, drag icon, previews).
|
||||
pix.fill(Qt::white);
|
||||
|
||||
QPainter painter(&pix);
|
||||
painter.setRenderHint(QPainter::Antialiasing, true);
|
||||
|
||||
Reference in New Issue
Block a user