diff --git a/src/select-context.cpp b/src/select-context.cpp
index f6abf44f5a562c845507b7054ba7d0e5d1b7d9f5..c8186b1fd1ef4b86c15ea6ceb1390c6ba91738c1 100644 (file)
--- 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
}
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;
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));
}
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;
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)) {
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;
ret = TRUE;
}
break;
+ case GDK_s:
+ case GDK_S:
+ if (MOD__SHIFT_ONLY) {
+ if (!selection->isEmpty()) {
+ seltrans->increaseState();
+ }
+ ret = TRUE;
+ }
+ break;
default:
break;
}