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

0001 /* This file is part of the KDE project
0002  * SPDX-FileCopyrightText: 2013 Jean-Nicolas Artaud <jeannicolasartaud@gmail.com>
0003  *
0004  * SPDX-License-Identifier: LGPL-2.0-or-later
0005  */
0006 
0007 #include "KoColorPopupButton.h"
0008 
0009 #include <QResizeEvent>
0010 #include <QStyle>
0011 #include <QStyleOptionToolButton>
0012 
0013 #include "WidgetsDebug.h"
0014 
0015 KoColorPopupButton::KoColorPopupButton(QWidget *parent)
0016     : QToolButton(parent)
0017 {
0018     setToolButtonStyle(Qt::ToolButtonIconOnly);
0019 }
0020 
0021 KoColorPopupButton::~KoColorPopupButton()
0022 {
0023 }
0024 
0025 QSize KoColorPopupButton::sizeHint() const
0026 {
0027     QStyleOptionToolButton opt;
0028     initStyleOption(&opt);
0029 
0030     return style()->sizeFromContents(QStyle::CT_ToolButton, &opt, QSize(16,16), this);
0031 }
0032 
0033 void KoColorPopupButton::resizeEvent(QResizeEvent *e)
0034 {
0035     QStyleOptionToolButton opt;
0036     initStyleOption(&opt);
0037     QSize size = iconSize();
0038 
0039     QSize rect = style()->sizeFromContents(QStyle::CT_ToolButton, &opt, size, this);
0040     int iconWidth = size.width() - rect.width() + e->size().width();
0041 
0042     if (iconWidth != size.width()) {
0043         size.setWidth(iconWidth);
0044         setIconSize(size);
0045     }
0046     QToolButton::resizeEvent(e);
0047 
0048     emit iconSizeChanged();
0049 }