summaryrefslogtreecommitdiffstats
path: root/src/widgets/desktop-widget.cpp
diff options
context:
space:
mode:
authorAlex Valavanis <valavanisalex@gmail.com>2012-12-31 13:38:00 +0000
committerAlex Valavanis <valavanisalex@gmail.com>2012-12-31 13:38:00 +0000
commitcf96e2170b696c55977ed90b020813684b9d0000 (patch)
treed27de59d5ebf9eff22b3c054e8c81c96a65a114f /src/widgets/desktop-widget.cpp
parentReplace C-style pointer casts in event contexts (diff)
downloadinkscape-cf96e2170b696c55977ed90b020813684b9d0000.tar.gz
inkscape-cf96e2170b696c55977ed90b020813684b9d0000.zip
rulers: (Merge from GIMP) Set range in ruler units, not in px
(bzr r12002)
Diffstat (limited to 'src/widgets/desktop-widget.cpp')
-rw-r--r--src/widgets/desktop-widget.cpp16
1 files changed, 5 insertions, 11 deletions
diff --git a/src/widgets/desktop-widget.cpp b/src/widgets/desktop-widget.cpp
index 8f7b6445c..a22786b2a 100644
--- a/src/widgets/desktop-widget.cpp
+++ b/src/widgets/desktop-widget.cpp
@@ -1696,23 +1696,17 @@ SPDesktopWidget::viewSetPosition (Geom::Point p)
void
sp_desktop_widget_update_rulers (SPDesktopWidget *dtw)
{
- /* The viewbox (in integers) must exactly match the size of SPCanvasbuf's pixel buffer.
- * This is important because the former is being used for drawing the ruler, whereas
- * the latter is used for drawing e.g. the grids and guides. Only when the viewbox
- * coincides with the pixel buffer, everything will line up nicely.
- */
- Geom::IntRect viewbox = dtw->canvas->getViewboxIntegers();
+ Geom::Rect viewbox = dtw->desktop->get_display_area();
- double const scale = dtw->desktop->current_zoom();
- double lower_x = viewbox.min()[Geom::X] / scale - dtw->ruler_origin[Geom::X];
- double upper_x = viewbox.max()[Geom::X] / scale - dtw->ruler_origin[Geom::X];
+ double lower_x = dtw->dt2r * (viewbox.left() - dtw->ruler_origin[Geom::X]);
+ double upper_x = dtw->dt2r * (viewbox.right() - dtw->ruler_origin[Geom::X]);
sp_ruler_set_range(SP_RULER(dtw->hruler),
lower_x,
upper_x,
(upper_x - lower_x));
- double lower_y = viewbox.min()[Geom::Y] / -scale - dtw->ruler_origin[Geom::Y];
- double upper_y = viewbox.max()[Geom::Y] / -scale - dtw->ruler_origin[Geom::Y];
+ double lower_y = dtw->dt2r * (viewbox.bottom() - dtw->ruler_origin[Geom::Y]);
+ double upper_y = dtw->dt2r * (viewbox.top() - dtw->ruler_origin[Geom::Y]);
sp_ruler_set_range(SP_RULER(dtw->vruler),
lower_y,
upper_y,