Krita Source Code Documentation
Loading...
Searching...
No Matches
KoCanvasControllerWidget Class Referenceabstract

#include <KoCanvasControllerWidget.h>

+ Inheritance diagram for KoCanvasControllerWidget:

Public Member Functions

virtual void activate ()
 Reimplemented from KoCanvasController.
 
void activate ()
 
KoCanvasBasecanvas () const override
 
virtual KisCanvasState canvasState () const =0
 
virtual void changeCanvasWidget (QWidget *widget)
 
 KoCanvasControllerWidget (KisKActionCollection *actionCollection, KoCanvasSupervisor *observerProvider, QWidget *parent=0)
 
void pan (const QPoint &distance) override
 
virtual void panDown () override
 
virtual void panLeft () override
 
virtual void panRight () override
 
virtual void panUp () override
 
KoCanvasControllerWidget::Privatepriv ()
 
 Private (KoCanvasControllerWidget *qq, KoCanvasSupervisor *observerProvider)
 
QPoint scrollBarValue () const override
 
void scrollContentsBy (int dx, int dy) override
 
void setCanvas (KoCanvasBase *canvas) override
 
void setScrollBarValue (const QPoint &value) override
 
void setToolOptionWidgets (const QList< QPointer< QWidget > > &widgets)
 
void setZoom (KoZoomMode::Mode mode, qreal zoom) override
 
void setZoom (KoZoomMode::Mode mode, qreal zoom, const KoViewTransformStillPoint &stillPoint)
 
void setZoom (KoZoomMode::Mode mode, qreal zoom, qreal resolutionX, qreal resolutionY)
 
void setZoom (KoZoomMode::Mode mode, qreal zoom, qreal resolutionX, qreal resolutionY, const std::optional< KoViewTransformStillPoint > &docStillPoint)
 
void unsetCanvas ()
 
void zoomTo (const QRect &rect) override
 zoom so that rect is exactly visible (as close as possible)
 
 ~KoCanvasControllerWidget () override
 
- Public Member Functions inherited from KoCanvasController
KisKActionCollectionactionCollection () const
 
virtual QPointF currentCursorPosition () const =0
 
virtual void ensureVisibleDoc (const QRectF &docRect, bool smooth)=0
 Scrolls the content of the canvas so that the given rect is visible.
 
 KoCanvasController (KisKActionCollection *actionCollection)
 
virtual QPointF preferredCenter () const =0
 Returns the currently set preferred center point in view coordinates (pixels)
 
 Private ()
 
virtual void resetScrollBars ()=0
 
virtual void setPreferredCenter (const QPointF &viewPoint)=0
 
virtual void zoomIn ()=0
 
virtual void zoomIn (const KoViewTransformStillPoint &stillPoint)=0
 zooms in keeping stillPoint not moved.
 
virtual void zoomOut ()=0
 
virtual void zoomOut (const KoViewTransformStillPoint &stillPoint)=0
 zooms out keeping stillPoint not moved.
 
virtual KoZoomState zoomState () const =0
 
virtual ~KoCanvasController ()
 

Public Attributes

QPointer< KoCanvasBasecanvas
 
bool ignoreScrollSignals
 
KoCanvasSupervisorobserverProvider
 
KoCanvasControllerWidgetq
 
ViewportviewportWidget
 
- Public Attributes inherited from KoCanvasController
KisKActionCollectionactionCollection
 
QPoint documentOffset
 
QSizeF documentSize
 
qreal preferredCenterFractionX
 
qreal preferredCenterFractionY
 
QPointer< KoCanvasControllerProxyObjectproxyObject
 

Protected Member Functions

void dragEnterEvent (QDragEnterEvent *event) override
 reimplemented from QWidget
 
void dragLeaveEvent (QDragLeaveEvent *event) override
 reimplemented from QWidget
 
void dragMoveEvent (QDragMoveEvent *event) override
 reimplemented from QWidget
 
void dropEvent (QDropEvent *event) override
 reimplemented from QWidget
 
void emitSignals (const KisCanvasState &oldState, const KisCanvasState &newState)
 
