X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=src%2Fknot.cpp;h=a8d694779bb7991af1d421f7228e94ed06bf5e99;hb=9c0a44bb47b022c4cdb319d697ccd5a42d3253dd;hp=01b1bafa2b844252e677d5f08ab53de5eb83a5a1;hpb=7ec336f9ebc67672a7ce7fb239bfcac7a631124b;p=inkscape.git diff --git a/src/knot.cpp b/src/knot.cpp index 01b1bafa2..a8d694779 100644 --- a/src/knot.cpp +++ b/src/knot.cpp @@ -31,7 +31,7 @@ #define KNOT_EVENT_MASK (GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | \ - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | \ + GDK_POINTER_MOTION_MASK | \ GDK_KEY_PRESS_MASK | GDK_KEY_RELEASE_MASK) static bool nograb = false; @@ -62,7 +62,6 @@ static void sp_knot_init(SPKnot *knot); static void sp_knot_dispose(GObject *object); static int sp_knot_handler(SPCanvasItem *item, GdkEvent *event, SPKnot *knot); -static void sp_knot_set_flag(SPKnot *knot, guint flag, bool set); static void sp_knot_set_ctrl_state(SPKnot *knot); static GObjectClass *parent_class; @@ -196,6 +195,7 @@ static void sp_knot_init(SPKnot *knot) knot->mode = SP_KNOT_MODE_XOR; knot->tip = NULL; knot->_event_handler_id = 0; + knot->pressure = 0; knot->fill[SP_KNOT_STATE_NORMAL] = 0xffffff00; knot->fill[SP_KNOT_STATE_MOUSEOVER] = 0xff0000ff; @@ -319,6 +319,7 @@ static int sp_knot_handler(SPCanvasItem *item, GdkEvent *event, SPKnot *knot) break; case GDK_BUTTON_RELEASE: if (event->button.button == 1) { + knot->pressure = 0; if (transform_escaped) { transform_escaped = false; consumed = TRUE; @@ -360,6 +361,11 @@ static int sp_knot_handler(SPCanvasItem *item, GdkEvent *event, SPKnot *knot) // motion notify coordinates as given (no snapping back to origin) within_tolerance = false; + if (gdk_event_get_axis (event, GDK_AXIS_PRESSURE, &knot->pressure)) + knot->pressure = CLAMP (knot->pressure, 0, 1); + else + knot->pressure = 0.5; + if (!moved) { g_signal_emit(knot, knot_signals[GRABBED], 0, @@ -415,7 +421,7 @@ static int sp_knot_handler(SPCanvasItem *item, GdkEvent *event, SPKnot *knot) g_signal_emit(knot, knot_signals[UNGRABBED], 0, event->button.state); - sp_document_undo(SP_DT_DOCUMENT(knot->desktop)); + sp_document_undo(sp_desktop_document(knot->desktop)); knot->desktop->messageStack()->flash(Inkscape::NORMAL_MESSAGE, _("Node or handle drag canceled.")); transform_escaped = true; consumed = TRUE; @@ -452,7 +458,7 @@ SPKnot *sp_knot_new(SPDesktop *desktop, const gchar *tip) knot->tip = g_strdup (tip); } - knot->item = sp_canvas_item_new(SP_DT_CONTROLS (desktop), + knot->item = sp_canvas_item_new(sp_desktop_controls (desktop), SP_TYPE_CTRL, "anchor", GTK_ANCHOR_CENTER, "size", 8.0, @@ -582,7 +588,7 @@ NR::Point sp_knot_position(SPKnot const *knot) /** * Set flag in knot, with side effects. */ -static void sp_knot_set_flag(SPKnot *knot, guint flag, bool set) +void sp_knot_set_flag(SPKnot *knot, guint flag, bool set) { g_assert(knot != NULL); g_assert(SP_IS_KNOT(knot));