• Skip to content
  • Skip to link menu
KDE API Reference
  • KDE API Reference
  • krita API Reference
  • KDE Home
  • Contact Us
 

KritaWidgets

  • sources
  • kfour-appscomplete
  • krita
  • libs
  • widgets
KoDockWidgetTitleBarButton.cpp
Go to the documentation of this file.
1 /* This file is part of the KDE project
2  SPDX-FileCopyrightText: 2007 Marijn Kruisselbrink <[email protected]>
3  SPDX-FileCopyrightText: 2007 Thomas Zander <[email protected]>
4 
5  SPDX-License-Identifier: LGPL-2.0-or-later
6 */
7 
8 #include "KoDockWidgetTitleBarButton.h"
9 
10 #include <WidgetsDebug.h>
11 
12 #include <QAbstractButton>
13 #include <QAction>
14 #include <QLabel>
15 #include <QLayout>
16 #include <QStyle>
17 #include <QStylePainter>
18 #include <QStyleOptionFrame>
19 
20 class Q_DECL_HIDDEN KoDockWidgetTitleBarButton::Private
21 {
22 public:
23  Private() : styleSize(0, 0), iconSize(0) {}
24  QSize styleSize;
25  int iconSize;
26 };
27 
28 KoDockWidgetTitleBarButton::KoDockWidgetTitleBarButton(QWidget *parent)
29  : QAbstractButton(parent), d(new Private())
30 {
31  setFocusPolicy(Qt::NoFocus);
32 }
33 
34 KoDockWidgetTitleBarButton::~KoDockWidgetTitleBarButton()
35 {
36  delete d;
37 }
38 
39 QSize KoDockWidgetTitleBarButton::sizeHint() const
40 {
41  ensurePolished();
42 
43  const int margin = style()->pixelMetric(QStyle::PM_DockWidgetTitleBarButtonMargin, 0, this);
44  if (icon().isNull()) {
45  return QSize(18, 18);
46  }
47 
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);
53  }
54  return d->styleSize;
55 }
56 
57 QSize KoDockWidgetTitleBarButton::minimumSizeHint() const
58 {
59  return sizeHint();
60 }
61 
62 // redraw the button when the mouse enters or leaves it
63 void KoDockWidgetTitleBarButton::enterEvent(QEvent *event)
64 {
65  if (isEnabled())
66  update();
67  QAbstractButton::enterEvent(event);
68 }
69 
70 void KoDockWidgetTitleBarButton::leaveEvent(QEvent *event)
71 {
72  if (isEnabled())
73  update();
74  QAbstractButton::leaveEvent(event);
75 }
76 
77 void KoDockWidgetTitleBarButton::paintEvent(QPaintEvent *)
78 {
79  QPainter p(this);
80 
81  QStyleOptionToolButton opt;
82  opt.initFrom(this);
83  opt.state |= QStyle::State_AutoRaise;
84 
85  if (isEnabled() && underMouse() && !isChecked() && !isDown())
86  opt.state |= QStyle::State_Raised;
87  if (isChecked())
88  opt.state |= QStyle::State_On;
89  if (isDown())
90  opt.state |= QStyle::State_Sunken;
91  style()->drawPrimitive(QStyle::PE_PanelButtonTool, &opt, &p, this);
92 
93  opt.icon = icon();
94  opt.subControls = 0;
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);
101 }
QStyleOptionToolButton
QWidget::setFocusPolicy
void setFocusPolicy(Qt::FocusPolicy policy)
QWidget
QWidget::leaveEvent
virtual void leaveEvent(QEvent *event)
QSize
QStyleOption::initFrom
void initFrom(const QWidget *widget)
QPainter
QPixmap
QWidget::enterEvent
virtual void enterEvent(QEvent *event)
KoDockWidgetTitleBarButton.h
QPixmap::height
int height() const
QWidget::minimumSizeHint
minimumSizeHint
QEvent
QPaintEvent
WidgetsDebug.h
QWidget::sizeHint
sizeHint
QAbstractButton
Private
QPixmap::width
int width() const
This file is part of the KDE documentation.
Documentation copyright © 1996-2021 The KDE developers.
Generated on Tue Jan 19 2021 23:44:00 by doxygen 1.8.16 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

KritaWidgets

Skip menu "KritaWidgets"
  • Main Page
  • Namespace List
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members
  • Related Pages

krita API Reference

Skip menu "krita API Reference"
  • libs
  •   KritaBasicFlakes
  •   brush
  •   KritaUndo2
  •   KritaFlake
  •   image
  •   KritaPlugin
  •   Krita
  •   KritaPigment
  •   KritaResources
  •   KritaStore
  •   ui
  •   KritaWidgets
  •   KritaWidgetUtils
  • plugins
  •   Assitants
  •   Extensions
  •   Filters
  •   Generators
  •   Formats
  •           src
  •   PaintOps
  •     libpaintop

Search



Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal