From dc0425abee2f4e9495cd25932037637f16257a15 Mon Sep 17 00:00:00 2001 From: Nyall Dawson Date: Wed, 5 Jul 2017 18:20:24 +1000 Subject: [PATCH] Update cursor on alt press/release for zoom tool --- python/gui/layout/qgslayoutviewtoolzoom.sip | 4 ++++ src/gui/layout/qgslayoutviewtool.cpp | 2 +- src/gui/layout/qgslayoutviewtoolzoom.cpp | 22 +++++++++++++++++++++ src/gui/layout/qgslayoutviewtoolzoom.h | 2 ++ 4 files changed, 29 insertions(+), 1 deletion(-) diff --git a/python/gui/layout/qgslayoutviewtoolzoom.sip b/python/gui/layout/qgslayoutviewtoolzoom.sip index 896419d9de5..c1556239805 100644 --- a/python/gui/layout/qgslayoutviewtoolzoom.sip +++ b/python/gui/layout/qgslayoutviewtoolzoom.sip @@ -31,6 +31,10 @@ class QgsLayoutViewToolZoom : QgsLayoutViewTool virtual void layoutReleaseEvent( QgsLayoutViewMouseEvent *event ); + virtual void keyPressEvent( QKeyEvent *event ); + + virtual void keyReleaseEvent( QKeyEvent *event ); + virtual void deactivate(); diff --git a/src/gui/layout/qgslayoutviewtool.cpp b/src/gui/layout/qgslayoutviewtool.cpp index 279dff01fc1..34f1cf35f45 100644 --- a/src/gui/layout/qgslayoutviewtool.cpp +++ b/src/gui/layout/qgslayoutviewtool.cpp @@ -108,7 +108,7 @@ void QgsLayoutViewTool::activate() if ( mAction ) mAction->setChecked( true ); - mView->setCursor( mCursor ); + mView->viewport()->setCursor( mCursor ); emit activated(); } diff --git a/src/gui/layout/qgslayoutviewtoolzoom.cpp b/src/gui/layout/qgslayoutviewtoolzoom.cpp index 312277b173e..9ad486ee9af 100644 --- a/src/gui/layout/qgslayoutviewtoolzoom.cpp +++ b/src/gui/layout/qgslayoutviewtoolzoom.cpp @@ -96,6 +96,28 @@ void QgsLayoutViewToolZoom::layoutReleaseEvent( QgsLayoutViewMouseEvent *event ) view()->fitInView( newBoundsRect, Qt::KeepAspectRatio ); } +void QgsLayoutViewToolZoom::keyPressEvent( QKeyEvent *event ) +{ + //respond to changes in the alt key status and update cursor accordingly + if ( ! event->isAutoRepeat() ) + { + QPixmap zoomQPixmap = QPixmap( ( const char ** )( ( event->modifiers() & Qt::AltModifier ) ? zoom_out : zoom_in ) ); + QCursor zoomCursor = QCursor( zoomQPixmap, 7, 7 ); + view()->viewport()->setCursor( zoomCursor ); + } +} + +void QgsLayoutViewToolZoom::keyReleaseEvent( QKeyEvent *event ) +{ + //respond to changes in the alt key status and update cursor accordingly + if ( !event->isAutoRepeat() ) + { + QPixmap zoomQPixmap = QPixmap( ( const char ** )( ( event->modifiers() & Qt::AltModifier ) ? zoom_out : zoom_in ) ); + QCursor zoomCursor = QCursor( zoomQPixmap, 7, 7 ); + view()->viewport()->setCursor( zoomCursor ); + } +} + void QgsLayoutViewToolZoom::deactivate() { if ( mMarqueeZoom ) diff --git a/src/gui/layout/qgslayoutviewtoolzoom.h b/src/gui/layout/qgslayoutviewtoolzoom.h index f1b59184b8c..d58d0220d85 100644 --- a/src/gui/layout/qgslayoutviewtoolzoom.h +++ b/src/gui/layout/qgslayoutviewtoolzoom.h @@ -42,6 +42,8 @@ class GUI_EXPORT QgsLayoutViewToolZoom : public QgsLayoutViewTool void layoutPressEvent( QgsLayoutViewMouseEvent *event ) override; void layoutMoveEvent( QgsLayoutViewMouseEvent *event ) override; void layoutReleaseEvent( QgsLayoutViewMouseEvent *event ) override; + void keyPressEvent( QKeyEvent *event ) override; + void keyReleaseEvent( QKeyEvent *event ) override; void deactivate() override; private: