Warning, file /graphics/glaxnimate/src/gui/widgets/scalable_button.hpp was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).

0001 /*
0002  * SPDX-FileCopyrightText: 2019-2023 Mattia Basaglia <dev@dragon.best>
0003  *
0004  * SPDX-License-Identifier: GPL-3.0-or-later
0005  */
0006 
0007 #pragma once
0008 
0009 #include <QToolButton>
0010 #include <QApplication>
0011 #include <QStylePainter>
0012 #include <QStyleOptionToolButton>
0013 
0014 namespace glaxnimate::gui {
0015 
0016 
0017 class ScalableButton : public QToolButton
0018 {
0019 public:
0020     using QToolButton::QToolButton;
0021 
0022     QSize sizeHint() const override
0023     {
0024         return QSize(32, width());
0025     }
0026 
0027 protected:
0028     void resizeEvent ( QResizeEvent * ev ) override
0029     {
0030         updateGeometry();
0031         QToolButton::resizeEvent(ev);
0032     }
0033 
0034     void paintEvent ( QPaintEvent * ) override
0035     {
0036         QStylePainter p(this);
0037         QStyleOptionToolButton opt;
0038         initStyleOption(&opt);
0039         int pad = 16;
0040         int icon_size = std::min(width() - pad, height() - pad);
0041         opt.iconSize = QSize(icon_size, icon_size);
0042         p.drawComplexControl(QStyle::CC_ToolButton, opt);
0043     }
0044 };
0045 
0046 } // namespace glaxnimate::gui