fix the cairo-fletcher-fluctuation
[ardour.git] / libs / gtkmm2ext / visibility_tracker.cc
index d5a020d370f5c7b153720f990e4aaf794c64b1db..aac76a5021ebaabe1fddabfc5a5e617cba1816a5 100644 (file)
@@ -16,7 +16,7 @@
     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 
 */
-
+#include <iostream>
 #include <gtkmm/window.h>
 
 #include "gtkmm2ext/visibility_tracker.h"
 using namespace Gtkmm2ext;
 
 VisibilityTracker::VisibilityTracker (Gtk::Window& win)
-       : window (win)
+       : _window (win)
        , _visibility (GdkVisibilityState (0))
 {
-       window.add_events (Gdk::VISIBILITY_NOTIFY_MASK);
-       window.signal_visibility_notify_event().connect (sigc::mem_fun (*this, &VisibilityTracker::handle_visibility_notify_event));
+       _window.add_events (Gdk::VISIBILITY_NOTIFY_MASK);
+       _window.signal_visibility_notify_event().connect (sigc::mem_fun (*this, &VisibilityTracker::handle_visibility_notify_event));
 }
 
 bool
 VisibilityTracker::handle_visibility_notify_event (GdkEventVisibility* ev)
 {
        _visibility = ev->state;
+       // std::cerr << "VT: " << _window.get_title() << " vis event, fv = " << fully_visible() << " pv = " << partially_visible() << " nv = " << not_visible() << std::endl;
        return false;
 }
 
@@ -42,26 +43,26 @@ void
 VisibilityTracker::cycle_visibility ()
 {
        if (fully_visible ()) {
-               window.hide ();
+               _window.hide ();
        } else {
-               window.present ();
+               _window.present ();
        }
 }
 
 bool
 VisibilityTracker::fully_visible () const
 {
-       return window.is_mapped() && (_visibility == GDK_VISIBILITY_UNOBSCURED);
+       return _window.is_mapped() && (_visibility == GDK_VISIBILITY_UNOBSCURED);
 }
 
 bool
 VisibilityTracker::not_visible () const
 {
-       return !window.is_mapped() || (_visibility == GDK_VISIBILITY_FULLY_OBSCURED);
+       return !_window.is_mapped() || (_visibility == GDK_VISIBILITY_FULLY_OBSCURED);
 }
 
 bool
 VisibilityTracker::partially_visible () const
 {
-       return window.is_mapped() && (_visibility == GDK_VISIBILITY_PARTIAL);
+       return _window.is_mapped() && ((_visibility == GDK_VISIBILITY_PARTIAL) || (_visibility == GDK_VISIBILITY_UNOBSCURED));
 }