From 2c42c57560176a9058bb2bb7af7088e95f7d084a Mon Sep 17 00:00:00 2001 From: wmayer Date: Mon, 14 Jan 2019 11:08:17 +0100 Subject: [PATCH] fixes 0003222: Invert zoom setting is not respected in paper/page mode --- src/Gui/GraphicsViewZoom.cpp | 6 ++++-- src/Gui/GraphicsViewZoom.h | 4 ++++ src/Gui/GraphvizView.cpp | 5 +++++ src/Gui/View3DInventor.cpp | 2 +- src/Mod/Drawing/Gui/DrawingView.cpp | 2 +- src/Mod/Image/Gui/ImageView.cpp | 7 +++++++ src/Mod/Image/Gui/ImageView.h | 1 + src/Mod/Sandbox/Gui/GLGraphicsView.cpp | 2 +- 8 files changed, 24 insertions(+), 5 deletions(-) diff --git a/src/Gui/GraphicsViewZoom.cpp b/src/Gui/GraphicsViewZoom.cpp index 335d959b85..d18fa1e269 100644 --- a/src/Gui/GraphicsViewZoom.cpp +++ b/src/Gui/GraphicsViewZoom.cpp @@ -42,7 +42,7 @@ #include GraphicsViewZoom::GraphicsViewZoom(QGraphicsView* view) - : QObject(view), _view(view) + : QObject(view), _view(view), m_invert_zoom(false) { _view->viewport()->installEventFilter(this); _view->setMouseTracking(true); @@ -80,7 +80,9 @@ bool GraphicsViewZoom::eventFilter(QObject *object, QEvent *event) { QWheelEvent* wheel_event = static_cast(event); if (QApplication::keyboardModifiers() == _modifiers) { if (wheel_event->orientation() == Qt::Vertical) { - double angle = wheel_event->delta(); + double angle = -wheel_event->delta(); + if (m_invert_zoom) + angle = -angle; double factor = qPow(_zoom_factor_base, angle); gentle_zoom(factor); return true; diff --git a/src/Gui/GraphicsViewZoom.h b/src/Gui/GraphicsViewZoom.h index a7ca0a169b..3db2259131 100644 --- a/src/Gui/GraphicsViewZoom.h +++ b/src/Gui/GraphicsViewZoom.h @@ -78,11 +78,15 @@ public: void gentle_zoom(double factor); void set_modifiers(Qt::KeyboardModifiers modifiers); void set_zoom_factor_base(double value); + void set_zoom_inverted(bool on) { + m_invert_zoom = on; + } private: QGraphicsView* _view; Qt::KeyboardModifiers _modifiers; double _zoom_factor_base; + bool m_invert_zoom; QPointF target_scene_pos, target_viewport_pos; bool eventFilter(QObject* object, QEvent* event); }; diff --git a/src/Gui/GraphvizView.cpp b/src/Gui/GraphvizView.cpp index 2d4680003c..d4496ddf8a 100644 --- a/src/Gui/GraphvizView.cpp +++ b/src/Gui/GraphvizView.cpp @@ -169,6 +169,11 @@ GraphvizView::GraphvizView(App::Document & _doc, QWidget* parent) zoomer->set_modifiers(Qt::NoModifier); view->show(); + ParameterGrp::handle hGrp = App::GetApplication().GetParameterGroupByPath + ("User parameter:BaseApp/Preferences/View"); + bool on = hGrp->GetBool("InvertZoom", true); + zoomer->set_zoom_inverted(on); + // Set central widget to view setCentralWidget(view); diff --git a/src/Gui/View3DInventor.cpp b/src/Gui/View3DInventor.cpp index 4e461c8f6c..f687145ee8 100644 --- a/src/Gui/View3DInventor.cpp +++ b/src/Gui/View3DInventor.cpp @@ -337,7 +337,7 @@ void View3DInventor::OnChange(ParameterGrp::SubjectType &rCaller,ParameterGrp::M _viewer->navigationStyle()->setResetCursorPosition(on); } else if (strcmp(Reason,"InvertZoom") == 0) { - bool on = rGrp.GetBool("InvertZoom", false); + bool on = rGrp.GetBool("InvertZoom", true); _viewer->navigationStyle()->setZoomInverted(on); } else if (strcmp(Reason,"ZoomAtCursor") == 0) { diff --git a/src/Mod/Drawing/Gui/DrawingView.cpp b/src/Mod/Drawing/Gui/DrawingView.cpp index 6060e45787..efdae6c781 100644 --- a/src/Mod/Drawing/Gui/DrawingView.cpp +++ b/src/Mod/Drawing/Gui/DrawingView.cpp @@ -260,7 +260,7 @@ DrawingView::DrawingView(Gui::Document* doc, QWidget* parent) ParameterGrp::handle hGrp = App::GetApplication().GetParameterGroupByPath ("User parameter:BaseApp/Preferences/View"); - bool on = hGrp->GetBool("InvertZoom", false); + bool on = hGrp->GetBool("InvertZoom", true); m_view->setZoomInverted(on); } diff --git a/src/Mod/Image/Gui/ImageView.cpp b/src/Mod/Image/Gui/ImageView.cpp index 9c52551e36..e7e30cc970 100644 --- a/src/Mod/Image/Gui/ImageView.cpp +++ b/src/Mod/Image/Gui/ImageView.cpp @@ -90,6 +90,10 @@ ImageView::ImageView(QWidget* parent) // Create the actions, menus and toolbars createActions(); + ParameterGrp::handle hGrp = App::GetApplication().GetParameterGroupByPath + ("User parameter:BaseApp/Preferences/View"); + _invertZoom = hGrp->GetBool("InvertZoom", true); + // connect other slots connect(_pGLImageBox, SIGNAL(drawGraphics()), this, SLOT(drawGraphics())); } @@ -475,6 +479,9 @@ void ImageView::wheelEvent(QWheelEvent * cEvent) // Zoom around centrally displayed image point int numTicks = cEvent->delta() / 120; + if (_invertZoom) + numTicks = -numTicks; + int ICx, ICy; _pGLImageBox->getCentrePoint(ICx, ICy); _pGLImageBox->setZoomFactor(_pGLImageBox->getZoomFactor() / pow(2.0, (double)numTicks), true, ICx, ICy); diff --git a/src/Mod/Image/Gui/ImageView.h b/src/Mod/Image/Gui/ImageView.h index 58d2e8cc08..c66ef7c847 100644 --- a/src/Mod/Image/Gui/ImageView.h +++ b/src/Mod/Image/Gui/ImageView.h @@ -128,6 +128,7 @@ protected: bool _statusBarEnabled; bool _mouseEventsEnabled; bool _ignoreCloseEvent; + bool _invertZoom; }; } // namespace ImageViewGui diff --git a/src/Mod/Sandbox/Gui/GLGraphicsView.cpp b/src/Mod/Sandbox/Gui/GLGraphicsView.cpp index 103f161a28..537dd65d1b 100644 --- a/src/Mod/Sandbox/Gui/GLGraphicsView.cpp +++ b/src/Mod/Sandbox/Gui/GLGraphicsView.cpp @@ -913,7 +913,7 @@ void GraphicsView3D::OnChange(ParameterGrp::SubjectType &rCaller,ParameterGrp::M _viewer->navigationStyle()->setResetCursorPosition(on); } else if (strcmp(Reason,"InvertZoom") == 0) { - bool on = rGrp.GetBool("InvertZoom", false); + bool on = rGrp.GetBool("InvertZoom", true); _viewer->navigationStyle()->setZoomInverted(on); } else if (strcmp(Reason,"ZoomAtCursor") == 0) {