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

#include <kis_scratch_pad_event_filter.h>

+ Inheritance diagram for KisScratchPadEventFilter:

Public Member Functions

 KisScratchPadEventFilter (QWidget *parent)
 
void setWidgetToDocumentTransform (const QTransform &transform)
 

Protected Member Functions

bool eventFilter (QObject *obj, QEvent *event) override
 

Private Member Functions

KoPointerEventcreateMouseEvent (QEvent *event)
 
KoPointerEventcreateTabletEvent (QEvent *event)
 
QWidget * parentWidget ()
 
bool shouldResetWheelDelta (QEvent *event)
 

Private Attributes

Qt::MouseButton m_pressedButton
 
KisScratchPadm_scratchPad
 
bool m_tabletPressed
 
QTransform m_widgetToDocument
 

Detailed Description

Definition at line 18 of file kis_scratch_pad_event_filter.h.

Constructor & Destructor Documentation

◆ KisScratchPadEventFilter()

KisScratchPadEventFilter::KisScratchPadEventFilter ( QWidget * parent)

Definition at line 16 of file kis_scratch_pad_event_filter.cpp.

17 : QObject(parent),
18 m_tabletPressed(false),
19 m_pressedButton(Qt::NoButton)
20{
21 parent->installEventFilter(this);
22 m_scratchPad = qobject_cast<KisScratchPad *>(parent);
23}
ChildIterator< value_type, is_const > parent(const ChildIterator< value_type, is_const > &it)
Definition KisForest.h:327

References m_scratchPad.

Member Function Documentation

◆ createMouseEvent()

KoPointerEvent * KisScratchPadEventFilter::createMouseEvent ( QEvent * event)
inlineprivate

Definition at line 35 of file kis_scratch_pad_event_filter.cpp.

36{
37 QMouseEvent *mouseEvent = static_cast<QMouseEvent*>(event);
38 return new KoPointerEvent(mouseEvent, m_widgetToDocument.map(mouseEvent->pos()));
39}

References m_widgetToDocument.

◆ createTabletEvent()

KoPointerEvent * KisScratchPadEventFilter::createTabletEvent ( QEvent * event)
inlineprivate

Definition at line 41 of file kis_scratch_pad_event_filter.cpp.

42{
43 QTabletEvent *tabletEvent = static_cast<QTabletEvent*>(event);
44 const QPointF pos = tabletEvent->posF();
45 return new KoPointerEvent(tabletEvent, m_widgetToDocument.map(pos));
46}

References m_widgetToDocument.

◆ eventFilter()

bool KisScratchPadEventFilter::eventFilter ( QObject * obj,
QEvent * event )
overrideprotected

Definition at line 49 of file kis_scratch_pad_event_filter.cpp.

50{
51 Q_UNUSED(obj);
52 bool result = false;
53
54 QScopedPointer<KoPointerEvent> ev;
55
56 if (shouldResetWheelDelta(event)) {
58 }
59
60 switch(event->type()) {
61 case QEvent::MouseButtonPress:
62 if (m_pressedButton != Qt::NoButton) break;
63
64 ev.reset(createMouseEvent(event));
65 m_pressedButton = ev->button();
66 m_scratchPad->pointerPress(ev.data());
67 result = true;
68 break;
69 case QEvent::MouseButtonRelease:
70 ev.reset(createMouseEvent(event));
71 if (ev->button() != m_pressedButton) break;
72
73 m_pressedButton = Qt::NoButton;
74 m_scratchPad->pointerRelease(ev.data());
75 result = true;
76 break;
77 case QEvent::MouseMove:
78 if(m_tabletPressed) break;
79 ev.reset(createMouseEvent(event));
80 m_scratchPad->pointerMove(ev.data());
81 result = true;
82 break;
83 case QEvent::TabletPress:
84 if (m_pressedButton != Qt::NoButton) break;
85
86 m_tabletPressed = true;
87 ev.reset(createTabletEvent(event));
88 m_pressedButton = ev->button();
89 m_scratchPad->pointerPress(ev.data());
90 result = true;
91 break;
92 case QEvent::TabletRelease:
93 ev.reset(createTabletEvent(event));
94 if (ev->button() != m_pressedButton) break;
95
96 m_pressedButton = Qt::NoButton;
97 m_scratchPad->pointerRelease(ev.data());
98 m_tabletPressed = false;
99 result = true;
100 break;
101 case QEvent::TabletMove:
102 ev.reset(createTabletEvent(event));
103 m_scratchPad->pointerMove(ev.data());
104 result = true;
105 break;
106 case QEvent::FocusIn:
107 case QEvent::FocusOut:
108 case QEvent::Show:
109 case QEvent::Hide:
111 m_tabletPressed = false;
112 m_pressedButton = Qt::NoButton;
113 break;
114 case QEvent::Wheel:
115 if (m_pressedButton != Qt::NoButton) break;
116
117 m_pressedButton = Qt::NoButton;
118 m_scratchPad->wheelDelta(static_cast<QWheelEvent*>(event));
119 result = true;
120 break;
121 default:
122 result = false;
123 }
124
125 if (ev) {
126 result = ev->isAccepted();
127 event->setAccepted(result);
128 }
129
130 return result;
131}
KoPointerEvent * createMouseEvent(QEvent *event)
KoPointerEvent * createTabletEvent(QEvent *event)
void pointerMove(KoPointerEvent *event)
void pointerPress(KoPointerEvent *event)
void wheelDelta(QWheelEvent *event)
void pointerRelease(KoPointerEvent *event)

References createMouseEvent(), createTabletEvent(), m_pressedButton, m_scratchPad, m_tabletPressed, KisScratchPad::pointerMove(), KisScratchPad::pointerPress(), KisScratchPad::pointerRelease(), KisScratchPad::resetState(), KisScratchPad::resetWheelDelta(), shouldResetWheelDelta(), and KisScratchPad::wheelDelta().

◆ parentWidget()

QWidget * KisScratchPadEventFilter::parentWidget ( )
inlineprivate

Definition at line 30 of file kis_scratch_pad_event_filter.cpp.

31{
32 return static_cast<QWidget*>(parent());
33}

◆ setWidgetToDocumentTransform()

void KisScratchPadEventFilter::setWidgetToDocumentTransform ( const QTransform & transform)

Definition at line 25 of file kis_scratch_pad_event_filter.cpp.

26{
27 m_widgetToDocument = transform;
28}

References m_widgetToDocument.

◆ shouldResetWheelDelta()

bool KisScratchPadEventFilter::shouldResetWheelDelta ( QEvent * event)
private

Definition at line 133 of file kis_scratch_pad_event_filter.cpp.

134{
135 return
136 event->type() == QEvent::FocusIn ||
137 event->type() == QEvent::FocusOut ||
138 event->type() == QEvent::MouseButtonPress ||
139 event->type() == QEvent::MouseButtonRelease ||
140 event->type() == QEvent::MouseButtonDblClick ||
141 event->type() == QEvent::TabletPress ||
142 event->type() == QEvent::TabletRelease ||
143 event->type() == QEvent::Enter ||
144 event->type() == QEvent::Leave ||
145 event->type() == QEvent::TouchBegin ||
146 event->type() == QEvent::TouchEnd ||
147 event->type() == QEvent::TouchCancel ||
148 event->type() == QEvent::NativeGesture;
149}

Member Data Documentation

◆ m_pressedButton

Qt::MouseButton KisScratchPadEventFilter::m_pressedButton
private

Definition at line 40 of file kis_scratch_pad_event_filter.h.

◆ m_scratchPad

KisScratchPad* KisScratchPadEventFilter::m_scratchPad
private

Definition at line 41 of file kis_scratch_pad_event_filter.h.

◆ m_tabletPressed

bool KisScratchPadEventFilter::m_tabletPressed
private

Definition at line 38 of file kis_scratch_pad_event_filter.h.

◆ m_widgetToDocument

QTransform KisScratchPadEventFilter::m_widgetToDocument
private

Definition at line 37 of file kis_scratch_pad_event_filter.h.


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