CefSharp icon indicating copy to clipboard operation
CefSharp copied to clipboard

WPF - OnLostMouseCapture with active scrolling.

Open timaiv opened this issue 5 years ago • 1 comments

  • What version of the product are you using? v85.3.130

  • What architecture x86 or x64? Both

  • On what operating system? Win10

  • Are you using WinForms, WPF or OffScreen? WPF

  • What steps will reproduce the problem? 1)Draging the scrollbar with left button pressing 2)move the cursor out of the browser control 2)press alt+tab, choose other app. 3)release left button. 4)move mouse in browser, browser is thinking that mouse is pressed.

  • Please provide any additional information below. As i said in https://github.com/cefsharp/CefSharp/pull/2871 we have problem with OnLostMouseCapture. Default wpf implementation does not raise mouse up event after lost mouse capture.

    Worked fast fix(SubClass):

        private bool isLeftMouseDown;
        protected override void OnMouseDown(MouseButtonEventArgs e)
        {
            isLeftMouseDown = e.LeftButton == MouseButtonState.Pressed;
            base.OnMouseDown(e);
        }

        protected override void OnLostMouseCapture(MouseEventArgs e)
        {
            var modifiers = e.GetModifiers();
            var point = e.GetPosition(this);

            if (isLeftMouseDown)
            {
                GetBrowser().GetHost().SendMouseClickEvent((int)point.X, (int)point.Y, MouseButtonType.Left, true, 1, modifiers);
                isLeftMouseDown = false;
            }

            base.OnLostMouseCapture(e);
        }

timaiv avatar Oct 29 '20 14:10 timaiv

Thank you for the detailed bug report.

Can you please submit a PR with your proposed changes. Thanks.

amaitland avatar Oct 29 '20 19:10 amaitland