diff options
| author | Johan B. C. Engelen <jbc.engelen@swissonline.ch> | 2007-12-23 23:08:39 +0000 |
|---|---|---|
| committer | johanengelen <johanengelen@users.sourceforge.net> | 2007-12-23 23:08:39 +0000 |
| commit | 637df5d871b3083986fb620ba7042a95f82213db (patch) | |
| tree | 88d5cd17362fc62134505c81d4521b5879328cdb /src/desktop-events.cpp | |
| parent | fix relative angle change in guideline dialog (diff) | |
| download | inkscape-637df5d871b3083986fb620ba7042a95f82213db.tar.gz inkscape-637df5d871b3083986fb620ba7042a95f82213db.zip | |
remember and use geom::point normal when dragging new guides
(bzr r4293)
Diffstat (limited to 'src/desktop-events.cpp')
| -rw-r--r-- | src/desktop-events.cpp | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/src/desktop-events.cpp b/src/desktop-events.cpp index bc2ffa530..eeb088160 100644 --- a/src/desktop-events.cpp +++ b/src/desktop-events.cpp @@ -44,6 +44,7 @@ static gint sp_dt_ruler_event(GtkWidget *widget, GdkEvent *event, SPDesktopWidge { static bool dragging = false; static SPCanvasItem *guide = NULL; + static Geom::Point normal; int wx, wy; SPDesktop *desktop = dtw->desktop; @@ -63,7 +64,8 @@ static gint sp_dt_ruler_event(GtkWidget *widget, GdkEvent *event, SPDesktopWidge sp_repr_set_boolean(repr, "showguides", TRUE); sp_repr_set_boolean(repr, "inkscape:guide-bbox", TRUE); - guide = sp_guideline_new(desktop->guides, event_dt.to_2geom(), horiz ? Geom::Point(0.,1.) : Geom::Point(1.,0.)); + normal = horiz ? Geom::Point(0.,1.) : Geom::Point(1.,0.); + guide = sp_guideline_new(desktop->guides, event_dt.to_2geom(), normal); sp_guideline_set_color(SP_GUIDELINE(guide), desktop->namedview->guidehicolor); gdk_pointer_grab(widget->window, FALSE, (GdkEventMask)(GDK_BUTTON_RELEASE_MASK | GDK_POINTER_MOTION_MASK ), @@ -77,7 +79,7 @@ static gint sp_dt_ruler_event(GtkWidget *widget, GdkEvent *event, SPDesktopWidge NR::Point event_dt(desktop->w2d(event_w)); SnapManager const &m = desktop->namedview->snap_manager; - event_dt = m.guideSnap(event_dt, component_vectors[horiz ? NR::Y : NR::X]).getPoint(); + event_dt = m.guideSnap(event_dt, normal).getPoint(); sp_guideline_set_position(SP_GUIDELINE(guide), event_dt.to_2geom()); desktop->set_coordinate_status(event_dt); @@ -91,7 +93,7 @@ static gint sp_dt_ruler_event(GtkWidget *widget, GdkEvent *event, SPDesktopWidge NR::Point event_dt(desktop->w2d(event_w)); SnapManager const &m = desktop->namedview->snap_manager; - event_dt = m.guideSnap(event_dt, component_vectors[horiz ? NR::Y : NR::X]).getPoint(); + event_dt = m.guideSnap(event_dt, normal).getPoint(); dragging = false; gtk_object_destroy(GTK_OBJECT(guide)); @@ -99,7 +101,7 @@ static gint sp_dt_ruler_event(GtkWidget *widget, GdkEvent *event, SPDesktopWidge if ((horiz ? wy : wx) >= 0) { Inkscape::XML::Document *xml_doc = sp_document_repr_doc(desktop->doc()); Inkscape::XML::Node *repr = xml_doc->createElement("sodipodi:guide"); - repr->setAttribute("orientation", (horiz) ? "horizontal" : "vertical"); + sp_repr_set_point(repr, "orientation", normal); sp_repr_set_point(repr, "position", event_dt.to_2geom()); SP_OBJECT_REPR(desktop->namedview)->appendChild(repr); Inkscape::GC::release(repr); |
