public static void GrabWindow(Gtk.Window window) { window.GrabFocus(); Grab.Add(window); Gdk.GrabStatus grabbed = Gdk.Pointer.Grab(window.GdkWindow, true, Gdk.EventMask.ButtonPressMask | Gdk.EventMask.ButtonReleaseMask | Gdk.EventMask.PointerMotionMask, null, null, CURRENT_TIME); if (grabbed == Gdk.GrabStatus.Success) { grabbed = Gdk.Keyboard.Grab(window.GdkWindow, true, CURRENT_TIME); if (grabbed != Gdk.GrabStatus.Success) { Grab.Remove(window); window.Destroy(); } } else { Grab.Remove(window); window.Destroy(); } }
protected override void OnShown() { SetSizeRequest(-1, -1); Visible = true; show_time = DateTime.UtcNow; Reposition(); CursorTracker.ForDisplay(Display).Enabled = false; GLib.Timeout.Add(10, delegate { Gdk.GrabStatus status = Gdk.Pointer.Grab( GdkWindow, true, Gdk.EventMask.ButtonPressMask | Gdk.EventMask.ButtonReleaseMask, null, null, Gtk.Global.CurrentEventTime); if (status == GrabStatus.AlreadyGrabbed || status == GrabStatus.Success) { Gdk.Keyboard.Grab(GdkWindow, true, Gtk.Global.CurrentEventTime); Gtk.Grab.Add(this); return(false); } return(true); }); base.OnShown(); }