bool focusNextPrevChild (bool next) override
 reimplemented from QWidget
 
void paintEvent (QPaintEvent *event) override
 reimplemented from QWidget
 
void resizeEvent (QResizeEvent *resizeEvent) override
 reimplemented from QWidget
 
virtual void updateCanvasOffsetInternal (const QPointF &newOffset)=0
 
virtual void updateCanvasWidgetSizeInternal (const QSize &newSize, qreal devicePixelRatio)=0
 
virtual void updateCanvasZoomInternal (KoZoomMode::Mode mode, qreal zoom, qreal resolutionX, qreal resolutionY, const std::optional< KoViewTransformStillPoint > &docStillPoint)=0
 
bool viewportEvent (QEvent *event) override
 reimplemented from QAbstractScrollArea
 
virtual void zoomToInternal (const QRect &viewRect)=0
 
- Protected Member Functions inherited from KoCanvasController
void setDocumentOffset (const QPoint &offset)
 

Private Attributes

Private *const d
 
- Private Attributes inherited from Private
KisCanvas2canvas
 
int displayedFrame
 
int intendedFrame
 

Friends

class KisZoomAndPanTest
 

Additional Inherited Members

- Private Member Functions inherited from Private
 Private (KisCanvas2 *c)
 

Detailed Description

KoCanvasController implementation for QWidget based canvases

Definition at line 31 of file KoCanvasControllerWidget.h.

Constructor & Destructor Documentation

◆ KoCanvasControllerWidget()

KoCanvasControllerWidget::KoCanvasControllerWidget ( KisKActionCollection * actionCollection,
KoCanvasSupervisor * observerProvider,
QWidget * parent = 0 )
explicit

Constructor.

Parameters
actionCollectionthe action collection for this widget
parentthe parent this widget will belong to

Definition at line 69 of file KoCanvasControllerWidget.cpp.

70 : QAbstractScrollArea(parent)
72 , d(new Private(this, observerProvider))
73{
74 // We need to set this as QDeclarativeView sets them a bit different from QAbstractScrollArea
75 setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
76
77 // And then our own Viewport
78 d->viewportWidget = new Viewport(this);
79 setViewport(d->viewportWidget);
80 d->viewportWidget->setFocusPolicy(Qt::NoFocus);
81 setFocusPolicy(Qt::NoFocus);
82 setFrameStyle(0);
83
84 //setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn);
85 setAutoFillBackground(false);
86 /*
87 Fixes: apps starting at zero zoom.
88 Details: Since the document is set on the mainwindow before loading commences the inial show/layout can choose
89 to set the document to be very small, even to be zero pixels tall. Setting a sane minimum size on the
90 widget means we no longer get rounding errors in zooming and we no longer end up with zero-zoom.
91 Note: KoPage apps should probably startup with a sane document size; for Krita that's impossible
92 */
93 setMinimumSize(QSize(50, 50));
94 setMouseTracking(true);
95}
KisKActionCollection * actionCollection
KoCanvasController(KisKActionCollection *actionCollection)

References d.

◆ ~KoCanvasControllerWidget()

KoCanvasControllerWidget::~KoCanvasControllerWidget ( )
override

Definition at line 97 of file KoCanvasControllerWidget.cpp.

98{
99 delete d;
100}

References d.

Member Function Documentation

◆ activate() [1/2]

void KoCanvasControllerWidget::activate ( )
virtual

Reimplemented from KoCanvasController.

Activate this canvascontroller

Reimplemented in KisCanvasController.

Definition at line 102 of file KoCanvasControllerWidget.cpp.

103{
104 d->activate();
105}

References d.

◆ activate() [2/2]

void KoCanvasControllerWidget::activate ( )

◆ canvas()

KoCanvasBase * KoCanvasControllerWidget::canvas ( ) const
overridevirtual

Return the currently set canvas. The default implementation will return Null

Returns
the currently set canvas

Reimplemented from KoCanvasController.

◆ canvasState()

virtual KisCanvasState KoCanvasControllerWidget::canvasState ( ) const
pure virtual

Implemented in KisCanvasController.

◆ changeCanvasWidget()

void KoCanvasControllerWidget::changeCanvasWidget ( QWidget * widget)
virtual

Change the actual canvas widget used by the current canvas. This allows the canvas widget to be changed while keeping the current KoCanvasBase canvas and its associated resources as they are. This might be used, for example, to switch from a QWidget to a QOpenGLWidget canvas.

Parameters
widgetthe new canvas widget.

Definition at line 173 of file KoCanvasControllerWidget.cpp.

174{
175 if (d->viewportWidget->canvas()) {
176 widget->setCursor(d->viewportWidget->canvas()->cursor());
177 d->viewportWidget->canvas()->removeEventFilter(this);
178 }
179
180 d->viewportWidget->setCanvas(widget);
181 setFocusProxy(d->canvas->canvasWidget());
182}
KisAbstractCanvasWidget * canvasWidget
KisCanvas2 * canvas

References Private::canvas, KisCanvas2::canvasWidget, and d.

◆ dragEnterEvent()

void KoCanvasControllerWidget::dragEnterEvent ( QDragEnterEvent * event)
overrideprotected

reimplemented from QWidget

Definition at line 276 of file KoCanvasControllerWidget.cpp.

277{
278 d->viewportWidget->handleDragEnterEvent(event);
279}

References d.

◆ dragLeaveEvent()

void KoCanvasControllerWidget::dragLeaveEvent ( QDragLeaveEvent * event)
overrideprotected

reimplemented from QWidget

Definition at line 291 of file KoCanvasControllerWidget.cpp.

292{
293 d->viewportWidget->handleDragLeaveEvent(event);
294}

References d.

◆ dragMoveEvent()

void KoCanvasControllerWidget::dragMoveEvent ( QDragMoveEvent * event)
overrideprotected

reimplemented from QWidget

Definition at line 286 of file KoCanvasControllerWidget.cpp.

287{
288 d->viewportWidget->handleDragMoveEvent(event);
289}

References d.

◆ dropEvent()

void KoCanvasControllerWidget::dropEvent ( QDropEvent * event)
overrideprotected

reimplemented from QWidget

Definition at line 281 of file KoCanvasControllerWidget.cpp.

282{
283 d->viewportWidget->handleDropEvent(event);
284}

References d.

◆ emitSignals()

void KoCanvasControllerWidget::emitSignals ( const KisCanvasState & oldState,
const KisCanvasState & newState )
protected

Definition at line 184 of file KoCanvasControllerWidget.cpp.

185{
186 if (oldState.documentOffsetF != newState.documentOffsetF) {
187 proxyObject->emitCanvasOffsetChanged();
188 }
189
190 if (oldState.documentOffsetF != newState.documentOffsetF) {
191 proxyObject->emitMoveDocumentOffset(oldState.documentOffsetF, newState.documentOffsetF);
192 }
193
194 if (oldState.canvasSize != newState.canvasSize) {
195 // TODO: should we remove this signal?
196 proxyObject->emitSizeChanged(newState.canvasSize.toSize());
197 }
198
199 if (oldState.documentOffset != newState.documentOffset ||
200 oldState.minimumOffset != newState.minimumOffset ||
201 oldState.maximumOffset != newState.maximumOffset) {
202
204 }
205
206 if (!qFuzzyCompare(oldState.effectiveZoom, newState.effectiveZoom)) {
207 proxyObject->emitEffectiveZoomChanged(newState.effectiveZoom);
208 }
209
210 if (oldState.zoomState() != newState.zoomState()) {
211 proxyObject->emitZoomStateChanged(newState.zoomState());
212 }
213
214 if (!qFuzzyCompare(oldState.rotation, newState.rotation)) {
215 proxyObject->emitDocumentRotationChanged(newState.rotation);
216 }
217
218 if (oldState.mirrorHorizontally != newState.mirrorHorizontally
219 || oldState.mirrorVertically != newState.mirrorVertically) {
220
221 proxyObject->emitDocumentMirrorStatusChanged(newState.mirrorHorizontally, newState.mirrorVertically);
222 }
223
224 if (oldState.imageRectInWidgetPixels != newState.imageRectInWidgetPixels) {
225 proxyObject->emitDocumentRectInWidgetPixelsChanged(newState.imageRectInWidgetPixels);
226 }
227
228 if (oldState != newState) {
229 proxyObject->emitCanvasStateChanged();
230 }
231}
QRectF imageRectInWidgetPixels
KoZoomState zoomState() const
QPointF documentOffsetF
QPointer< KoCanvasControllerProxyObject > proxyObject
virtual void resetScrollBars()=0
static bool qFuzzyCompare(half p1, half p2)

