Esempio n. 1
0
        //Map the win32 MouseKeyState to ToolkitMouseButtons
        private ToolkitMouseButtons MapToToolkitMouseButtons(int wParam)
        {
            ToolkitMouseButtons buttons = ToolkitMouseButtons.None;

            Win32.Api.MouseKeyState fwKeys = (Win32.Api.MouseKeyState)(wParam & 0xFFFF);

            if ((fwKeys & Win32.Api.MouseKeyState.MK_LBUTTON) > 0)
            {
                buttons |= ToolkitMouseButtons.Left;
            }

            if ((fwKeys & Win32.Api.MouseKeyState.MK_MBUTTON) > 0)
            {
                buttons |= ToolkitMouseButtons.Middle;
            }

            if ((fwKeys & Win32.Api.MouseKeyState.MK_RBUTTON) > 0)
            {
                buttons |= ToolkitMouseButtons.Right;
            }

            if ((fwKeys & Win32.Api.MouseKeyState.MK_XBUTTON1) > 0)
            {
                buttons |= ToolkitMouseButtons.XButton1;
            }

            if ((fwKeys & Win32.Api.MouseKeyState.MK_XBUTTON2) > 0)
            {
                buttons |= ToolkitMouseButtons.XButton2;
            }

            return(buttons);
        }
Esempio n. 2
0
        public void ToolkitMouseWheel(ToolkitMouseButtons buttons, ToolkitKeys modifiers, int clicks, int x, int y, int delta)
        {
            IToolkitEventSink co = this.mControlWeakRef.Target as IToolkitEventSink;

            if (null != co)
            {
                co.ToolkitMouseWheel(buttons, modifiers, clicks, x, y, delta);
            }
        }
	public void ToolkitMouseWheel(ToolkitMouseButtons buttons, ToolkitKeys modifiers, int clicks, int x, int y, int delta) {
		IToolkitEventSink co = this.mControlWeakRef.Target as IToolkitEventSink;
		if( null != co ) {
			co.ToolkitMouseWheel(buttons, modifiers, clicks, x, y, delta);
		}
	}
Esempio n. 4
0
        // Post Mouse Move to the window that needs it. Handle Mouse Enter and Leave
        protected internal virtual void MouseMove(int msg, int wParam, int lParam)
        {
            ToolkitMouseButtons buttons = MapToToolkitMouseButtons(wParam);
            ToolkitKeys         keys = MapMouseToToolkitKeys(wParam);
            int x, y;

            DrawingWindow actual;
            DrawingWindow found = FindDeepestChild(lParam, out x, out y, out actual);

            // Do Leave and Entered events.
            if (toolkit.enteredWindow != actual)
            {
                if (toolkit.enteredWindow != null)
                {
                    //Console.WriteLine("DrawingWindow.MouseLeave, " + toolkit.enteredWindow.sink);
                    toolkit.enteredWindow.sink.ToolkitMouseLeave();
                    toolkit.enteredWindow = null;
                }
                if (actual != null)
                {
                    //Console.WriteLine("DrawingWindow.MouseEnter, " + actual.sink);
                    toolkit.enteredWindow = actual;
                    actual.sink.ToolkitMouseEnter();
                }
            }

            // If there are no child windows to receive the captured input then give it to the window doing the capturing
            if (toolkit.capturedWindow != null && found == null)
            {
                found = toolkit.capturedWindow;
            }

            // If this is the first time over a window, set the capture and try again
            if (toolkit.capturedTopWindow == null)
            {
                if (toolkit.capturedWindow == null)
                {
                    CaptureTopLevel(this);
                    MouseMove(msg, wParam, lParam);
                }
                else
                {
                    CaptureTopLevel(toolkit.capturedWindow);
                }
                return;
            }

            Win32.Api.POINT mouse;
            mouse.x = MouseX(lParam) + DimensionsScreen.X;
            mouse.y = MouseY(lParam) + DimensionsScreen.Y;
            DrawingWindow actualWindow = toolkit.DrawingWindow(Win32.Api.WindowFromPoint(mouse));

            if (actualWindow != null && actualWindow.topOfhierarchy == toolkit.capturedTopWindow)
            {
                // On the window decorations.
                if (found == null)
                {
                    CaptureTopLevel(null);
                }
                else
                {
                    // Send the message to the client window
                    found.sink.ToolkitMouseMove(buttons, keys, 0, x, y, 0);
                }
                //Console.WriteLine("DrawingWindow.MouseMove, " + (actual==null?"null":actual.sink.ToString()) +", (" + x +", " + y +"), " + buttons +"," + keys );
            }
            else
            {
                if (toolkit.capturedWindow == null)
                {
                    CaptureTopLevel(null);
                }
                else
                {
                    found.sink.ToolkitMouseMove(buttons, keys, 0, x, y, 0);
                }
                // ?Send the last mouse move beyond the window (Win NT+ behaviour)
            }
        }
