Esempio n. 1
0
        // Returns true if processing should continue (base.SendEvent should be called), false if not
        protected virtual bool PreprocessMouseDown(NSEvent e)
        {
            bool   hitTestCalled = false;
            NSView hitTestView   = null;

            if (ToolStripManager.activeToolStrips.Count != 0)
            {
                hitTestCalled = true;
                hitTestView   = (ContentView.Superview ?? ContentView).HitTest(e.LocationInWindow);
                if (hitTestView != null && !ToolStripManager.IsChildOfActiveToolStrip(hitTestView.Handle))
                {
                    ToolStripManager.FireAppClicked();
                }
            }

            if (!hitTestCalled)
            {
                hitTestView = (ContentView.Superview ?? ContentView).HitTest(e.LocationInWindow);
            }
            var hitTestHandle        = hitTestView?.Handle ?? IntPtr.Zero;
            var hitTestControl       = Control.FromChildHandle(hitTestHandle);
            var hitTestControlHandle = hitTestControl?.Handle ?? IntPtr.Zero;

            if (e.Type == NSEventType.LeftMouseDown)
            {
                var topLevelParent = IntPtr.Zero;                       // FIXME
                mouseActivate = (MouseActivate)driver.SendMessage(ContentView.Handle, Msg.WM_MOUSEACTIVATE, topLevelParent, hitTestControlHandle).ToInt32();
                if (mouseActivate == MouseActivate.MA_NOACTIVATEANDEAT) // || mouseActivate == MouseActivate.MA_ACTIVATEANDEAT)
                {
                    return(true);
                }
            }

            if (hitTestControlHandle == IntPtr.Zero)
            {
                OnNcMouseDown(e);
            }
            else
            {
                if (!hitTestView.IsSwfControl())
                {
                    var p = driver.NativeToMonoScreen(this.ConvertPointToScreenSafe(e.LocationInWindow));
                    driver.SendParentNotify(hitTestControlHandle, Msg.WM_LBUTTONDOWN, p.X, p.Y);
                }
            }

            return(false);
        }
Esempio n. 2
0
 public static Control ToControl(this NSView view)
 {
     return(view.IsSwfControl() ? Control.FromHandle(view.Handle) : Control.FromChildHandle(view.Handle));
 }