mirror of
https://github.com/qelectrotech/qelectrotech-source-mirror.git
synced 2026-09-24 02:24:14 +02:00
0395f90f75
Both panels forced a light palette on themselves (white rows, black text, their own selection blue) so that element previews, which are black line art drawn for the white sheet, would stay visible on a dark desktop (bugtracker 335). On a dark palette the two docks were the only white windows left. The forced palettes are gone. Element previews are now kept as drawn, on a transparent background, and adapted where they are shown: ElementPreviewDelegate, installed on the collection tree, hands the view a copy with its lightness inverted when the palette is dark (QET::Palette::forPalette), so black ink becomes the palette's light gray while colored icons such as folders stay as they are; the drag pixmap is adapted the same way. A light palette shows the previews untouched. This fixes bugtracker 335 on every dark desktop rather than masking it with a white panel. The preview cache stored the old white-sheet pictures; it records the format now and drops a cache written before this change once. The amber "show this directory" highlight sets black text so it reads on both palettes. The Projects panel only shows icons from the icon theme, which has a dark variant, so nothing else changes there. tests/qttest/tst_qetpalette: the line-art rule tells ink from color; inversion keeps hue and alpha; a preview reads at 3:1 on the Base color of both palettes; in a tree on the dark palette the delegate inverts a line-art icon and leaves a colored one alone. Fixes #945.
51 lines
1.7 KiB
C++
51 lines
1.7 KiB
C++
/*
|
|
Copyright 2006-2026 The QElectroTech Team
|
|
This file is part of QElectroTech.
|
|
|
|
QElectroTech is free software: you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation, either version 2 of the License, or
|
|
(at your option) any later version.
|
|
|
|
QElectroTech is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with QElectroTech. If not, see <http://www.gnu.org/licenses/>.
|
|
*/
|
|
#ifndef ELEMENTPREVIEWDELEGATE_H
|
|
#define ELEMENTPREVIEWDELEGATE_H
|
|
|
|
#include <QHash>
|
|
#include <QIcon>
|
|
#include <QStyledItemDelegate>
|
|
|
|
/**
|
|
@brief The ElementPreviewDelegate class
|
|
Draws the items of an element collection tree with icons that read on
|
|
the current palette. Element previews are black line art drawn for a
|
|
white sheet; on a dark palette this delegate hands the view the same
|
|
picture with its lightness inverted (QET::Palette::forPalette), so the
|
|
ink is light on the dark row. Colored icons, such as folders, are left
|
|
alone, and nothing changes on a light palette. Adapted icons are kept
|
|
per source icon, so a repaint costs a hash lookup.
|
|
*/
|
|
class ElementPreviewDelegate : public QStyledItemDelegate
|
|
{
|
|
Q_OBJECT
|
|
|
|
public:
|
|
using QStyledItemDelegate::QStyledItemDelegate;
|
|
|
|
protected:
|
|
void initStyleOption(QStyleOptionViewItem *option,
|
|
const QModelIndex &index) const override;
|
|
|
|
private:
|
|
mutable QHash<qint64, QIcon> m_dark_icons;
|
|
};
|
|
|
|
#endif
|