aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPřemysl Janouch <p.janouch@gmail.com>2011-02-05 20:17:39 +0100
committerPřemysl Janouch <p.janouch@gmail.com>2011-02-05 20:17:39 +0100
commit2dcf578c120e3dab375bbe345f0f8f5bac151be9 (patch)
treede516f0d4adaa58d3a0adcafcda27173b03db713
parentdca71f66c3cf65537017d5add98617a60235e5d7 (diff)
downloadlogdiag-2dcf578c120e3dab375bbe345f0f8f5bac151be9.tar.gz
logdiag-2dcf578c120e3dab375bbe345f0f8f5bac151be9.tar.xz
logdiag-2dcf578c120e3dab375bbe345f0f8f5bac151be9.zip
Use correct rounding when moving selection.
-rw-r--r--liblogdiag/ld-canvas.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/liblogdiag/ld-canvas.c b/liblogdiag/ld-canvas.c
index 4238876..b449560 100644
--- a/liblogdiag/ld-canvas.c
+++ b/liblogdiag/ld-canvas.c
@@ -1390,14 +1390,17 @@ static void
oper_move_selection_motion (LdCanvas *self, gdouble x, gdouble y)
{
MoveSelectionData *data;
- gdouble scale, move_x, move_y;
+ gdouble scale, dx, dy, move_x, move_y;
gdouble move = FALSE;
scale = ld_canvas_get_scale_in_px (self);
data = &OPER_DATA (self, move_selection);
- move_x = floor ((x - data->move_origin.x) / scale);
- move_y = floor ((y - data->move_origin.y) / scale);
+ dx = x - data->move_origin.x;
+ dy = y - data->move_origin.y;
+
+ move_x = dx < 0 ? ceil (dx / scale) : floor (dx / scale);
+ move_y = dy < 0 ? ceil (dy / scale) : floor (dy / scale);
if (ABS (move_x) >= 1)
{