[Kst] branches/work/kst/1.5/kst/src/libkstapp
Andrew Walker
arwalker at sumusltd.com
Mon Sep 10 20:52:34 CEST 2007
SVN commit 710735 by arwalker:
BUG:149615 Clean up several problems with the zoom modes and guideline display
M +71 -44 kst2dplot.cpp
--- branches/work/kst/1.5/kst/src/libkstapp/kst2dplot.cpp #710734:710735
@@ -2562,7 +2562,7 @@
}
}
}
-
+
KstMouseModeType gzType = globalZoomType();
if (view && GetPlotRegion().contains(_mouse.tracker)) {
if (gzType == X_ZOOMBOX || gzType == Y_ZOOMBOX) {
@@ -2570,10 +2570,10 @@
} else if (gzType == XY_ZOOMBOX) {
updateXYGuideline(view, QPoint(-1, -1), view->mapFromGlobal(QCursor::pos()), GetPlotRegion(), _mouse.mode);
} else {
- _mouse.lastGuideline = QPoint(-1, -1);
+ _mouse.lastGuideline = QPoint(-1, -1);
}
} else {
- _mouse.lastGuideline = QPoint(-1, -1);
+ _mouse.lastGuideline = QPoint(-1, -1);
}
}
}
@@ -4263,15 +4263,30 @@
QRect pr = GetPlotRegion();
KstMouseModeType gzType = globalZoomType();
- // Draw a helper guide in X or Y zoom modes
+
+ //
+ // draw a helper guide in X or Y zoom modes
+ //
if (gzType == X_ZOOMBOX || gzType == Y_ZOOMBOX) {
ButtonState s = e->stateAfter();
if (s == 0) {
- updateXYGuideline(view, _mouse.lastGuideline, _mouse.tracker, pr, gzType);
+ if (e->state() & Qt::LeftButton && _mouse.zooming()) {
+ updateXYGuideline(view, _mouse.lastGuideline, QPoint(-1, -1), pr, gzType);
+ } else {
+ updateXYGuideline(view, _mouse.lastGuideline, _mouse.tracker, pr, gzType);
+ }
} else if (s & Qt::ShiftButton) {
- updateXYGuideline(view, _mouse.lastGuideline, _mouse.tracker, pr, Y_ZOOMBOX);
+ if (e->state() & Qt::LeftButton && _mouse.zooming()) {
+ updateXYGuideline(view, _mouse.lastGuideline, QPoint(-1, -1), pr, Y_ZOOMBOX);
+ } else {
+ updateXYGuideline(view, _mouse.lastGuideline, _mouse.tracker, pr, Y_ZOOMBOX);
+ }
} else if (s & Qt::ControlButton) {
- updateXYGuideline(view, _mouse.lastGuideline, _mouse.tracker, pr, X_ZOOMBOX);
+ if (e->state() & Qt::LeftButton && _mouse.zooming()) {
+ updateXYGuideline(view, _mouse.lastGuideline, QPoint(-1, -1), pr, X_ZOOMBOX);
+ } else {
+ updateXYGuideline(view, _mouse.lastGuideline, _mouse.tracker, pr, X_ZOOMBOX);
+ }
} else {
updateXYGuideline(view, _mouse.lastGuideline, QPoint(-1, -1), pr, gzType);
}
@@ -4322,6 +4337,7 @@
}
int x, y;
+
if (_mouse.mode == XY_ZOOMBOX) {
if (e->x() > pr.right()) {
x = pr.right() + 1;
@@ -4686,44 +4702,44 @@
int x = _mouse.pressLocation.x();
int y = _mouse.pressLocation.y();
- if (newType == Y_ZOOMBOX) {
- if (c.y() > pr.bottom()) {
- y = pr.bottom() + 1;
- } else if (c.y() < pr.top()) {
- y = pr.top();
+ if (_mouse.zooming()) {
+ if (newType == Y_ZOOMBOX) {
+ if (c.y() > pr.bottom()) {
+ y = pr.bottom() + 1;
+ } else if (c.y() < pr.top()) {
+ y = pr.top();
+ } else {
+ y = c.y();
+ }
+ } else if (newType == X_ZOOMBOX) {
+ if (c.x() > pr.right()) {
+ x = pr.right() + 1;
+ } else if (c.x() < pr.left()) {
+ x = pr.left();
+ } else {
+ x = c.x();
+ }
} else {
- y = c.y();
- }
- } else if (newType == X_ZOOMBOX) {
- if (c.x() > pr.right()) {
- x = pr.right() + 1;
- } else if (c.x() < pr.left()) {
- x = pr.left();
- } else {
- x = c.x();
- }
- } else {
- if (c.x() > pr.right()) {
- x = pr.right() + 1;
- } else if (c.x() < pr.left()) {
- x = pr.left();
- } else {
- x = c.x();
- }
+ if (c.x() > pr.right()) {
+ x = pr.right() + 1;
+ } else if (c.x() < pr.left()) {
+ x = pr.left();
+ } else {
+ x = c.x();
+ }
- if (c.y() > pr.bottom()) {
- y = pr.bottom() + 1;
- } else if (c.y() < pr.top()) {
- y = pr.top();
- } else {
- y = c.y();
+ if (c.y() > pr.bottom()) {
+ y = pr.bottom() + 1;
+ } else if (c.y() < pr.top()) {
+ y = pr.top();
+ } else {
+ y = c.y();
+ }
}
- }
- if (_mouse.zooming()) {
QPoint newp(x, y);
- QPainter p(view); // FIXME: Broken, just prepare and then trigger a
- // view->paint(GetPlotRegion());
+ QPainter p(view);
+
p.setRasterOp(Qt::NotROP);
if (_mouse.rectBigEnough()) {
p.drawWinFocusRect(_mouse.mouseRect());
@@ -4742,6 +4758,13 @@
}
setCursorForMode(view, newType, c);
+
+ if (newType == X_ZOOMBOX) {
+ updateXYGuideline(view, _mouse.lastGuideline, _mouse.tracker, GetPlotRegion(), X_ZOOMBOX);
+ } else if (newType == Y_ZOOMBOX) {
+ updateXYGuideline(view, _mouse.lastGuideline, _mouse.tracker, GetPlotRegion(), Y_ZOOMBOX);
+ }
+
e->accept();
}
@@ -5480,13 +5503,17 @@
}
break;
case Key_Shift:
- updateXYGuideline(view, _mouse.lastGuideline, _mouse.tracker, GetPlotRegion(), Y_ZOOMBOX);
- setCursorForMode(view, Y_ZOOMBOX, _mouse.tracker);
+ if (!_mouse.zooming()) {
+ updateXYGuideline(view, _mouse.lastGuideline, _mouse.tracker, GetPlotRegion(), Y_ZOOMBOX);
+ setCursorForMode(view, Y_ZOOMBOX, _mouse.tracker);
+ }
paint = false;
break;
case Key_Control:
- updateXYGuideline(view, _mouse.lastGuideline, _mouse.tracker, GetPlotRegion(), X_ZOOMBOX);
- setCursorForMode(view, X_ZOOMBOX, _mouse.tracker);
+ if (!_mouse.zooming()) {
+ updateXYGuideline(view, _mouse.lastGuideline, _mouse.tracker, GetPlotRegion(), X_ZOOMBOX);
+ setCursorForMode(view, X_ZOOMBOX, _mouse.tracker);
+ }
paint = false;
break;
default:
More information about the Kst
mailing list