Re: Detecting whether a widget is displayed.
- From: Chris Vine <chris cvine freeserve co uk>
- To: Daniel Burrows <dburrows algebraicthunk net>
- Cc: gtk-app-devel-list gnome org
- Subject: Re: Detecting whether a widget is displayed.
- Date: Thu, 5 Nov 2009 22:04:11 +0000
On Thu, 5 Nov 2009 06:28:36 -0800
Daniel Burrows <dburrows algebraicthunk net> wrote:
I have what's probably a simple GTK+ problem, and I was wondering if
anyone could give me a tip.
I'm trying to write a custom widget (in GTK--) that would benefit
from knowing whether it's currently visible or not. It seems pretty
easy to detect when a widget becomes visible for the first time by
hooking into the "expose" signal, but I can't for the life of me find
any way of detecting when a widget becomes invisible. (for instance,
when the user switches away from its tab in a notebook or scrolls past
it in a TextView)
The most promising thing I found was the "visibility notify event",
but it never seems to get delivered to my widget. I've also tried to
use is_viewable() and get_visible_region() on the GDK window, but even
if these work (they don't seem to so far, but I could be doing it
wrong) I need a signal or event so that I know when to test them.
You need to add the GDK_VISIBILITY_NOTIFY_MASK for the widget with
gtk_widget_add_events() in order to get visibility notify events on it.
Also test GTK_WIDGET_VISIBLE() if you might call hide() on the widget
(eg when in the system tray), because hiding a widget for some reason
does not count as a change of visibility status. Depending on what
you are after, you may also want to track window state events for cases
where a window is iconified (minimised).
In other words, a lot depends on what you mean by "visible". Your
meaning many not be the same as GDK's meaning. If you test for all of
the conditions I have mentioned it will probably do what you want.
Chris
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]