Commit 9cce755e authored by Carlos Soriano Sánchez's avatar Carlos Soriano Sánchez
Browse files

canvas-container: fix desktop snapping

To snap an icon to the closest grid cell, we were trying to round
the x position with an offset of 0.5. However, cells are not
normalized, so that 0.5 is actually doing little to round the
position.

This is making the icons to snap to the right closest cell once the
user drags more the icon left to the current cell.

The actual size of the cell is SNAP_SIZE_*, so to fix this use half
of the SNAP_SIZE to "round" the number.

https://bugzilla.gnome.org/show_bug.cgi?id=750446
parent 2b01cffe
......@@ -109,8 +109,8 @@
#define SNAP_HORIZONTAL(func,x) ((func ((double)((x) - DESKTOP_PAD_HORIZONTAL) / SNAP_SIZE_X) * SNAP_SIZE_X) + DESKTOP_PAD_HORIZONTAL)
#define SNAP_VERTICAL(func, y) ((func ((double)((y) - DESKTOP_PAD_VERTICAL) / SNAP_SIZE_Y) * SNAP_SIZE_Y) + DESKTOP_PAD_VERTICAL)
#define SNAP_NEAREST_HORIZONTAL(x) SNAP_HORIZONTAL (floor, x + .5)
#define SNAP_NEAREST_VERTICAL(y) SNAP_VERTICAL (floor, y + .5)
#define SNAP_NEAREST_HORIZONTAL(x) SNAP_HORIZONTAL (floor, x + SNAP_SIZE_X / 2)
#define SNAP_NEAREST_VERTICAL(y) SNAP_VERTICAL (floor, y + SNAP_SIZE_Y / 2)
#define SNAP_CEIL_HORIZONTAL(x) SNAP_HORIZONTAL (ceil, x)
#define SNAP_CEIL_VERTICAL(y) SNAP_VERTICAL (ceil, y)
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment