summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMiikka Heikkinen <miikka.heikkinen@digia.com>2013-03-21 11:14:29 +0200
committerMiikka Heikkinen <miikka.heikkinen@digia.com>2013-03-21 11:14:29 +0200
commit77b53b7a51e4780228dc387c195298aef4088289 (patch)
tree2bfde4c7d64d3a6880a7f70cb7a9bb9a4ee34bec
parentba792163ba0ea5a013f7c6d7fe8530661e22721e (diff)
Prevent drawing shades off-chart
Task-number: QTRD-1931 Task-number: QTRD-1935 Reviewed-by: Mika Salmela
-rw-r--r--src/axis/horizontalaxis.cpp8
-rw-r--r--src/axis/verticalaxis.cpp8
2 files changed, 14 insertions, 2 deletions
diff --git a/src/axis/horizontalaxis.cpp b/src/axis/horizontalaxis.cpp
index 95b786d4..9dcd7750 100644
--- a/src/axis/horizontalaxis.cpp
+++ b/src/axis/horizontalaxis.cpp
@@ -164,7 +164,13 @@ void HorizontalAxis::updateGeometry()
//shades
if ((i + 1) % 2 && i > 1) {
QGraphicsRectItem *rectItem = static_cast<QGraphicsRectItem *>(shades.at(i / 2 - 1));
- rectItem->setRect(layout[i - 1], gridRect.top(), layout[i] - layout[i - 1], gridRect.height());
+ qreal leftBound = qMax(layout[i - 1], gridRect.left());
+ qreal rightBound = qMin(layout[i], gridRect.right());
+ rectItem->setRect(leftBound, gridRect.top(), rightBound - leftBound, gridRect.height());
+ if (rectItem->rect().width() <= 0.0)
+ rectItem->setVisible(false);
+ else
+ rectItem->setVisible(true);
}
// check if the grid line and the axis tick should be shown
diff --git a/src/axis/verticalaxis.cpp b/src/axis/verticalaxis.cpp
index 38a6107b..d3c5efa6 100644
--- a/src/axis/verticalaxis.cpp
+++ b/src/axis/verticalaxis.cpp
@@ -175,7 +175,13 @@ void VerticalAxis::updateGeometry()
//shades
if ((i + 1) % 2 && i > 1) {
QGraphicsRectItem *rectItem = static_cast<QGraphicsRectItem *>(shades.at(i / 2 - 1));
- rectItem->setRect(gridRect.left(), layout[i], gridRect.width(), layout[i - 1] - layout[i]);
+ qreal lowerBound = qMin(layout[i - 1], gridRect.bottom());
+ qreal upperBound = qMax(layout[i], gridRect.top());
+ rectItem->setRect(gridRect.left(), upperBound, gridRect.width(), lowerBound - upperBound);
+ if (rectItem->rect().height() <= 0.0)
+ rectItem->setVisible(false);
+ else
+ rectItem->setVisible(true);
}
// check if the grid line and the axis tick should be shown