Respect "InvertZoom" parameter

This commit is contained in:
wandererfan
2018-10-25 14:49:08 -04:00
committed by wmayer
parent 9c1587cfad
commit 4fa707f46d
3 changed files with 23 additions and 6 deletions

View File

@@ -41,6 +41,7 @@
#include <App/Document.h>
#include <App/Material.h>
#include <Base/Console.h>
#include <Base/Parameter.h>
#include <Base/Stream.h>
#include <Gui/FileDialog.h>
#include <Gui/Selection.h>
@@ -99,12 +100,22 @@ QGVPage::QGVPage(ViewProviderPage *vp, QGraphicsScene* s, QWidget *parent)
setScene(s);
setViewportUpdateMode(QGraphicsView::SmartViewportUpdate);
setCacheMode(QGraphicsView::CacheBackground);
//setTransformationAnchor(AnchorUnderMouse);
//setTransformationAnchor(NoAnchor);
setTransformationAnchor(AnchorViewCenter);
setResizeAnchor(AnchorViewCenter);
Base::Reference<ParameterGrp> hGrp = App::GetApplication().GetUserParameter()
.GetGroup("BaseApp")->GetGroup("Preferences")->GetGroup("View");
m_atCursor = hGrp->GetBool("ZoomAtCursor", 1l);
m_invertZoom = hGrp->GetBool("InvertZoom", 0l);
if (m_atCursor) {
setResizeAnchor(AnchorUnderMouse);
setTransformationAnchor(AnchorUnderMouse);
} else {
setResizeAnchor(AnchorViewCenter);
setTransformationAnchor(AnchorViewCenter);
}
setAlignment(Qt::AlignCenter);
setDragMode(ScrollHandDrag);
@@ -633,7 +644,10 @@ void QGVPage::wheelEvent(QWheelEvent *event)
// 1 click = -0.5 ==> factor = 1.2^-0.5 = 0.91
//so to change wheel direction, multiply (event->delta() / 240.0) by +/-1
double mouseBase = 1.2; //magic numbers. change for different mice?
double mouseAdjust = 240.0;
double mouseAdjust = -240.0;
if (m_invertZoom) {
mouseAdjust = -mouseAdjust;
}
QPointF center = mapToScene(viewport()->rect().center());
qreal factor = std::pow(mouseBase, event->delta() / mouseAdjust);

View File

@@ -126,6 +126,9 @@ private:
QBrush* bkgBrush;
QImage m_image;
ViewProviderPage *m_vpPage;
bool m_atCursor;
bool m_invertZoom;
};
} // namespace MDIViewPageGui

View File

@@ -188,8 +188,8 @@ bool ViewProviderPage::setEdit(int ModNum)
{
bool rc = true;
if (ModNum == _SHOWDRAWING) {
Visibility.setValue(true);
showMDIViewPage(); // show the drawing
Gui::getMainWindow()->setActiveWindow(m_mdiView);
rc = false; //finished editing
} else if (ModNum == _TOGGLEUPDATE) {
auto page = getDrawPage();