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)=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 164 of file KoCanvasControllerWidget.cpp.

165{
166 if (d->viewportWidget->canvas()) {
167 widget->setCursor(d->viewportWidget->canvas()->cursor());
168 d->viewportWidget->canvas()->removeEventFilter(this);
169 }
170
171 d->viewportWidget->setCanvas(widget);
172 setFocusProxy(d->canvas->canvasWidget());
173}
KisAbstractCanvasWidget * canvasWidget
KisCanvas2 * canvas

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

◆ dragEnterEvent()

void KoCanvasControllerWidget::dragEnterEvent ( QDragEnterEvent * event)
overrideprotected

reimplemented from QWidget

Definition at line 267 of file KoCanvasControllerWidget.cpp.

268{
269 d->viewportWidget->handleDragEnterEvent(event);
270}

References d.

◆ dragLeaveEvent()

void KoCanvasControllerWidget::dragLeaveEvent ( QDragLeaveEvent * event)
overrideprotected

reimplemented from QWidget

Definition at line 282 of file KoCanvasControllerWidget.cpp.

283{
284 d->viewportWidget->handleDragLeaveEvent(event);
285}

References d.

◆ dragMoveEvent()

void KoCanvasControllerWidget::dragMoveEvent ( QDragMoveEvent * event)
overrideprotected

reimplemented from QWidget

Definition at line 277 of file KoCanvasControllerWidget.cpp.

278{
279 d->viewportWidget->handleDragMoveEvent(event);
280}

References d.

◆ dropEvent()

void KoCanvasControllerWidget::dropEvent ( QDropEvent * event)
overrideprotected

reimplemented from QWidget

Definition at line 272 of file KoCanvasControllerWidget.cpp.

273{
274 d->viewportWidget->handleDropEvent(event);
275}

References d.

◆ emitSignals()

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

Definition at line 175 of file KoCanvasControllerWidget.cpp.

176{
177 if (oldState.documentOffsetF != newState.documentOffsetF) {
178 proxyObject->emitCanvasOffsetChanged();
179 }
180
181 if (oldState.documentOffsetF != newState.documentOffsetF) {
182 proxyObject->emitMoveDocumentOffset(oldState.documentOffsetF, newState.documentOffsetF);
183 }
184
185 if (oldState.canvasSize != newState.canvasSize) {
186 // TODO: should we remove this signal?
187 proxyObject->emitSizeChanged(newState.canvasSize.toSize());
188 }
189
190 if (oldState.documentOffset != newState.documentOffset ||
191 oldState.minimumOffset != newState.minimumOffset ||
192 oldState.maximumOffset != newState.maximumOffset) {
193
195 }
196
197 if (!qFuzzyCompare(oldState.effectiveZoom, newState.effectiveZoom)) {
198 proxyObject->emitEffectiveZoomChanged(newState.effectiveZoom);
199 }
200
201 if (oldState.zoomState() != newState.zoomState()) {
202 proxyObject->emitZoomStateChanged(newState.zoomState());
203 }
204
205 if (!qFuzzyCompare(oldState.rotation, newState.rotation)) {
206 proxyObject->emitDocumentRotationChanged(newState.rotation);
207 }
208
209 if (oldState.mirrorHorizontally != newState.mirrorHorizontally
210 || oldState.mirrorVertically != newState.mirrorVertically) {
211
212 proxyObject->emitDocumentMirrorStatusChanged(newState.mirrorHorizontally, newState.mirrorVertically);
213 }
214
215 if (oldState.imageRectInWidgetPixels != newState.imageRectInWidgetPixels) {
216 proxyObject->emitDocumentRectInWidgetPixelsChanged(newState.imageRectInWidgetPixels);
217 }
218
219 if (oldState != newState) {
220 proxyObject->emitCanvasStateChanged();
221 }
222}
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 315 of file KoCanvasControllerWidget.cpp.

316{
317 // we always return false meaning the canvas takes keyboard focus, but never gives it away.
318 return false;
319}

◆ paintEvent()

void KoCanvasControllerWidget::paintEvent ( QPaintEvent * event)
overrideprotected

reimplemented from QWidget

Definition at line 261 of file KoCanvasControllerWidget.cpp.

262{
263 QPainter gc(viewport());
264 d->viewportWidget->handlePaintEvent(gc, event);
265}

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 235 of file KoCanvasControllerWidget.cpp.

236{
237 QPoint sourcePoint = scrollBarValue();
238 setScrollBarValue(sourcePoint + distance);
239}
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 246 of file KoCanvasControllerWidget.cpp.

