[Kst] [Bug 131683] Guideline is wrongly drawn after zoom operation
Andrew Walker
arwalker at sumusltd.com
Thu Aug 3 22:44:11 CEST 2006
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.
http://bugs.kde.org/show_bug.cgi?id=131683
arwalker sumusltd com changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|NEW |RESOLVED
Resolution| |FIXED
------- Additional Comments From arwalker sumusltd com 2006-08-03 22:44 -------
SVN commit 569441 by arwalker:
BUG:131683 No longer draw spurious guidelines. Draw guideline immediately upon pressing shift or control key. Erase the guideline correctly after releasing the shift or control key.
M +44 -32 kst2dplot.cpp
--- trunk/extragear/graphics/kst/src/libkstapp/kst2dplot.cpp #569440:569441
@ -2395,10 +2395,8 @
if (view && GetPlotRegion().contains(_mouse.tracker)) {
if (gzType == X_ZOOMBOX || gzType == Y_ZOOMBOX) {
updateXYGuideline(view, QPoint(-1, -1), view->mapFromGlobal(QCursor::pos()), GetPlotRegion(), gzType);
- _mouse.lastGuideline = view->mapFromGlobal(QCursor::pos());
} else if (gzType == XY_ZOOMBOX) {
updateXYGuideline(view, QPoint(-1, -1), view->mapFromGlobal(QCursor::pos()), GetPlotRegion(), gzType);
- _mouse.lastGuideline = view->mapFromGlobal(QCursor::pos());
}
}
}
@ -3991,31 +3989,31 @
QPen newPen(Qt::black, 1, Qt::DotLine);
p.setPen(newPen);
p.setRasterOp(Qt::NotROP);
- if (gzType == X_ZOOMBOX) {
- if (pr.contains(oldPos)) {
- if (_mouse.lastGuidelineType == X_ZOOMBOX) {
- p.drawLine(oldPos.x(), pr.top(), oldPos.x(), pr.bottom());
- } else if (_mouse.lastGuidelineType == Y_ZOOMBOX) {
- p.drawLine(pr.left(), oldPos.y(), pr.right(), oldPos.y());
- }
+
+ if (pr.contains(oldPos)) {
+ if (_mouse.lastGuidelineType == X_ZOOMBOX) {
+ p.drawLine(oldPos.x(), pr.top(), oldPos.x(), pr.bottom());
+ } else if (_mouse.lastGuidelineType == Y_ZOOMBOX) {
+ p.drawLine(pr.left(), oldPos.y(), pr.right(), oldPos.y());
}
- if (pr.contains(newPos)) {
+ }
+
+ _mouse.lastGuideline = QPoint(-1, -1);
+
+ if (pr.contains(newPos)) {
+ printf("a\n");
+ if (gzType == X_ZOOMBOX) {
p.drawLine(newPos.x(), pr.top(), newPos.x(), pr.bottom());
- }
- } else {
- if (pr.contains(oldPos)) {
- if (_mouse.lastGuidelineType == X_ZOOMBOX) {
- p.drawLine(oldPos.x(), pr.top(), oldPos.x(), pr.bottom());
- } else if (_mouse.lastGuidelineType == Y_ZOOMBOX) {
- p.drawLine(pr.left(), oldPos.y(), pr.right(), oldPos.y());
- }
- }
- if (pr.contains(newPos)) {
+ _mouse.lastGuidelineType = gzType;
+ _mouse.lastGuideline = newPos;
+ } else if (gzType == Y_ZOOMBOX) {
p.drawLine(pr.left(), newPos.y(), pr.right(), newPos.y());
+ _mouse.lastGuidelineType = gzType;
+ _mouse.lastGuideline = newPos;
}
}
+
p.end();
- _mouse.lastGuidelineType = gzType;
}
@ -4038,28 +4036,21 @
ButtonState s = e->stateAfter();
if (s == 0) {
updateXYGuideline(view, _mouse.lastGuideline, _mouse.tracker, pr, gzType);
- _mouse.lastGuideline = _mouse.tracker;
} else if (s & Qt::ShiftButton) {
updateXYGuideline(view, _mouse.lastGuideline, _mouse.tracker, pr, Y_ZOOMBOX);
- _mouse.lastGuideline = _mouse.tracker;
} else if (s & Qt::ControlButton) {
updateXYGuideline(view, _mouse.lastGuideline, _mouse.tracker, pr, X_ZOOMBOX);
- _mouse.lastGuideline = _mouse.tracker;
} else {
updateXYGuideline(view, _mouse.lastGuideline, QPoint(-1, -1), pr, gzType);
- _mouse.lastGuideline = QPoint(-1, -1);
}
} else if (gzType == XY_ZOOMBOX) {
- ButtonState s = e->stateAfter();
+ ButtonState s = e->stateAfter();
if (s & Qt::ShiftButton) {
updateXYGuideline(view, _mouse.lastGuideline, _mouse.tracker, pr, Y_ZOOMBOX);
- _mouse.lastGuideline = _mouse.tracker;
} else if (s & Qt::ControlButton) {
updateXYGuideline(view, _mouse.lastGuideline, _mouse.tracker, pr, X_ZOOMBOX);
- _mouse.lastGuideline = _mouse.tracker;
} else {
updateXYGuideline(view, _mouse.lastGuideline, QPoint(-1, -1), pr, gzType);
- _mouse.lastGuideline = QPoint(-1, -1);
}
}
@ -4445,7 +4436,8 @
KstMouseModeType newType = globalZoomType();
QPoint c = _mouse.lastLocation;
QRect pr = GetPlotRegion();
- int x = _mouse.pressLocation.x(), y = _mouse.pressLocation.y();
+ int x = _mouse.pressLocation.x();
+ int y = _mouse.pressLocation.y();
if (newType == Y_ZOOMBOX) {
if (c.y() > pr.bottom()) {
@ -4495,6 +4487,13 @
p.drawWinFocusRect(_mouse.mouseRect());
}
}
+
+ if (e->key() == Key_Shift) {
+ updateXYGuideline(view, _mouse.lastGuideline, QPoint(-1, -1), GetPlotRegion(), Y_ZOOMBOX);
+ } else if (e->key() == Key_Control) {
+ updateXYGuideline(view, _mouse.lastGuideline, QPoint(-1, -1), GetPlotRegion(), X_ZOOMBOX);
+ }
+
setCursorForMode(view, newType, c);
e->accept();
}
@ -5080,7 +5079,8 @
void Kst2DPlot::keyPressEvent(QWidget *vw, QKeyEvent *e) {
KstViewWidget *view = static_cast<KstViewWidget*>(vw);
bool handled = true;
-
+ bool paint = true;
+
ButtonState s = e->stateAfter();
QPoint cursorPos = _mouse.tracker;
switch (e->key()) {
@ -5213,13 +5213,25 @
setDirty();
}
break;
+ case Key_Shift:
+ 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);
+ paint = false;
+ break;
default:
handled = false;
break;
}
if (handled) {
- view->paint();
+ if (paint) {
+ view->paint();
+ }
e->accept();
//emit modified();
return;
More information about the Kst
mailing list