12 #include <QAbstractButton>
17 #include <QStylePainter>
18 #include <QStyleOptionFrame>
20 class Q_DECL_HIDDEN KoDockWidgetTitleBarButton::
Private
23 Private() : styleSize(0, 0), iconSize(0) {}
28 KoDockWidgetTitleBarButton::KoDockWidgetTitleBarButton(
QWidget *parent)
34 KoDockWidgetTitleBarButton::~KoDockWidgetTitleBarButton()
43 const int margin = style()->pixelMetric(QStyle::PM_DockWidgetTitleBarButtonMargin, 0,
this);
44 if (icon().isNull()) {
48 int iconSize = style()->pixelMetric(QStyle::PM_SmallIconSize, 0,
this);
49 if (iconSize != d->iconSize) {
50 const_cast<KoDockWidgetTitleBarButton*>(
this)->d->iconSize = iconSize;
51 const QPixmap pm = icon().pixmap(iconSize);
52 const_cast<KoDockWidgetTitleBarButton*>(
this)->d->styleSize =
QSize(pm.
width() + margin, pm.
height() + margin);
63 void KoDockWidgetTitleBarButton::enterEvent(
QEvent *event)
70 void KoDockWidgetTitleBarButton::leaveEvent(
QEvent *event)
77 void KoDockWidgetTitleBarButton::paintEvent(
QPaintEvent *)
83 opt.state |= QStyle::State_AutoRaise;
85 if (isEnabled() && underMouse() && !isChecked() && !isDown())
86 opt.state |= QStyle::State_Raised;
88 opt.state |= QStyle::State_On;
90 opt.state |= QStyle::State_Sunken;
91 style()->drawPrimitive(QStyle::PE_PanelButtonTool, &opt, &p,
this);
95 opt.activeSubControls = 0;
96 opt.features = QStyleOptionToolButton::None;
97 opt.arrowType = Qt::NoArrow;
98 int size = style()->pixelMetric(QStyle::PM_SmallIconSize, 0,
this);
99 opt.iconSize =
QSize(size, size);
100 style()->drawComplexControl(QStyle::CC_ToolButton, &opt, &p,
this);