247{
248 pan(QPoint(0, -verticalScrollBar()->singleStep()));
249}
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 251 of file KoCanvasControllerWidget.cpp.

252{
253 pan(QPoint(horizontalScrollBar()->singleStep(), 0));
254}

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 256 of file KoCanvasControllerWidget.cpp.

257{
258 pan(QPoint(-horizontalScrollBar()->singleStep(), 0));
259}

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 241 of file KoCanvasControllerWidget.cpp.

242{
243 pan(QPoint(0, verticalScrollBar()->singleStep()));
244}

References pan().

◆ priv()

KoCanvasControllerWidget::Private * KoCanvasControllerWidget::priv ( )

Definition at line 349 of file KoCanvasControllerWidget.cpp.

350{
351 return d;
352}

References d.

◆ Private()

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

◆ resizeEvent()

void KoCanvasControllerWidget::resizeEvent ( QResizeEvent * resizeEvent)
overrideprotected

reimplemented from QWidget

Definition at line 124 of file KoCanvasControllerWidget.cpp.

125{
126 const KisCanvasState oldCanvasState = canvasState();
127
128 updateCanvasWidgetSizeInternal(event->size());
129
130 const KisCanvasState newCanvasState = canvasState();
131
132 // jcall resize on the subordinate widget
133 d->viewportWidget->resetLayout();
134
135 emitSignals(oldCanvasState, newCanvasState);
136}
virtual void updateCanvasWidgetSizeInternal(const QSize &newSize)=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 332 of file KoCanvasControllerWidget.cpp.

333{
334 QScrollBar * hBar = horizontalScrollBar();
335 QScrollBar * vBar = verticalScrollBar();
336
337 return QPoint(hBar->value(), vBar->value());
338}

◆ 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 138 of file KoCanvasControllerWidget.cpp.

139{
140 if (d->canvas) {
141 d->unsetCanvas();
142 proxyObject->emitCanvasRemoved(this);
144 d->canvas->canvasWidget()->removeEventFilter(this);
145 }
146
147 d->canvas = canvas;
148
149 if (d->canvas) {
152
153 proxyObject->emitCanvasSet(this);
154 QTimer::singleShot(0, this, SLOT(activate()));
155 }
156}
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 340 of file KoCanvasControllerWidget.cpp.

341{
342 QScrollBar * hBar = horizontalScrollBar();
343 QScrollBar * vBar = verticalScrollBar();
344
345 hBar->setValue(value.x());
346 vBar->setValue(value.y());
347}

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 287 of file KoCanvasControllerWidget.cpp.

288{
289 KoZoomHandler *zoomHandler = dynamic_cast<KoZoomHandler*>(d->canvas->viewConverter());
291 setZoom(mode, zoom, zoomHandler->resolutionX(), zoomHandler->resolutionY(), std::nullopt);
292}
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 294 of file KoCanvasControllerWidget.cpp.

295{
296 KoZoomHandler *zoomHandler = dynamic_cast<KoZoomHandler*>(d->canvas->viewConverter());
298 setZoom(mode, zoom, zoomHandler->resolutionX(), zoomHandler->resolutionY(), stillPoint);
299}

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 301 of file KoCanvasControllerWidget.cpp.

302{
303 setZoom(mode, zoom, resolutionX, resolutionY, std::nullopt);
304}

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 306 of file KoCanvasControllerWidget.cpp.

307{
308 const KisCanvasState oldCanvasState = canvasState();
309 updateCanvasZoomInternal(mode, zoom, resolutionX, resolutionY, stillPoint);
310 const KisCanvasState newCanvasState = canvasState();
311
312 emitSignals(oldCanvasState, newCanvasState);
313}
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)
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 321 of file KoCanvasControllerWidget.cpp.

321 {
322 // Workaround: Don't let QAbstractScrollArea handle Gesture events. Because
323 // Qt's detection of touch point positions is a bit buggy, it is handled
324 // with custom algorithms in the KisInputManager. But we must also not let
325 // the corresponding event propagate to the parent QAbstractScrollArea.
326 if (event->type() == QEvent::Gesture) {
327 return false;
328 }
329 return QAbstractScrollArea::viewportEvent(event);
330}

◆ 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 224 of file KoCanvasControllerWidget.cpp.

225{
226 const KisCanvasState oldCanvasState = canvasState();
227
228 zoomToInternal(viewRect);
229
230 const KisCanvasState newCanvasState = canvasState();
231
232 emitSignals(oldCanvasState, newCanvasState);
233}
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: