File indexing completed on 2024-05-19 04:29:52
0001 /* 0002 * SPDX-FileCopyrightText: 2016 Dmitry Kazakov <dimula73@gmail.com> 0003 * 0004 * SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #ifndef __KIS_HIGHLIGHTED_TOOL_BUTTON_H 0008 #define __KIS_HIGHLIGHTED_TOOL_BUTTON_H 0009 0010 #include <QToolButton> 0011 #include <QEvent> 0012 0013 #include "kritawidgetutils_export.h" 0014 0015 class KRITAWIDGETUTILS_EXPORT KisHighlightedToolButton : public QToolButton 0016 { 0017 public: 0018 KisHighlightedToolButton(QWidget *parent = 0) 0019 : QToolButton(parent) 0020 { 0021 } 0022 0023 void changeEvent(QEvent *event) override { 0024 QWidget::changeEvent(event); 0025 if (event->type() == QEvent::PaletteChange) { 0026 updatePalette(); 0027 } 0028 } 0029 0030 protected: 0031 void checkStateSet() override { 0032 QToolButton::checkStateSet(); 0033 updatePalette(); 0034 } 0035 0036 void nextCheckState() override { 0037 QToolButton::nextCheckState(); 0038 updatePalette(); 0039 } 0040 0041 private: 0042 void updatePalette() { 0043 QWidget *parent = this->parentWidget(); 0044 if (parent) { 0045 QPalette p = parent->palette(); 0046 QColor color = p.color(this->isChecked() ? QPalette::Highlight : QPalette::Button); 0047 p.setColor(QPalette::Button, color); 0048 this->setPalette(p); 0049 } 0050 } 0051 }; 0052 0053 0054 #endif /* __KIS_HIGHLIGHTED_BUTTON_H */