summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libs/gtkmm2ext/gtkmm2ext/visibility_tracker.h6
-rw-r--r--libs/gtkmm2ext/visibility_tracker.cc16
2 files changed, 12 insertions, 10 deletions
diff --git a/libs/gtkmm2ext/gtkmm2ext/visibility_tracker.h b/libs/gtkmm2ext/gtkmm2ext/visibility_tracker.h
index f4ed62bb21..1256448efd 100644
--- a/libs/gtkmm2ext/gtkmm2ext/visibility_tracker.h
+++ b/libs/gtkmm2ext/gtkmm2ext/visibility_tracker.h
@@ -28,7 +28,7 @@ namespace GTK {
namespace Gtkmm2ext {
-class VisibilityTracker {
+class VisibilityTracker : public virtual sigc::trackable {
public:
VisibilityTracker (Gtk::Window&);
virtual ~VisibilityTracker() {}
@@ -39,8 +39,10 @@ class VisibilityTracker {
bool not_visible() const;
bool partially_visible() const;
+ Gtk::Window& window () const { return _window; }
+
private:
- Gtk::Window& window;
+ Gtk::Window& _window;
GdkVisibilityState _visibility;
bool handle_visibility_notify_event (GdkEventVisibility*);
};
diff --git a/libs/gtkmm2ext/visibility_tracker.cc b/libs/gtkmm2ext/visibility_tracker.cc
index d5a020d370..7ba282f3f9 100644
--- a/libs/gtkmm2ext/visibility_tracker.cc
+++ b/libs/gtkmm2ext/visibility_tracker.cc
@@ -24,11 +24,11 @@
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
@@ -42,26 +42,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));
}