diff options
| author | Jabier Arraiza <jabier.arraiza@marker.es> | 2019-10-15 20:46:42 +0000 |
|---|---|---|
| committer | Jabier Arraiza <jabier.arraiza@marker.es> | 2019-10-15 20:46:42 +0000 |
| commit | 13d291eed92483e25724955a13ab21504336fb5f (patch) | |
| tree | 2381e0d8372bfadd07eeb2cdb80eccde266192f3 | |
| parent | Fix crash caused by e6d70fa8d497b2d75a837aa22e5876943de9fede (diff) | |
| download | inkscape-13d291eed92483e25724955a13ab21504336fb5f.tar.gz inkscape-13d291eed92483e25724955a13ab21504336fb5f.zip | |
Add checkboxes in flip menu options
| -rw-r--r-- | share/ui/menus.xml | 5 | ||||
| -rw-r--r-- | src/desktop.cpp | 6 | ||||
| -rw-r--r-- | src/desktop.h | 11 | ||||
| -rw-r--r-- | src/ui/desktop/menubar.cpp | 6 |
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; } |
