Ejemplo n.º 1
0
        public override void MouseButton(uint time, uint button, uint state)
        {
            // Case where mouse button 1 is released and there is a currently moving surface...
            if (state == 0 && button == 0x110 && WindowManager.MovingSurface != null)
            {
                // ...the surface should stop moving
                WindowManager.MovingSurface = null;
            }

            // Find the topmost surface under the pointer
            ISurface surface = SurfaceUnderPointer(WindowManager.Compositor.Mouse.X, WindowManager.Compositor.Mouse.Y);

            if (surface != null && surface != virtualDesktop.ActiveSurface && state == 1)
            {
                //Console.WriteLine("Deactivating active surface " + virtualDesktop.ActiveSurface);
                virtualDesktop.ActiveSurface?.Deactivate();
                virtualDesktop.ActiveSurface?.SendKeyboardLeave();

                this.virtualDesktop.Surfaces.Remove(surface);
                this.virtualDesktop.Surfaces.Add(surface);
                surface.Activate();
                surface.SendKeyboardEnter();
                virtualDesktop.ActiveSurface = surface;
            }
            else if (surface == null && state == 1)
            {
                //Console.WriteLine("Deactivating active surface " + virtualDesktop.ActiveSurface);
                virtualDesktop.ActiveSurface?.Deactivate();
                virtualDesktop.ActiveSurface?.SendKeyboardLeave();
                virtualDesktop.ActiveSurface = null;
            }
            else
            {
            }

            surface?.SendMouseButton(time, button, state);
        }