X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fgtkmm2ext%2Fvisibility_tracker.cc;h=170036eac114a28a7809f49ab5b8fda07fb64418;hb=c05cfe332868c1aca477aedcecdfb78948e6d559;hp=7ba282f3f9f251e5ee008f50158cf23e55ee6b24;hpb=69a3310037e013c074b1d8643323017ac1c815f9;p=ardour.git diff --git a/libs/gtkmm2ext/visibility_tracker.cc b/libs/gtkmm2ext/visibility_tracker.cc index 7ba282f3f9..170036eac1 100644 --- a/libs/gtkmm2ext/visibility_tracker.cc +++ b/libs/gtkmm2ext/visibility_tracker.cc @@ -16,13 +16,15 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ - +#include #include #include "gtkmm2ext/visibility_tracker.h" using namespace Gtkmm2ext; +bool VisibilityTracker::_use_window_manager_visibility = true; + VisibilityTracker::VisibilityTracker (Gtk::Window& win) : _window (win) , _visibility (GdkVisibilityState (0)) @@ -31,6 +33,12 @@ VisibilityTracker::VisibilityTracker (Gtk::Window& win) _window.signal_visibility_notify_event().connect (sigc::mem_fun (*this, &VisibilityTracker::handle_visibility_notify_event)); } +void +VisibilityTracker::set_use_window_manager_visibility (bool yn) +{ + _use_window_manager_visibility = yn; +} + bool VisibilityTracker::handle_visibility_notify_event (GdkEventVisibility* ev) { @@ -51,17 +59,29 @@ VisibilityTracker::cycle_visibility () bool VisibilityTracker::fully_visible () const { - return _window.is_mapped() && (_visibility == GDK_VISIBILITY_UNOBSCURED); + if (_use_window_manager_visibility) { + return _window.is_mapped() && (_visibility == GDK_VISIBILITY_UNOBSCURED); + } else { + return _window.is_mapped(); + } } bool VisibilityTracker::not_visible () const { - return !_window.is_mapped() || (_visibility == GDK_VISIBILITY_FULLY_OBSCURED); + if (_use_window_manager_visibility) { + return !_window.is_mapped() || (_visibility == GDK_VISIBILITY_FULLY_OBSCURED); + } else { + return !_window.is_mapped(); + } } bool VisibilityTracker::partially_visible () const { - return _window.is_mapped() && ((_visibility == GDK_VISIBILITY_PARTIAL) || (_visibility == GDK_VISIBILITY_UNOBSCURED)); + if (_use_window_manager_visibility) { + return _window.is_mapped() && ((_visibility == GDK_VISIBILITY_PARTIAL) || (_visibility == GDK_VISIBILITY_UNOBSCURED)); + } else { + return _window.is_mapped(); + } }