X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=src%2Fknotholder.cpp;h=d8776cca7219db5a91f417fbdd32f7c55bd28c9d;hb=03a65c733a473cd92d50132961d02c3910417f72;hp=ff6a819702bfc8711c75142637c48fac03565156;hpb=632bae8d9b9bf8a63b1ad428e6e2d89ab9fd9a42;p=inkscape.git diff --git a/src/knotholder.cpp b/src/knotholder.cpp index ff6a81970..d8776cca7 100644 --- a/src/knotholder.cpp +++ b/src/knotholder.cpp @@ -20,7 +20,19 @@ #include "knot.h" #include "knotholder.h" #include "knot-holder-entity.h" +#include "rect-context.h" +#include "sp-rect.h" +#include "arc-context.h" +#include "sp-ellipse.h" +#include "star-context.h" +#include "sp-star.h" +#include "spiral-context.h" +#include "sp-spiral.h" +#include "sp-offset.h" +#include "box3d.h" + #include +#include class SPDesktop; @@ -183,7 +195,8 @@ void sp_knot_holder_add_full( * \param p In desktop coordinates. */ -static void knotholder_update_knots(SPKnotHolder *knot_holder, SPItem *item) +//static +void knotholder_update_knots(SPKnotHolder *knot_holder, SPItem *item) { NR::Matrix const i2d(sp_item_i2d_affine(item)); @@ -221,8 +234,28 @@ static void knot_clicked_handler(SPKnot *knot, guint state, gpointer data) knotholder_update_knots(knot_holder, item); g_object_unref(knot_holder); + unsigned int object_verb = SP_VERB_NONE; + + if (SP_IS_RECT(item)) + object_verb = SP_VERB_CONTEXT_RECT; + else if (SP_IS_3DBOX(item)) + object_verb = SP_VERB_CONTEXT_3DBOX; + else if (SP_IS_GENERICELLIPSE(item)) + object_verb = SP_VERB_CONTEXT_ARC; + else if (SP_IS_STAR(item)) + object_verb = SP_VERB_CONTEXT_STAR; + else if (SP_IS_SPIRAL(item)) + object_verb = SP_VERB_CONTEXT_SPIRAL; + else if (SP_IS_OFFSET(item)) { + if (SP_OFFSET(item)->sourceHref) + object_verb = SP_VERB_SELECTION_LINKED_OFFSET; + else + object_verb = SP_VERB_SELECTION_DYNAMIC_OFFSET; + } + // for drag, this is done by ungrabbed_handler, but for click we must do it here - sp_document_done(SP_OBJECT_DOCUMENT(knot_holder->item)); + sp_document_done(SP_OBJECT_DOCUMENT(knot_holder->item), object_verb, + _("Change handle")); } static void knot_moved_handler(SPKnot *knot, NR::Point const *p, guint state, gpointer data) @@ -255,7 +288,28 @@ static void knot_ungrabbed_handler(SPKnot *knot, unsigned int state, SPKnotHolde } else { SPObject *object = (SPObject *) kh->item; object->updateRepr(object->repr, SP_OBJECT_WRITE_EXT); - sp_document_done(SP_OBJECT_DOCUMENT (object)); + + unsigned int object_verb = SP_VERB_NONE; + + if (SP_IS_RECT(object)) + object_verb = SP_VERB_CONTEXT_RECT; + else if (SP_IS_3DBOX(object)) + object_verb = SP_VERB_CONTEXT_3DBOX; + else if (SP_IS_GENERICELLIPSE(object)) + object_verb = SP_VERB_CONTEXT_ARC; + else if (SP_IS_STAR(object)) + object_verb = SP_VERB_CONTEXT_STAR; + else if (SP_IS_SPIRAL(object)) + object_verb = SP_VERB_CONTEXT_SPIRAL; + else if (SP_IS_OFFSET(object)) { + if (SP_OFFSET(object)->sourceHref) + object_verb = SP_VERB_SELECTION_LINKED_OFFSET; + else + object_verb = SP_VERB_SELECTION_DYNAMIC_OFFSET; + } + + sp_document_done(SP_OBJECT_DOCUMENT (object), object_verb, + _("Move handle")); } }