diff options
| author | Diederik van Lierop <mail@diedenrezi.nl> | 2009-01-25 13:35:08 +0000 |
|---|---|---|
| committer | dvlierop2 <dvlierop2@users.sourceforge.net> | 2009-01-25 13:35:08 +0000 |
| commit | 3b35e676c9107f8627587365f6e01ebf0093e9c5 (patch) | |
| tree | 8e5d306024820cf9b2adf2e5b4d4735959c8803e /src/rect-context.cpp | |
| parent | removing void files (diff) | |
| download | inkscape-3b35e676c9107f8627587365f6e01ebf0093e9c5.tar.gz inkscape-3b35e676c9107f8627587365f6e01ebf0093e9c5.zip | |
- The snap-delay mechanism should now be more robust. From now on, it must be turned on and off explicitely within each context. This prevents delayed snapping events from being fired after the context or context's state has changed.
- Creating single dots now snaps
(bzr r7172)
Diffstat (limited to 'src/rect-context.cpp')
| -rw-r--r-- | src/rect-context.cpp | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/src/rect-context.cpp b/src/rect-context.cpp index 65292851b..c63e1dc2a 100644 --- a/src/rect-context.cpp +++ b/src/rect-context.cpp @@ -151,7 +151,7 @@ void sp_rect_context_selection_changed(Inkscape::Selection *selection, gpointer SPEventContext *ec = SP_EVENT_CONTEXT(rc); ec->shape_editor->unset_item(SH_KNOTHOLDER); - SPItem *item = selection->singleItem(); + SPItem *item = selection->singleItem(); ec->shape_editor->set_item(item, SH_KNOTHOLDER); } @@ -257,17 +257,18 @@ static gint sp_rect_context_root_handler(SPEventContext *event_context, GdkEvent event_context->item_to_select = sp_event_context_find_item (desktop, button_w, event->button.state & GDK_MOD1_MASK, TRUE); dragging = true; + sp_canvas_set_snap_delay_active(desktop->canvas, true); /* Position center */ Geom::Point button_dt(desktop->w2d(button_w)); rc->center = from_2geom(button_dt); - + /* Snap center */ SnapManager &m = desktop->namedview->snap_manager; m.setup(desktop); m.freeSnapReturnByRef(Inkscape::SnapPreferences::SNAPPOINT_NODE, button_dt); rc->center = from_2geom(button_dt); - + sp_canvas_item_grab(SP_CANVAS_ITEM(desktop->acetate), ( GDK_KEY_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | @@ -275,7 +276,7 @@ static gint sp_rect_context_root_handler(SPEventContext *event_context, GdkEvent GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK ), NULL, event->button.time); - + ret = TRUE; } break; @@ -295,7 +296,7 @@ static gint sp_rect_context_root_handler(SPEventContext *event_context, GdkEvent Geom::Point const motion_w(event->motion.x, event->motion.y); Geom::Point motion_dt(desktop->w2d(motion_w)); - + sp_rect_drag(*rc, motion_dt, event->motion.state); // this will also handle the snapping gobble_motion_events(GDK_BUTTON1_MASK); ret = TRUE; @@ -305,6 +306,7 @@ static gint sp_rect_context_root_handler(SPEventContext *event_context, GdkEvent event_context->xp = event_context->yp = 0; if (event->button.button == 1 && !event_context->space_panning) { dragging = false; + sp_canvas_set_snap_delay_active(desktop->canvas, false); if (!event_context->within_tolerance) { // we've been dragging, finish the rect @@ -379,6 +381,7 @@ static gint sp_rect_context_root_handler(SPEventContext *event_context, GdkEvent sp_canvas_item_ungrab(SP_CANVAS_ITEM(desktop->acetate), event->button.time); dragging = false; + sp_canvas_set_snap_delay_active(desktop->canvas, false); if (!event_context->within_tolerance) { // we've been dragging, finish the rect sp_rect_finish(rc); |
