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 */