summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJabier Arraiza <jabier.arraiza@marker.es>2019-10-15 20:46:42 +0000
committerJabier Arraiza <jabier.arraiza@marker.es>2019-10-15 20:46:42 +0000
commit13d291eed92483e25724955a13ab21504336fb5f (patch)
tree2381e0d8372bfadd07eeb2cdb80eccde266192f3
parentFix crash caused by e6d70fa8d497b2d75a837aa22e5876943de9fede (diff)
downloadinkscape-13d291eed92483e25724955a13ab21504336fb5f.tar.gz
inkscape-13d291eed92483e25724955a13ab21504336fb5f.zip
Add checkboxes in flip menu options
-rw-r--r--share/ui/menus.xml5
-rw-r--r--src/desktop.cpp6
-rw-r--r--src/desktop.h11
-rw-r--r--src/ui/desktop/menubar.cpp6
4 files changed, 25 insertions, 3 deletions
diff --git a/share/ui/menus.xml b/share/ui/menus.xml
index 2fbf21768..c7c96bee2 100644
--- a/share/ui/menus.xml
+++ b/share/ui/menus.xml
@@ -125,9 +125,8 @@
<!--verb verb-id="DialogPrintColorsPreview" /-->
</submenu>
<submenu name="_Canvas Orientation">
- <verb verb-id="FlipHorizontal"/>
- <verb verb-id="FlipVertical"/>
- <verb verb-id="FlipNone"/>
+ <verb verb-id="FlipHorizontal" check="yes"/>
+ <verb verb-id="FlipVertical" check="yes"/>
<separator/>
<verb verb-id="RotateZero"/>
</submenu>
diff --git a/src/desktop.cpp b/src/desktop.cpp
index 49fd1c393..521e7cb03 100644
--- a/src/desktop.cpp
+++ b/src/desktop.cpp
@@ -1255,6 +1255,12 @@ SPDesktop::flip_relative_center_point (Geom::Point const &c, CanvasFlip flip)
set_display_area( c, viewbox.midpoint() );
}
+bool
+SPDesktop::is_flipped (CanvasFlip flip)
+{
+ return _current_affine.isFlipped(flip);
+}
+
/**
* Scroll canvas by to a particular point (window coordinates).
diff --git a/src/desktop.h b/src/desktop.h
index bc26a61d1..5e1bca975 100644
--- a/src/desktop.h
+++ b/src/desktop.h
@@ -380,6 +380,7 @@ public:
void flip_relative_keep_point (Geom::Point const &c, CanvasFlip flip);
void flip_absolute_center_point (Geom::Point const &c, CanvasFlip flip);
void flip_relative_center_point (Geom::Point const &c, CanvasFlip flip);
+ bool is_flipped (CanvasFlip flip);
double current_rotation() const { return _current_affine.getRotation(); }
@@ -512,6 +513,16 @@ private:
addFlip( flip );
}
+ bool isFlipped( CanvasFlip flip ) {
+ if ((flip & FLIP_HORIZONTAL) && _flip[0] != 1) {
+ return true;
+ }
+ if ((flip & FLIP_VERTICAL) && _flip[1] != 1) {
+ return true;
+ }
+ return false;
+ }
+
void addFlip( CanvasFlip flip ) {
if (flip & FLIP_HORIZONTAL) {
_flip *= Geom::Scale(-1.0, 1.0);
diff --git a/src/ui/desktop/menubar.cpp b/src/ui/desktop/menubar.cpp
index 69ca0037c..059d74c93 100644
--- a/src/ui/desktop/menubar.cpp
+++ b/src/ui/desktop/menubar.cpp
@@ -390,6 +390,12 @@ checkitem_update(Gtk::CheckMenuItem* menuitem, SPAction* action)
} else if (id == "ToggleStatusbar") {
active = getStateFromPref(dt, "statusbar");
+ } else if (id == "FlipHorizontal") {
+ active = dt->is_flipped(SPDesktop::FLIP_HORIZONTAL);
+
+ } else if (id == "FlipVertical") {
+ active = dt->is_flipped(SPDesktop::FLIP_VERTICAL);
+
} else {
std::cerr << "checkitem_update: unhandled item: " << id << std::endl;
}