References KisCanvasState::canvasSize, KisCanvasState::documentOffset, KisCanvasState::documentOffsetF, KisCanvasState::effectiveZoom, KisCanvasState::imageRectInWidgetPixels, KisCanvasState::maximumOffset, KisCanvasState::minimumOffset, KisCanvasState::mirrorHorizontally, KisCanvasState::mirrorVertically, KoCanvasController::proxyObject, qFuzzyCompare(), KoCanvasController::resetScrollBars(), KisCanvasState::rotation, and KisCanvasState::zoomState().

◆ focusNextPrevChild()

bool KoCanvasControllerWidget::focusNextPrevChild ( bool next)
overrideprotected

reimplemented from QWidget

Definition at line 324 of file KoCanvasControllerWidget.cpp.

325{
326 // we always return false meaning the canvas takes keyboard focus, but never gives it away.
327 return false;
328}

◆ paintEvent()

void KoCanvasControllerWidget::paintEvent ( QPaintEvent * event)
overrideprotected

reimplemented from QWidget

Definition at line 270 of file KoCanvasControllerWidget.cpp.

271{
272 QPainter gc(viewport());
273 d->viewportWidget->handlePaintEvent(gc, event);
274}

References d.

◆ pan()

void KoCanvasControllerWidget::pan ( const QPoint & distance)
overridevirtual

Move the canvas over the x and y distance of the parameter distance

Parameters
distancethe distance in view coordinates (pixels). A positive distance means moving the canvas up/left.

Implements KoCanvasController.

Definition at line 244 of file KoCanvasControllerWidget.cpp.

245{
246 QPoint sourcePoint = scrollBarValue();
247 setScrollBarValue(sourcePoint + distance);
248}
qreal distance(const QPointF &p1, const QPointF &p2)
QPoint scrollBarValue() const override
void setScrollBarValue(const QPoint &value) override

References distance(), scrollBarValue(), and setScrollBarValue().

◆ panDown()

void KoCanvasControllerWidget::panDown ( )
overridevirtual

Move the canvas down. This behaves the same as

See also
pan() with a negative y coordinate.

Implements KoCanvasController.

Definition at line 255 of file KoCanvasControllerWidget.cpp.

256{
257 pan(QPoint(0, -verticalScrollBar()->singleStep()));
258}
void pan(const QPoint &distance) override

References pan().

◆ panLeft()

void KoCanvasControllerWidget::panLeft ( )
overridevirtual

Move the canvas to the left. This behaves the same as

See also
pan() with a positive x coordinate.

Implements KoCanvasController.

Definition at line 260 of file KoCanvasControllerWidget.cpp.

261{
262 pan(QPoint(horizontalScrollBar()->singleStep(), 0));
263}

References pan().

◆ panRight()

void KoCanvasControllerWidget::panRight ( )
overridevirtual

Move the canvas to the right. This behaves the same as

See also
pan() with a negative x coordinate.

Implements KoCanvasController.

Definition at line 265 of file KoCanvasControllerWidget.cpp.

266{
267 pan(QPoint(-horizontalScrollBar()->singleStep(), 0));
268}

References pan().

◆ panUp()

void KoCanvasControllerWidget::panUp ( )
overridevirtual

Move the canvas up. This behaves the same as

See also
pan() with a positive y coordinate.

Implements KoCanvasController.

Definition at line 250 of file KoCanvasControllerWidget.cpp.

