Exemple #1
0
            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();
                }
            }
Exemple #2
0
        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();
        }