summaryrefslogtreecommitdiff
path: root/libs
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2018-09-23 12:57:31 -0400
committerPaul Davis <paul@linuxaudiosystems.com>2018-09-23 13:48:19 -0400
commitd48dd0ccd546616cf71c3bc8f7e776b76d7ab9c6 (patch)
treedb6e0ce75d38832290f73806adaa93b2c59eb9c2 /libs
parentb9d8f75119fc9a9f7cf4c79a91c9fa350500dd07 (diff)
defer creating a visibility tracker for a window until the window is mapped
Without this, the visibility tracker will report that the window is not visible at startup, and this overrides the XML _visible property which denotes that the window should be made visible
Diffstat (limited to 'libs')
-rw-r--r--libs/gtkmm2ext/visibility_tracker.cc7
1 files changed, 6 insertions, 1 deletions
diff --git a/libs/gtkmm2ext/visibility_tracker.cc b/libs/gtkmm2ext/visibility_tracker.cc
index 170036eac1..b29047eacb 100644
--- a/libs/gtkmm2ext/visibility_tracker.cc
+++ b/libs/gtkmm2ext/visibility_tracker.cc
@@ -27,8 +27,9 @@ bool VisibilityTracker::_use_window_manager_visibility = true;
VisibilityTracker::VisibilityTracker (Gtk::Window& win)
: _window (win)
- , _visibility (GdkVisibilityState (0))
+ , _visibility (GDK_VISIBILITY_FULLY_OBSCURED)
{
+ std::cerr << " vis tracker for " << _window.get_title() << " created\n";
_window.add_events (Gdk::VISIBILITY_NOTIFY_MASK);
_window.signal_visibility_notify_event().connect (sigc::mem_fun (*this, &VisibilityTracker::handle_visibility_notify_event));
}
@@ -42,7 +43,9 @@ VisibilityTracker::set_use_window_manager_visibility (bool yn)
bool
VisibilityTracker::handle_visibility_notify_event (GdkEventVisibility* ev)
{
+ std::cerr << _window.get_title() << " VISIBILITY CHANGE " << " from " << _visibility;
_visibility = ev->state;
+ std::cerr << " to " << _visibility << std::endl;
return false;
}
@@ -80,8 +83,10 @@ bool
VisibilityTracker::partially_visible () const
{
if (_use_window_manager_visibility) {
+ std::cerr << _window.get_title() << " pvis from vis = " << _visibility << " mapped " << _window.is_mapped() << std::endl;
return _window.is_mapped() && ((_visibility == GDK_VISIBILITY_PARTIAL) || (_visibility == GDK_VISIBILITY_UNOBSCURED));
} else {
+ std::cerr << _window.get_title() << " pvis from mapped " << _window.is_mapped() << std::endl;
return _window.is_mapped();
}
}