Esempio n. 5
0
	// Toolkit event that is emitted for a mouse wheel event.
	void IToolkitEventSink.ToolkitMouseWheel
		(ToolkitMouseButtons buttons, ToolkitKeys modifiers,
		int clicks, int x, int y, int delta)
			{
				if( !Enabled) { // Check Parent Enabled too, not just this Control.
					if (parent != null)
						((IToolkitEventSink)parent).ToolkitMouseWheel(buttons, modifiers, clicks, x + left, y + top, delta);
					return;
				}
				// Convert to client coordinates
				x += ToolkitDrawOrigin.X - ClientOrigin.X;
				y += ToolkitDrawOrigin.Y - ClientOrigin.Y;
				currentModifiers = (Keys)modifiers;
				DoOnMouseWheel(new MouseEventArgs
					((MouseButtons)buttons, clicks, x, y, delta));
			}
Esempio n. 6
0
	// Toolkit event that is emitted for a mouse move event.
	void IToolkitEventSink.ToolkitMouseMove
		(ToolkitMouseButtons buttons, ToolkitKeys modifiers,
		int clicks, int x, int y, int delta)
			{
				if(!Enabled) //Check Parent Enabled too, not just this Control. !GetControlFlag(ControlFlags.Enabled))
				{
					if (parent != null)
						((IToolkitEventSink)parent).ToolkitMouseMove(buttons, modifiers, clicks, x + left, y + top, delta);
					return;
				}
				
				// Convert to client coordinates
				x += ToolkitDrawOrigin.X - ClientOrigin.X;
				y += ToolkitDrawOrigin.Y - ClientOrigin.Y;
				mousePosition = PointToScreen(new Point(x, y));
				
				currentModifiers = (Keys)modifiers;
				OnMouseMove(new MouseEventArgs
					((MouseButtons)buttons, clicks, x, y, delta));
			}
Esempio n. 7
0
	// Toolkit event that is emitted for a mouse up event.
	void IToolkitEventSink.ToolkitMouseUp
		(ToolkitMouseButtons buttons, ToolkitKeys modifiers,
		int clicks, int x, int y, int delta)
			{
				if(!Enabled) // Check Parent Enabled too, not just this Control. !GetControlFlag(ControlFlags.Enabled))
				{
					if (parent != null)
						((IToolkitEventSink)parent).ToolkitMouseUp(buttons, modifiers, clicks, x + left, y + top, delta);
					return;
				}
				
				// Convert to client coordinates
				x += ToolkitDrawOrigin.X - ClientOrigin.X;
				y += ToolkitDrawOrigin.Y - ClientOrigin.Y;
				mouseButtons = (MouseButtons)buttons;
				currentModifiers = (Keys)modifiers;
				if(GetControlFlag(ControlFlags.NotifyDoubleClick))
				{
					OnDoubleClick(EventArgs.Empty);
					SetControlFlag(ControlFlags.NotifyDoubleClick, false);
				}
				else if(GetControlFlag(ControlFlags.NotifyClick))
				{
					OnClick(EventArgs.Empty);
					SetControlFlag(ControlFlags.NotifyClick, false);
				}
				OnMouseUp(new MouseEventArgs
					((MouseButtons)buttons, clicks, x, y, delta));
				// See if we need to display the context menu.
				if(mouseButtons == MouseButtons.Right && contextMenu != null)
				{
					contextMenu.Show(this, new Point(x, y));
				}
			}
Esempio n. 8
0
	// Toolkit event that is emitted for a mouse down event.
	void IToolkitEventSink.ToolkitMouseDown
		(ToolkitMouseButtons buttons, ToolkitKeys modifiers,
		int clicks, int x, int y, int delta)
			{
				if( !Enabled) //Check if this !Enabled OR Parent !Enabled, not just this control.  //if(!GetControlFlag(ControlFlags.Enabled))
				{
					if (parent != null)
						((IToolkitEventSink)parent).ToolkitMouseDown(buttons, modifiers, clicks, x + left, y + top, delta);
					return;
				}
				
				// Convert to client coordinates
				x += ToolkitDrawOrigin.X - ClientOrigin.X;
				y += ToolkitDrawOrigin.Y - ClientOrigin.Y;
				mouseButtons = (MouseButtons)buttons;
									
				currentModifiers = (Keys)modifiers;

				ToolkitMouseDown(mouseButtons, currentModifiers, clicks, x, y, delta);
			}