summaryrefslogtreecommitdiffstats
path: root/src/display
diff options
context:
space:
mode:
authorJabier Arraiza Cenoz <jabier.arraiza@marker.es>2016-10-23 14:33:23 +0000
committerjabiertxof <info@marker.es>2016-10-23 14:33:23 +0000
commit6744c4d18446fad6d84973f97491634a09215afd (patch)
treedac0e801da12706130b64b55c9336274a6a72aa9 /src/display
parentAdd right click attempt (diff)
parentCMake: inkscape.com needs the "-mconsole" linker flag to be useful (diff)
downloadinkscape-6744c4d18446fad6d84973f97491634a09215afd.tar.gz
inkscape-6744c4d18446fad6d84973f97491634a09215afd.zip
Add doc rotate with panning
(bzr r15142.1.21)
Diffstat (limited to 'src/display')
-rw-r--r--src/display/sp-canvas.cpp28
-rw-r--r--src/display/sp-canvas.h3
2 files changed, 20 insertions, 11 deletions
diff --git a/src/display/sp-canvas.cpp b/src/display/sp-canvas.cpp
index 745896dd7..2f6caadd3 100644
--- a/src/display/sp-canvas.cpp
+++ b/src/display/sp-canvas.cpp
@@ -2077,22 +2077,31 @@ void SPCanvas::startRotateTo(double angle)
cairo_paint(cr);
cairo_destroy(cr);
surface_origin = new_backing_store_grey;
- gtk_widget_queue_draw(GTK_WIDGET(this));
- dirtyAll();
- addIdle();
+ clearRotateTo(true);
}
-void SPCanvas::endRotateTo()
+bool SPCanvas::endRotateTo()
{
- if (!_backing_store) {
- return;
+ if (!started) {
+ return false;
}
started = false;
surface_rotated = NULL;
surface_origin = NULL;
+ clearRotateTo(true);
+ return true;
+}
+
+void SPCanvas::clearRotateTo(bool clear)
+{
+ if (!started) {
+ return;
+ }
gtk_widget_queue_draw(GTK_WIDGET(this));
dirtyAll();
- addIdle();
+ if (clear) {
+ addIdle();
+ }
}
void SPCanvas::rotateTo(SPCanvasItem * item, double angle, bool widget)
@@ -2199,7 +2208,7 @@ void SPCanvas::rotateTo(SPCanvasItem * item, double angle, bool widget)
cairo_translate(cr, (-half_w + 10) * -1 ,(-half_h + 55) * -1);
cairo_translate(cr, -half_w + 10 ,-half_h + 70);
s.str("");
- s << _("+ALT, Reset");
+ s << _("+CTRL+SHIFT, Reset");
cairo_text_path(cr, s.str().c_str());
cairo_fill(cr);
//cairo_translate(cr, (-half_w + 10) * -1 ,(-half_h + 60) * -1);
@@ -2208,8 +2217,7 @@ void SPCanvas::rotateTo(SPCanvasItem * item, double angle, bool widget)
cairo_surface_destroy(_backing_store);
_backing_store = new_backing_store;
cairo_pattern_destroy (source_pattern);
- gtk_widget_queue_draw(GTK_WIDGET(this));
- addIdle();
+ clearRotateTo(false);
}
void SPCanvas::updateNow()
diff --git a/src/display/sp-canvas.h b/src/display/sp-canvas.h
index 5c4cd5047..122cc2d8c 100644
--- a/src/display/sp-canvas.h
+++ b/src/display/sp-canvas.h
@@ -74,7 +74,8 @@ struct SPCanvas {
void scrollTo(double cx, double cy, unsigned int clear, bool is_scrolling = false);
void startRotateTo(double angle);
void rotateTo(SPCanvasItem * item, double angle, bool widget = false);
- void endRotateTo();
+ bool endRotateTo();
+ void clearRotateTo(bool clear);
/// Synchronously updates the canvas if necessary.
void updateNow();