diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2013-04-26 14:12:52 -0400 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2013-04-26 14:12:52 -0400 |
commit | db34831b183d511d76ea1f29606e1933e5ad4caf (patch) | |
tree | e1418a7085f5879311074717f107098df63ab34c /libs | |
parent | a366fba7d0933a8f2d97d95fefcbcdc9692d2117 (diff) |
redesign toggling of editor/mixer stacking to use Gtkmm2ext::VisibilityTracker
Diffstat (limited to 'libs')
-rw-r--r-- | libs/gtkmm2ext/gtkmm2ext/visibility_tracker.h | 4 | ||||
-rw-r--r-- | libs/gtkmm2ext/visibility_tracker.cc | 19 |
2 files changed, 22 insertions, 1 deletions
diff --git a/libs/gtkmm2ext/gtkmm2ext/visibility_tracker.h b/libs/gtkmm2ext/gtkmm2ext/visibility_tracker.h index 6415dd6d2b..f4ed62bb21 100644 --- a/libs/gtkmm2ext/gtkmm2ext/visibility_tracker.h +++ b/libs/gtkmm2ext/gtkmm2ext/visibility_tracker.h @@ -35,6 +35,10 @@ class VisibilityTracker { void cycle_visibility (); + bool fully_visible() const; + bool not_visible() const; + bool partially_visible() const; + private: Gtk::Window& window; GdkVisibilityState _visibility; diff --git a/libs/gtkmm2ext/visibility_tracker.cc b/libs/gtkmm2ext/visibility_tracker.cc index c0aabdfca6..d5a020d370 100644 --- a/libs/gtkmm2ext/visibility_tracker.cc +++ b/libs/gtkmm2ext/visibility_tracker.cc @@ -41,10 +41,27 @@ VisibilityTracker::handle_visibility_notify_event (GdkEventVisibility* ev) void VisibilityTracker::cycle_visibility () { - if (window.is_mapped() && (_visibility == GDK_VISIBILITY_UNOBSCURED)) { + if (fully_visible ()) { window.hide (); } else { window.present (); } } +bool +VisibilityTracker::fully_visible () const +{ + return window.is_mapped() && (_visibility == GDK_VISIBILITY_UNOBSCURED); +} + +bool +VisibilityTracker::not_visible () const +{ + return !window.is_mapped() || (_visibility == GDK_VISIBILITY_FULLY_OBSCURED); +} + +bool +VisibilityTracker::partially_visible () const +{ + return window.is_mapped() && (_visibility == GDK_VISIBILITY_PARTIAL); +} |