internal extern static uint XConfigureWindow(IntPtr display, IntPtr window, ChangeWindowFlags value_mask, ref XWindowChanges values);
internal static uint XConfigureWindow(IntPtr display, IntPtr window, ChangeWindowFlags value_mask, ref XWindowChanges values) { DebugHelper.TraceWriteLine ("XConfigureWindow"); return _XConfigureWindow(display, window, value_mask, ref values); }
internal override bool SetZOrder (IntPtr handle, IntPtr after_handle, bool top, bool bottom) { Hwnd hwnd = Hwnd.ObjectFromHandle (handle); if (top) { lock (XlibLock) { XRaiseWindow (DisplayHandle, hwnd.whole_window); } return true; } else if (!bottom) { Hwnd after_hwnd = null; if (after_handle != IntPtr.Zero) { after_hwnd = Hwnd.ObjectFromHandle (after_handle); } XWindowChanges values = new XWindowChanges (); if (after_hwnd == null) { throw new ArgumentNullException ("after_handle", "Need sibling to adjust z-order"); } values.sibling = after_hwnd.whole_window; values.stack_mode = StackMode.Below; lock (XlibLock) { XConfigureWindow (DisplayHandle, hwnd.whole_window, ChangeWindowFlags.CWStackMode | ChangeWindowFlags.CWSibling, ref values); } } else { // Bottom lock (XlibLock) { XLowerWindow (DisplayHandle, hwnd.whole_window); } return true; } return false; }
internal override bool SetZOrder(IntPtr handle, IntPtr after_handle, bool top, bool bottom) { Hwnd hwnd = Hwnd.ObjectFromHandle(handle); if (!hwnd.mapped) { return false; } if (top) { lock (XlibLock) { XRaiseWindow(DisplayHandle, hwnd.whole_window); } return true; } else if (!bottom) { Hwnd after_hwnd = null; if (after_handle != IntPtr.Zero) { after_hwnd = Hwnd.ObjectFromHandle(after_handle); } XWindowChanges values = new XWindowChanges(); if (after_hwnd == null) { // Work around metacity 'issues' int[] atoms; atoms = new int[2]; atoms[0] = unixtime(); XChangeProperty(DisplayHandle, hwnd.whole_window, _NET_WM_USER_TIME, (IntPtr)Atom.XA_CARDINAL, 32, PropertyMode.Replace, atoms, 1); XRaiseWindow(DisplayHandle, hwnd.whole_window); SendNetWMMessage(hwnd.whole_window, _NET_ACTIVE_WINDOW, (IntPtr)1, IntPtr.Zero, IntPtr.Zero); return true; //throw new ArgumentNullException("after_handle", "Need sibling to adjust z-order"); } values.sibling = after_hwnd.whole_window; values.stack_mode = StackMode.Below; lock (XlibLock) { XConfigureWindow(DisplayHandle, hwnd.whole_window, ChangeWindowFlags.CWStackMode | ChangeWindowFlags.CWSibling, ref values); } } else { // Bottom lock (XlibLock) { XLowerWindow(DisplayHandle, hwnd.whole_window); } return true; } return false; }
public bool SetZOrder (X11Hwnd after_hwnd, bool top, bool bottom) { if (top) { Xlib.XRaiseWindow (display.Handle, WholeWindow); return true; } else if (bottom) { Xlib.XLowerWindow (display.Handle, WholeWindow); return true; } else { if (after_hwnd == null) { Update_USER_TIME (); Xlib.XRaiseWindow (display.Handle, WholeWindow); display.SendNetWMMessage (WholeWindow, display.Atoms._NET_ACTIVE_WINDOW, (IntPtr)1, IntPtr.Zero, IntPtr.Zero); return true; } XWindowChanges values = new XWindowChanges(); values.sibling = after_hwnd.WholeWindow; values.stack_mode = StackMode.Below; Xlib.XConfigureWindow (display.Handle, WholeWindow, ChangeWindowFlags.CWStackMode | ChangeWindowFlags.CWSibling, ref values); } return false; }