251{
252 pan(QPoint(0, verticalScrollBar()->singleStep()));
253}

References pan().

◆ priv()

KoCanvasControllerWidget::Private * KoCanvasControllerWidget::priv ( )

Definition at line 358 of file KoCanvasControllerWidget.cpp.

359{
360 return d;
361}

References d.

◆ Private()

KoCanvasControllerWidget::Private ( KoCanvasControllerWidget * qq,
KoCanvasSupervisor * observerProvider )
inline

◆ resizeEvent()

void KoCanvasControllerWidget::resizeEvent ( QResizeEvent * resizeEvent)
overrideprotected

reimplemented from QWidget

When the window is moved from one screen to another, the screen scaling factor may also change and we should notify the converter about that.

The actual signal from KisScreenMigrationTracker will come much later, when the resize process has already been completed and it is too late.

Definition at line 124 of file KoCanvasControllerWidget.cpp.

125{
126 const KisCanvasState oldCanvasState = canvasState();
127
137 updateCanvasWidgetSizeInternal(event->size(), this->devicePixelRatioF());
138
139 const KisCanvasState newCanvasState = canvasState();
140
141 // jcall resize on the subordinate widget
142 d->viewportWidget->resetLayout();
143
144 emitSignals(oldCanvasState, newCanvasState);
145}
virtual void updateCanvasWidgetSizeInternal(const QSize &newSize, qreal devicePixelRatio)=0
void emitSignals(const KisCanvasState &oldState, const KisCanvasState &newState)
virtual KisCanvasState canvasState() const =0

References canvasState(), d, emitSignals(), and updateCanvasWidgetSizeInternal().

◆ scrollBarValue()

QPoint KoCanvasControllerWidget::scrollBarValue ( ) const
overridevirtual

Get the position of the scrollbar

Implements KoCanvasController.

Definition at line 341 of file KoCanvasControllerWidget.cpp.

342{
343 QScrollBar * hBar = horizontalScrollBar();
344 QScrollBar * vBar = verticalScrollBar();
345
346 return QPoint(hBar->value(), vBar->value());
347}

◆ scrollContentsBy()

void KoCanvasControllerWidget::scrollContentsBy ( int dx,
int dy )
override

Reimplemented from QAbstractScrollArea.

Definition at line 107 of file KoCanvasControllerWidget.cpp.

108{
109 Q_UNUSED(dx);
110 Q_UNUSED(dy);
111
112 const KisCanvasState oldCanvasState = canvasState();
113
114 const QPoint pt(horizontalScrollBar()->value(), verticalScrollBar()->value());
115 if (oldCanvasState.documentOffset == pt) return;
116
118
119 const KisCanvasState newCanvasState = canvasState();
120
121 emitSignals(oldCanvasState, newCanvasState);
122}
float value(const T *src, size_t ch)
virtual void updateCanvasOffsetInternal(const QPointF &newOffset)=0

References canvasState(), KisCanvasState::documentOffset, emitSignals(), updateCanvasOffsetInternal(), and value().

◆ setCanvas()

void KoCanvasControllerWidget::setCanvas ( KoCanvasBase * canvas)
overridevirtual

Set the new canvas to be shown as a child Calling this will Q_EMIT canvasRemoved() if there was a canvas before, and will emit canvasSet() with the new canvas.

Parameters
canvasthe new canvas. The KoCanvasBase::canvas() will be called to retrieve the actual widget which will then be added as child of this one.

Implements KoCanvasController.

Definition at line 147 of file KoCanvasControllerWidget.cpp.

148{
149 if (d->canvas) {
150 d->unsetCanvas();
151 proxyObject->emitCanvasRemoved(this);
153 d->canvas->canvasWidget()->removeEventFilter(this);
154 }
155
156 d->canvas = canvas;
157
158 if (d->canvas) {
161
162 proxyObject->emitCanvasSet(this);
163 QTimer::singleShot(0, this, SLOT(activate()));
164 }
165}
void setCanvasController(KoCanvasController *controller)
called by KoCanvasController to set the controller that handles this canvas.
virtual void activate()
Reimplemented from KoCanvasController.
virtual void changeCanvasWidget(QWidget *widget)

