summaryrefslogtreecommitdiffstats
path: root/src/widgets/desktop-widget.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/widgets/desktop-widget.cpp')
-rw-r--r--src/widgets/desktop-widget.cpp17
1 files changed, 11 insertions, 6 deletions
diff --git a/src/widgets/desktop-widget.cpp b/src/widgets/desktop-widget.cpp
index 40bada366..32ca1bac2 100644
--- a/src/widgets/desktop-widget.cpp
+++ b/src/widgets/desktop-widget.cpp
@@ -1713,14 +1713,19 @@ SPDesktopWidget* SPDesktopWidget::createInstance(SPDocument *document)
void
SPDesktopWidget::update_rulers()
{
- Geom::Rect viewbox = desktop->get_display_area();
+ Geom::Rect viewbox = desktop->get_display_area(true);
+ // "true" means: Use integer values of the canvas for calculating the display area, similar
+ // to the integer values used for positioning the grid lines. (see SPCanvas::scrollTo(),
+ // where ix and iy are rounded integer values; these values are stored in SPCanvasBuf->rect,
+ // and used for drawing the grid). By using the integer values here too, the ruler ticks
+ // will be perfectly aligned to the grid
double lower_x = _dt2r * (viewbox.left() - _ruler_origin[Geom::X]);
double upper_x = _dt2r * (viewbox.right() - _ruler_origin[Geom::X]);
sp_ruler_set_range(SP_RULER(_hruler->gobj()),
- lower_x,
- upper_x,
- (upper_x - lower_x));
+ lower_x,
+ upper_x,
+ upper_x - lower_x);
double lower_y = _dt2r * (viewbox.bottom() - _ruler_origin[Geom::Y]);
double upper_y = _dt2r * (viewbox.top() - _ruler_origin[Geom::Y]);
@@ -1729,8 +1734,8 @@ SPDesktopWidget::update_rulers()
}
sp_ruler_set_range(SP_RULER(_vruler->gobj()),
lower_y,
- upper_y,
- (upper_y - lower_y));
+ upper_y,
+ upper_y - lower_y);
}