diff --git a/libs/ui/canvas/kis_canvas2.cpp b/libs/ui/canvas/kis_canvas2.cpp index c71ad0e..6162b47 100644 --- a/libs/ui/canvas/kis_canvas2.cpp +++ b/libs/ui/canvas/kis_canvas2.cpp @@ -99,6 +99,7 @@ public: KisCoordinatesConverter *coordinatesConverter; QPointerview; KisAbstractCanvasWidget *canvasWidget = 0; + QPointer realCanvasWidget; KoShapeManager shapeManager; bool currentCanvasIsOpenGL; int openGLFilterMode; @@ -210,6 +211,7 @@ void KisCanvas2::setCanvasWidget(QWidget * widget) } m_d->canvasWidget = tmp; + m_d->realCanvasWidget = widget; // Either tmp was null or we are being called by KisCanvas2 constructor that is called by KisView // constructor, so the view manager still doesn't exists. @@ -347,15 +349,14 @@ KisInputManager* KisCanvas2::globalInputManager() const QWidget* KisCanvas2::canvasWidget() { - return m_d->canvasWidget->widget(); + return m_d->realCanvasWidget ? m_d->canvasWidget->widget() : 0; } const QWidget* KisCanvas2::canvasWidget() const { - return m_d->canvasWidget->widget(); + return m_d->realCanvasWidget ? m_d->canvasWidget->widget() : 0; } - KoUnit KisCanvas2::unit() const { KoUnit unit(KoUnit::Pixel); diff --git a/libs/ui/canvas/kis_mirror_axis.cpp b/libs/ui/canvas/kis_mirror_axis.cpp index d5262ef..e573046 100644 --- a/libs/ui/canvas/kis_mirror_axis.cpp +++ b/libs/ui/canvas/kis_mirror_axis.cpp @@ -223,15 +223,15 @@ void KisMirrorAxis::drawDecoration(QPainter& gc, const QRectF& updateArea, const bool KisMirrorAxis::eventFilter(QObject* target, QEvent* event) { + qDebug() << ppVar(view()); + qDebug() << ppVar((view() ? view()->canvasBase() : 0)); + qDebug() << ppVar((view() && view()->canvasBase() ? view()->canvasBase()->canvasWidget() : 0)); + QObject *expectedCanvasWidget = view() && view()->canvasBase() ? view()->canvasBase()->canvasWidget() : 0; - //qDebug() << ppVar(view()); - //qDebug() << ppVar((view() ? view()->canvasBase() : 0)); - //qDebug() << ppVar((view() && view()->canvasBase() ? view()->canvasBase()->canvasWidget() : 0)); - - if (!expectedCanvasWidget /*|| target != expectedCanvasWidget*/) return false; + if (!expectedCanvasWidget || target != expectedCanvasWidget) return false; if(event->type() == QEvent::MouseButtonPress || event->type() == QEvent::TabletPress) { QMouseEvent *me = dynamic_cast(event);