References activate(), Private::canvas, canvas, KisCanvas2::canvasWidget, changeCanvasWidget(), d, KoCanvasController::proxyObject, and KoCanvasBase::setCanvasController().

◆ setScrollBarValue()

void KoCanvasControllerWidget::setScrollBarValue ( const QPoint & value)
overridevirtual

Used by KisCanvasController to correct the scrollbars position after the rotation.

Implements KoCanvasController.

Definition at line 349 of file KoCanvasControllerWidget.cpp.

350{
351 QScrollBar * hBar = horizontalScrollBar();
352 QScrollBar * vBar = verticalScrollBar();
353
354 hBar->setValue(value.x());
355 vBar->setValue(value.y());
356}

References value().

◆ setToolOptionWidgets()

void KoCanvasControllerWidget::setToolOptionWidgets ( const QList< QPointer< QWidget > > & widgets)

will cause the toolOptionWidgetsChanged to be emitted and all listeners to be updated to the new widget.

FIXME: This doesn't belong her and it does an inherits("KoView") so it too much tied to komain

Parameters
widgetsthe map of widgets

◆ setZoom() [1/4]

void KoCanvasControllerWidget::setZoom ( KoZoomMode::Mode mode,
qreal zoom )
overridevirtual

Implements KoCanvasController.

Definition at line 296 of file KoCanvasControllerWidget.cpp.

297{
298 KoZoomHandler *zoomHandler = dynamic_cast<KoZoomHandler*>(d->canvas->viewConverter());
300 setZoom(mode, zoom, zoomHandler->resolutionX(), zoomHandler->resolutionY(), std::nullopt);
301}
const KoViewConverter * viewConverter() const override
void setZoom(KoZoomMode::Mode mode, qreal zoom) override
qreal resolutionX() const
qreal resolutionY() const
#define KIS_SAFE_ASSERT_RECOVER_RETURN(cond)
Definition kis_assert.h:128

References Private::canvas, d, KIS_SAFE_ASSERT_RECOVER_RETURN, KoZoomHandler::resolutionX(), KoZoomHandler::resolutionY(), setZoom(), and KisCanvas2::viewConverter().

◆ setZoom() [2/4]

void KoCanvasControllerWidget::setZoom ( KoZoomMode::Mode mode,
qreal zoom,
const KoViewTransformStillPoint & stillPoint )

Definition at line 303 of file KoCanvasControllerWidget.cpp.

304{
305 KoZoomHandler *zoomHandler = dynamic_cast<KoZoomHandler*>(d->canvas->viewConverter());
307 setZoom(mode, zoom, zoomHandler->resolutionX(), zoomHandler->resolutionY(), stillPoint);
308}

References Private::canvas, d, KIS_SAFE_ASSERT_RECOVER_RETURN, KoZoomHandler::resolutionX(), KoZoomHandler::resolutionY(), setZoom(), and KisCanvas2::viewConverter().

◆ setZoom() [3/4]

void KoCanvasControllerWidget::setZoom ( KoZoomMode::Mode mode,
qreal zoom,
qreal resolutionX,
qreal resolutionY )

Definition at line 310 of file KoCanvasControllerWidget.cpp.

311{
312 setZoom(mode, zoom, resolutionX, resolutionY, std::nullopt);
313}

References setZoom().

◆ setZoom() [4/4]

void KoCanvasControllerWidget::setZoom ( KoZoomMode::Mode mode,
qreal zoom,
qreal resolutionX,
qreal resolutionY,
const std::optional< KoViewTransformStillPoint > & docStillPoint )

Definition at line 315 of file KoCanvasControllerWidget.cpp.

316{
317 const KisCanvasState oldCanvasState = canvasState();
318 updateCanvasZoomInternal(mode, zoom, resolutionX, resolutionY, stillPoint);
319 const KisCanvasState newCanvasState = canvasState();
320
321 emitSignals(oldCanvasState, newCanvasState);
322}
virtual void updateCanvasZoomInternal(KoZoomMode::Mode mode, qreal zoom, qreal resolutionX, qreal resolutionY, const std::optional< KoViewTransformStillPoint > &docStillPoint)=0

