All
VisibilityNotify
events caused by a hierarchy change are generated
after any hierarchy event
(UnmapNotify,
MapNotify,
ConfigureNotify ,
GravityNotify ,
CirculateNotify)
caused by that change. Any
VisibilityNotify
event on a given window is generated before any
Expose
events on that window, but it is not required that all
VisibilityNotify
events on all windows be generated before all
Expose
events on all windows.
The X protocol does not constrain the ordering of
VisibilityNotify
events with
respect to
FocusOut,
EnterNotify,
and
LeaveNotify
events.
To receive
VisibilityNotify
events, set the
VisibilityChangeMask
bit in the event-mask attribute of the window.
The structure for this event type contains:
typedef struct {
int type; /* VisibiltyNotify */
unsigned long serial; /* # of last request processed by server */
Bool send_event; /* true if this came from a SendEvent request */
Display *display; /* Display the event was read from */
Window window;
int state;
} XVisibilityEvent;
The window member is set to the window whose visibility state changes.
The state member is set to the state of the window's visibility and can be
VisibilityUnobscured,
VisibilityPartiallyObscured,
or
VisibilityFullyObscured.
The X server ignores all of a window's subwindows
when determining the visibility state of the window and processes
VisibilityNotify
events according to the following: