File indexing completed on 2024-05-12 16:02:28

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         if (event->type() == QEvent::PaletteChange) {
0025             updatePalette();
0026         }
0027     }
0028 
0029 protected:
0030     void checkStateSet() override {
0031         QToolButton::checkStateSet();
0032         updatePalette();
0033     }
0034 
0035     void nextCheckState() override {
0036         QToolButton::nextCheckState();
0037         updatePalette();
0038     }
0039 
0040 private:
0041     void updatePalette() {
0042         QWidget *parent = this->parentWidget();
0043         if (parent) {
0044             QPalette p = parent->palette();
0045             QColor color = p.color(this->isChecked() ? QPalette::Highlight : QPalette::Button);
0046             p.setColor(QPalette::Button, color);
0047             this->setPalette(p);
0048         }
0049     }
0050 };
0051 
0052 
0053 #endif /* __KIS_HIGHLIGHTED_BUTTON_H */