diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2016-06-07 18:29:03 -0400 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2016-06-07 18:29:03 -0400 |
commit | 73f3abedea6f6ec112f26fe810ad6a7ec56a1e2e (patch) | |
tree | d5a7c5ffd12b0ba759a3c278d753f5321979fbb6 /libs/gtkmm2ext/visibility_tracker.cc | |
parent | 207fa93cf948cc2b9d92e50ef15707611a858d6a (diff) |
make it possible to disable VisibilityTracker's use of WM visibility
Diffstat (limited to 'libs/gtkmm2ext/visibility_tracker.cc')
-rw-r--r-- | libs/gtkmm2ext/visibility_tracker.cc | 27 |
1 files changed, 23 insertions, 4 deletions
diff --git a/libs/gtkmm2ext/visibility_tracker.cc b/libs/gtkmm2ext/visibility_tracker.cc index aac76a5021..170036eac1 100644 --- a/libs/gtkmm2ext/visibility_tracker.cc +++ b/libs/gtkmm2ext/visibility_tracker.cc @@ -23,6 +23,8 @@ using namespace Gtkmm2ext; +bool VisibilityTracker::_use_window_manager_visibility = true; + VisibilityTracker::VisibilityTracker (Gtk::Window& win) : _window (win) , _visibility (GdkVisibilityState (0)) @@ -31,11 +33,16 @@ 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) { _visibility = ev->state; - // std::cerr << "VT: " << _window.get_title() << " vis event, fv = " << fully_visible() << " pv = " << partially_visible() << " nv = " << not_visible() << std::endl; return false; } @@ -52,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(); + } } |