summaryrefslogtreecommitdiff
path: root/libs
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2013-04-26 14:12:52 -0400
committerPaul Davis <paul@linuxaudiosystems.com>2013-04-26 14:12:52 -0400
commitdb34831b183d511d76ea1f29606e1933e5ad4caf (patch)
treee1418a7085f5879311074717f107098df63ab34c /libs
parenta366fba7d0933a8f2d97d95fefcbcdc9692d2117 (diff)
redesign toggling of editor/mixer stacking to use Gtkmm2ext::VisibilityTracker
Diffstat (limited to 'libs')
-rw-r--r--libs/gtkmm2ext/gtkmm2ext/visibility_tracker.h4
-rw-r--r--libs/gtkmm2ext/visibility_tracker.cc19
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);
+}