summaryrefslogtreecommitdiffstats
path: root/src/ui/tools/tool-base.cpp
diff options
context:
space:
mode:
authorJabier Arraiza Cenoz <jabier.arraiza@marker.es>2016-10-23 18:04:23 +0000
committerjabiertxof <info@marker.es>2016-10-23 18:04:23 +0000
commit74edf9fcbc3106cccddb2a293275748fefa08f0b (patch)
tree8c845140695374fe18bf2243a37883e5a4db1f6a /src/ui/tools/tool-base.cpp
parentAdd doc rotate with panning (diff)
downloadinkscape-74edf9fcbc3106cccddb2a293275748fefa08f0b.tar.gz
inkscape-74edf9fcbc3106cccddb2a293275748fefa08f0b.zip
Add right click rotation panning
(bzr r15142.1.22)
Diffstat (limited to 'src/ui/tools/tool-base.cpp')
-rw-r--r--src/ui/tools/tool-base.cpp11
1 files changed, 5 insertions, 6 deletions
diff --git a/src/ui/tools/tool-base.cpp b/src/ui/tools/tool-base.cpp
index 87f808039..33c0492d7 100644
--- a/src/ui/tools/tool-base.cpp
+++ b/src/ui/tools/tool-base.cpp
@@ -334,7 +334,6 @@ bool ToolBase::root_handler(GdkEvent* event) {
/// @todo REmove redundant /value in preference keys
tolerance = prefs->getIntLimited("/options/dragtolerance/value", 0, 0, 100);
bool allow_panning = prefs->getBool("/options/spacebarpans/value");
- bool clear = true;
gint ret = FALSE;
switch (event->type) {
@@ -346,7 +345,6 @@ bool ToolBase::root_handler(GdkEvent* event) {
} else {
/* sp_desktop_dialog(); */
}
- desktop->canvas->clearRotateTo();
break;
case GDK_BUTTON_PRESS:
@@ -434,14 +432,13 @@ bool ToolBase::root_handler(GdkEvent* event) {
| GDK_POINTER_MOTION_HINT_MASK, NULL,
event->motion.time - 1);
} else if (this->space_panning && event->motion.state & GDK_BUTTON3_MASK) {
- clear = false;
sp_canvas_item_ungrab(SP_CANVAS_ITEM(desktop->acetate), event->button.time);
desktop->canvas->startRotateTo(desktop->namedview->document_rotation);
button_w = Geom::Point(event->motion.x, event->motion.y);
- Geom::Point const motion_dt(desktop->w2d(button_w));
+ Geom::Point const motion_dt(desktop->doc2dt(desktop->w2d(button_w)));
Geom::Rect view = desktop->get_display_area();
Geom::Point view_center = desktop->doc2dt(view.midpoint());
- Geom::Ray center_ray(view_center, motion_dt);
+ Geom::Ray center_ray(motion_dt, view_center);
desktop->canvas->startRotateTo(desktop->namedview->document_rotation);
angle = Geom::deg_from_rad(center_ray.angle()) - 90;
if (event->motion.state & GDK_SHIFT_MASK && event->motion.state & GDK_CONTROL_MASK) {
@@ -583,6 +580,7 @@ bool ToolBase::root_handler(GdkEvent* event) {
ret = TRUE;
}
}
+ desktop->canvas->clearRotateTo();
break;
case GDK_KEY_PRESS: {
@@ -752,6 +750,7 @@ bool ToolBase::root_handler(GdkEvent* event) {
switch (get_group0_keyval(&event->key)) {
case GDK_KEY_space:
+ desktop->canvas->clearRotateTo();
if (within_tolerance) {
// Space was pressed, but not panned
sp_toggle_selector(desktop);
@@ -773,6 +772,7 @@ bool ToolBase::root_handler(GdkEvent* event) {
default:
break;
}
+ desktop->canvas->clearRotateTo();
break;
case GDK_SCROLL: {
@@ -856,7 +856,6 @@ bool ToolBase::root_handler(GdkEvent* event) {
default:
break;
}
- desktop->canvas->clearRotateTo(clear);
return ret;
}