Krita Source Code Documentation
Loading...
Searching...
No Matches
KisSelectionActionsPanelButton Class Reference

Custom widget for selection actions panel buttons, to prevent them being drawn over the pop-up palette. More...

#include <kis_selection_actions_panel_button.h>

+ Inheritance diagram for KisSelectionActionsPanelButton:

Public Member Functions

void draw (QPainter &painter, const KoColorDisplayRendererInterface *displayRendererInterface)
 
 KisSelectionActionsPanelButton (const QString &iconName, const QString &tooltip, int size, QWidget *parent)
 
 ~KisSelectionActionsPanelButton ()
 

Protected Member Functions

void contextMenuEvent (QContextMenuEvent *event) override
 
bool event (QEvent *event) override
 
void mousePressEvent (QMouseEvent *event) override
 
void paintEvent (QPaintEvent *e) override
 
void tabletEvent (QTabletEvent *e) override
 

Detailed Description

Custom widget for selection actions panel buttons, to prevent them being drawn over the pop-up palette.

Definition at line 15 of file kis_selection_actions_panel_button.h.

Constructor & Destructor Documentation

◆ KisSelectionActionsPanelButton()

KisSelectionActionsPanelButton::KisSelectionActionsPanelButton ( const QString & iconName,
const QString & tooltip,
int size,
QWidget * parent )

Definition at line 19 of file kis_selection_actions_panel_button.cpp.

20 : QAbstractButton(parent)
21{
22 setIcon(KisIconUtils::loadIcon(iconName));
23 setFixedSize(size, size);
24 setToolTip(tooltip);
25 setCursor(Qt::PointingHandCursor);
26 setIconSize(QSize(size - ICON_SIZE_OFFSET, size - ICON_SIZE_OFFSET));
27 setAttribute(Qt::WA_AcceptTouchEvents);
29}
static constexpr char ENABLED_PROPERTY[]
static constexpr int ICON_SIZE_OFFSET
QIcon loadIcon(const QString &name)

References KisLongPressEventFilter::ENABLED_PROPERTY, ICON_SIZE_OFFSET, and KisIconUtils::loadIcon().

◆ ~KisSelectionActionsPanelButton()

KisSelectionActionsPanelButton::~KisSelectionActionsPanelButton ( )

Definition at line 31 of file kis_selection_actions_panel_button.cpp.

32{
33
34}

Member Function Documentation

◆ contextMenuEvent()

void KisSelectionActionsPanelButton::contextMenuEvent ( QContextMenuEvent * event)
overrideprotected

Definition at line 112 of file kis_selection_actions_panel_button.cpp.

113{
114 Q_EMIT customContextMenuRequested(mapToGlobal(event->pos()));
115 event->accept();
116}

References event().

◆ draw()

void KisSelectionActionsPanelButton::draw ( QPainter & painter,
const KoColorDisplayRendererInterface * displayRendererInterface )

Definition at line 36 of file kis_selection_actions_panel_button.cpp.

37{
38 QRect rect = geometry();
39 //Draw an outline when the button is pressed
40 if(this->isDown()) {
41 QPainterPath path;
42 path.addRoundedRect(rect, 3, 3);
43 QPen pen = displayRendererInterface->systemPaletteForDisplayColorSpace().highlight().color();
44 pen.setWidth(2);
45
46 painter.setPen(pen);
47 painter.drawPath(path) ;
48 }
49
50 int padding = ICON_SIZE_OFFSET / 2;
51 QImage ic = displayRendererInterface->convertImageToDisplayColorSpace(icon().pixmap(rect.width()-(padding*2), rect.height()-(padding*2)).toImage());
52#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0))
53 QRect target = QRect(QPoint(0, 0), ic.size()/ic.devicePixelRatioF());
54#else
55 QRect target = QRect(QPoint(0, 0), ic.deviceIndependentSize().toSize());
56#endif
57 target.moveCenter(rect.center());
58 painter.drawImage(target.intersected(rect.marginsRemoved(QMargins(padding, padding, padding, padding))), ic);
59}
KisMagneticGraph::vertex_descriptor target(typename KisMagneticGraph::edge_descriptor e, KisMagneticGraph g)
virtual QImage convertImageToDisplayColorSpace(const QImage source) const =0
convertImageToDisplayColorSpace
virtual QPalette systemPaletteForDisplayColorSpace() const =0
systemPaletteForDisplayColorSpace

References KoColorDisplayRendererInterface::convertImageToDisplayColorSpace(), ICON_SIZE_OFFSET, KoColorDisplayRendererInterface::systemPaletteForDisplayColorSpace(), and target().

◆ event()

bool KisSelectionActionsPanelButton::event ( QEvent * event)
overrideprotected

Definition at line 93 of file kis_selection_actions_panel_button.cpp.

94{
95 //Manually handle the button being pressed on touch
96 if (e->type() == QEvent::TouchBegin) {
97 QTouchEvent *touchEvent = static_cast<QTouchEvent *>(e);
98#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
99 int pointsCount = touchEvent->points().count();
100#else
101 int pointsCount = touchEvent->touchPoints().count();
102#endif
103 if (pointsCount == 1) {
104 this->animateClick();
105 e->accept();
106 return true;
107 }
108 }
109 return QAbstractButton::event(e);
110}

◆ mousePressEvent()

void KisSelectionActionsPanelButton::mousePressEvent ( QMouseEvent * event)
overrideprotected

Definition at line 118 of file kis_selection_actions_panel_button.cpp.

119{
120 //Do not propagate the rmb event, to prevent other tool context menus from appearing
121 if (event->button() == Qt::RightButton) {
122 event->accept();
123 } else {
124 QAbstractButton::mousePressEvent(event);
125 }
126}

References event().

◆ paintEvent()

void KisSelectionActionsPanelButton::paintEvent ( QPaintEvent * e)
overrideprotected

Definition at line 63 of file kis_selection_actions_panel_button.cpp.

64{
65 Q_UNUSED(e);
66}

◆ tabletEvent()

void KisSelectionActionsPanelButton::tabletEvent ( QTabletEvent * e)
overrideprotected

Definition at line 70 of file kis_selection_actions_panel_button.cpp.

71{
72 if (e->type() == QEvent::TabletPress) {
73 QMouseEvent mouseEvent(QEvent::MouseButtonPress,
74 e->posF(),
75 e->globalPosF(),
76 e->button(),
77 e->buttons(),
78 e->modifiers());
79 QAbstractButton::mousePressEvent(&mouseEvent);
80 e->accept();
81 } else if (e->type() == QEvent::TabletRelease) {
82 QMouseEvent mouseEvent(QEvent::MouseButtonRelease,
83 e->posF(),
84 e->globalPosF(),
85 e->button(),
86 e->buttons(),
87 e->modifiers());
88 QAbstractButton::mouseReleaseEvent(&mouseEvent);
89 e->accept();
90 }
91}

The documentation for this class was generated from the following files: