Implement kb scroll and pan

This commit is contained in:
wandererfan
2019-02-24 18:55:10 -05:00
committed by wmayer
parent 964bc5ab82
commit bb18d499a8
2 changed files with 51 additions and 1 deletions

View File

@@ -33,6 +33,7 @@
# include <QPainter>
# include <QPaintEvent>
# include <QSvgGenerator>
#include <QScrollBar>
# include <QWheelEvent>
#include <QTemporaryFile>
#include <QDomDocument>
@@ -104,7 +105,6 @@ QGVPage::QGVPage(ViewProviderPage *vp, QGraphicsScene* s, QWidget *parent)
setScene(s);
setViewportUpdateMode(QGraphicsView::SmartViewportUpdate);
setCacheMode(QGraphicsView::CacheBackground);
@@ -113,6 +113,11 @@ QGVPage::QGVPage(ViewProviderPage *vp, QGraphicsScene* s, QWidget *parent)
m_atCursor = hGrp->GetBool("ZoomAtCursor", 1l);
m_invertZoom = hGrp->GetBool("InvertZoom", 0l);
m_zoomIncrement = hGrp->GetFloat("ZoomStep",0.02);
hGrp = App::GetApplication().GetUserParameter()
.GetGroup("BaseApp")->GetGroup("Preferences")->GetGroup("Mod/TechDraw/General");
m_reversePan = hGrp->GetInt("KbPan",1);
m_reverseScroll = hGrp->GetInt("KbScroll",1);
if (m_atCursor) {
setResizeAnchor(AnchorUnderMouse);
@@ -730,9 +735,51 @@ void QGVPage::keyPressEvent(QKeyEvent *event)
}
}
}
if(event->modifiers().testFlag( Qt::NoModifier)) {
switch(event->key()) {
case Qt::Key_Left: {
kbPanScroll(1, 0);
break;
}
case Qt::Key_Up: {
kbPanScroll(0, 1);
break;
}
case Qt::Key_Right: {
kbPanScroll(-1, 0);
break;
}
case Qt::Key_Down: {
kbPanScroll(0, -1);
break;
}
default: {
break;
}
}
}
event->accept();
}
void QGVPage::kbPanScroll(int xMove, int yMove)
{
if (xMove != 0) {
QScrollBar* hsb = horizontalScrollBar();
// int hRange = hsb->maximum() - hsb->minimum(); //default here is 100?
// int hDelta = xMove/hRange
int hStep = hsb->singleStep() * xMove * m_reversePan;
int hNow = hsb->value();
hsb->setValue(hNow + hStep);
}
if (yMove != 0) {
QScrollBar* vsb = verticalScrollBar();
int vStep = vsb->singleStep() * yMove * m_reverseScroll;
int vNow = vsb->value();
vsb->setValue(vNow + vStep);
}
}
void QGVPage::enterEvent(QEvent *event)
{
QGraphicsView::enterEvent(event);

View File

@@ -114,6 +114,7 @@ protected:
void mousePressEvent(QMouseEvent *event);
void mouseReleaseEvent(QMouseEvent *event);
void keyPressEvent(QKeyEvent *event) override;
void kbPanScroll(int xMove = 1, int yMove = 1);
static QColor SelectColor;
static QColor PreselectColor;
@@ -134,6 +135,8 @@ private:
bool m_atCursor;
bool m_invertZoom;
double m_zoomIncrement;
int m_reversePan;
int m_reverseScroll;
};
} // namespace MDIViewPageGui