diff options
| author | Diederik van Lierop <mail@diedenrezi.nl> | 2007-08-28 20:07:38 +0000 |
|---|---|---|
| committer | dvlierop2 <dvlierop2@users.sourceforge.net> | 2007-08-28 20:07:38 +0000 |
| commit | 73d24d066094549193e1ceda7daa244e5c0dc1e8 (patch) | |
| tree | af1cad39ed909961d1fd2f22c27651f3c6bc0b1d /src/desktop-events.cpp | |
| parent | remove debug and example LPE files from POTFILES.in (diff) | |
| download | inkscape-73d24d066094549193e1ceda7daa244e5c0dc1e8.tar.gz inkscape-73d24d066094549193e1ceda7daa244e5c0dc1e8.zip | |
Implement snapping of guides while dragging them, and snap TO item centers (we only had snapping FROM item centers so far)
(bzr r3603)
Diffstat (limited to 'src/desktop-events.cpp')
| -rw-r--r-- | src/desktop-events.cpp | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/src/desktop-events.cpp b/src/desktop-events.cpp index a10264811..7f9ce0b04 100644 --- a/src/desktop-events.cpp +++ b/src/desktop-events.cpp @@ -30,6 +30,7 @@ #include "message-context.h" #include "xml/repr.h" #include "dialogs/guidelinedialog.h" +#include "snap.h" /* Root item handler */ @@ -165,7 +166,11 @@ gint sp_dt_guide_event(SPCanvasItem *item, GdkEvent *event, gpointer data) if (dragging) { NR::Point const motion_w(event->motion.x, event->motion.y); - NR::Point const motion_dt(desktop->w2d(motion_w)); + NR::Point motion_dt(desktop->w2d(motion_w)); + + SnapManager const &m = desktop->namedview->snap_manager; + motion_dt = m.guideSnap(motion_dt, *guide).getPoint(); + sp_guide_moveto(*guide, sp_guide_position_from_pt(guide, motion_dt), false); moved = true; desktop->set_coordinate_status(motion_dt); @@ -178,7 +183,14 @@ gint sp_dt_guide_event(SPCanvasItem *item, GdkEvent *event, gpointer data) if (moved) { NR::Point const event_w(event->button.x, event->button.y); - NR::Point const event_dt(desktop->w2d(event_w)); + NR::Point event_dt(desktop->w2d(event_w)); + + //If we don't snap here again, it will end up at the current mouse position + //whereas it might have been at a snapped position a millisecond before. + //See GDK_MOTION_NOTIFY above. Why's that???? + SnapManager const &m = desktop->namedview->snap_manager; + event_dt = m.guideSnap(event_dt, *guide).getPoint(); + if (sp_canvas_world_pt_inside_window(item->canvas, event_w)) { sp_guide_moveto(*guide, sp_guide_position_from_pt(guide, event_dt), true); sp_document_done(sp_desktop_document(desktop), SP_VERB_NONE, |