References canvasState(), emitSignals(), and updateCanvasZoomInternal().

◆ unsetCanvas()

void KoCanvasControllerWidget::unsetCanvas ( )

◆ updateCanvasOffsetInternal()

virtual void KoCanvasControllerWidget::updateCanvasOffsetInternal ( const QPointF & newOffset)
protectedpure virtual

Implemented in KisCanvasController.

◆ updateCanvasWidgetSizeInternal()

virtual void KoCanvasControllerWidget::updateCanvasWidgetSizeInternal ( const QSize & newSize,
qreal devicePixelRatio )
protectedpure virtual

Implemented in KisCanvasController.

◆ updateCanvasZoomInternal()

virtual void KoCanvasControllerWidget::updateCanvasZoomInternal ( KoZoomMode::Mode mode,
qreal zoom,
qreal resolutionX,
qreal resolutionY,
const std::optional< KoViewTransformStillPoint > & docStillPoint )
protectedpure virtual

Implemented in KisCanvasController.

◆ viewportEvent()

bool KoCanvasControllerWidget::viewportEvent ( QEvent * event)
overrideprotected

reimplemented from QAbstractScrollArea

Definition at line 330 of file KoCanvasControllerWidget.cpp.

330 {
331 // Workaround: Don't let QAbstractScrollArea handle Gesture events. Because
332 // Qt's detection of touch point positions is a bit buggy, it is handled
333 // with custom algorithms in the KisInputManager. But we must also not let
334 // the corresponding event propagate to the parent QAbstractScrollArea.
335 if (event->type() == QEvent::Gesture) {
336 return false;
337 }
338 return QAbstractScrollArea::viewportEvent(event);
339}

◆ zoomTo()

void KoCanvasControllerWidget::zoomTo ( const QRect & rect)
overridevirtual

zoom so that rect is exactly visible (as close as possible)

The rect must be specified in widget coordinates. The scrollbar positions are changed so that the center of the rect becomes center if possible.

Parameters
rectthe rect in widget coordinates that should fit the view afterwards

Implements KoCanvasController.

Definition at line 233 of file KoCanvasControllerWidget.cpp.

234{
235 const KisCanvasState oldCanvasState = canvasState();
236
237 zoomToInternal(viewRect);
238
239 const KisCanvasState newCanvasState = canvasState();
240
241 emitSignals(oldCanvasState, newCanvasState);
242}
virtual void zoomToInternal(const QRect &viewRect)=0

References canvasState(), emitSignals(), and zoomToInternal().

◆ zoomToInternal()

virtual void KoCanvasControllerWidget::zoomToInternal ( const QRect & viewRect)
protectedpure virtual

Implemented in KisCanvasController.

Friends And Related Symbol Documentation

◆ KisZoomAndPanTest

friend class KisZoomAndPanTest
friend

Definition at line 112 of file KoCanvasControllerWidget.h.

Member Data Documentation

◆ canvas

KoCanvasBase * KoCanvasControllerWidget::canvas

Definition at line 44 of file KoCanvasControllerWidget_p.h.

◆ d

Private* const KoCanvasControllerWidget::d
private

Definition at line 141 of file KoCanvasControllerWidget.h.

◆ ignoreScrollSignals

bool KoCanvasControllerWidget::ignoreScrollSignals

Definition at line 46 of file KoCanvasControllerWidget_p.h.

◆ observerProvider

KoCanvasSupervisor* KoCanvasControllerWidget::observerProvider

Definition at line 43 of file KoCanvasControllerWidget_p.h.

◆ q

KoCanvasControllerWidget* KoCanvasControllerWidget::q

Definition at line 42 of file KoCanvasControllerWidget_p.h.

◆ viewportWidget

Viewport* KoCanvasControllerWidget::viewportWidget

Definition at line 45 of file KoCanvasControllerWidget_p.h.


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