X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=src%2Fselect-context.cpp;h=c8186b1fd1ef4b86c15ea6ceb1390c6ba91738c1;hb=1ed9f185c8ae0efc48813e56e431d389561a4b5c;hp=f6abf44f5a562c845507b7054ba7d0e5d1b7d9f5;hpb=ed2c439f58450c5fc83721e4f11766e91f161394;p=inkscape.git diff --git a/src/select-context.cpp b/src/select-context.cpp index f6abf44f5..c8186b1fd 100644 --- a/src/select-context.cpp +++ b/src/select-context.cpp @@ -299,7 +299,7 @@ sp_select_context_item_handler(SPEventContext *event_context, SPItem *item, GdkE switch (event->type) { case GDK_BUTTON_PRESS: - if (event->button.button == 1) { + if (event->button.button == 1 && !event_context->space_panning) { /* Left mousebutton */ // save drag origin @@ -428,7 +428,7 @@ sp_select_context_root_handler(SPEventContext *event_context, GdkEvent *event) } break; case GDK_BUTTON_PRESS: - if (event->button.button == 1) { + if (event->button.button == 1 && !event_context->space_panning) { // save drag origin xp = (gint) event->button.x; @@ -466,7 +466,7 @@ sp_select_context_root_handler(SPEventContext *event_context, GdkEvent *event) break; case GDK_MOTION_NOTIFY: - if (event->motion.state & GDK_BUTTON1_MASK) { + if (event->motion.state & GDK_BUTTON1_MASK && !event_context->space_panning) { NR::Point const motion_pt(event->motion.x, event->motion.y); NR::Point const p(desktop->w2d(motion_pt)); @@ -519,9 +519,8 @@ sp_select_context_root_handler(SPEventContext *event_context, GdkEvent *event) } if (!seltrans->isEmpty()) seltrans->moveTo(p, event->button.state); - if (desktop->scroll_to_point(&p)) - // unfortunately in complex drawings, gobbling results in losing grab of the object, for some mysterious reason - ; //gobble_motion_events(GDK_BUTTON1_MASK); + desktop->scroll_to_point(&p); + gobble_motion_events(GDK_BUTTON1_MASK); ret = TRUE; } else { sc->dragging = FALSE; @@ -543,7 +542,7 @@ sp_select_context_root_handler(SPEventContext *event_context, GdkEvent *event) break; case GDK_BUTTON_RELEASE: xp = yp = 0; - if ((event->button.button == 1) && (sc->grabbed)) { + if ((event->button.button == 1) && (sc->grabbed) && !event_context->space_panning) { if (sc->dragging) { if (sc->moved) { // item has been moved @@ -627,10 +626,11 @@ sp_select_context_root_handler(SPEventContext *event_context, GdkEvent *event) } else if ((sc->button_press_ctrl || sc->button_press_alt) && !rb_escaped && !drag_escaped) { // ctrl+click, alt+click - sc->button_press_ctrl = FALSE; - item = sp_event_context_find_item (desktop, - NR::Point(event->button.x, event->button.y), event->button.state & GDK_MOD1_MASK, TRUE); + NR::Point(event->button.x, event->button.y), sc->button_press_alt, sc->button_press_ctrl); + + sc->button_press_ctrl = FALSE; + sc->button_press_alt = FALSE; if (item) { if (selection->includes(item)) { @@ -660,6 +660,9 @@ sp_select_context_root_handler(SPEventContext *event_context, GdkEvent *event) desktop->updateNow(); } + if (event->button.button == 1) { + Inkscape::Rubberband::get()->stop(); // might have been started in another tool! + } sc->button_press_shift = false; sc->button_press_ctrl = false; sc->button_press_alt = false; @@ -854,6 +857,15 @@ sp_select_context_root_handler(SPEventContext *event_context, GdkEvent *event) ret = TRUE; } break; + case GDK_s: + case GDK_S: + if (MOD__SHIFT_ONLY) { + if (!selection->isEmpty()) { + seltrans->increaseState(); + } + ret = TRUE; + } + break; default: break; }