internal override IntPtr GetActive() {
IntPtr actual_atom;
int actual_format;
IntPtr nitems;
IntPtr bytes_after;
IntPtr prop = IntPtr.Zero;
IntPtr active = IntPtr.Zero;
XGetWindowProperty(DisplayHandle, RootWindow, _NET_ACTIVE_WINDOW, IntPtr.Zero, new IntPtr (1), false, (IntPtr)Atom.XA_WINDOW, out actual_atom, out actual_format, out nitems, out bytes_after, ref prop);
if (((long)nitems > 0) && (prop != IntPtr.Zero)) {
active = (IntPtr)Marshal.ReadInt32(prop);
XFree(prop);
}
if (active != IntPtr.Zero) {
Hwnd hwnd;
hwnd = Hwnd.GetObjectFromWindow(active);
if (hwnd != null) {
active = hwnd.Handle;
} else {
active = IntPtr.Zero;
}
}
return active;
}