sc/source/ui/app/inputhdl.cxx |   11 +++++++++++
 sc/source/ui/view/gridwin.cxx |    4 ++++
 2 files changed, 15 insertions(+)

New commits:
commit c7de5aedb130098a5abd127e86e3570db0b3df63
Author:     Caolán McNamara <[email protected]>
AuthorDate: Mon Nov 18 20:55:54 2019 +0000
Commit:     Caolán McNamara <[email protected]>
CommitDate: Tue Nov 19 11:29:26 2019 +0100

    Related: tdf#125917 release mouse grab before showing warning dialog
    
    Type text into the data validity dropdown cell and click elsewhere.
    The warning dialog cannot be interacted with due to the active mouse
    grab to its parent
    
    Change-Id: I51702c828dee6ec88106f7d44d7e3440f2e61298
    Reviewed-on: https://gerrit.libreoffice.org/83163
    Tested-by: Jenkins
    Reviewed-by: Caolán McNamara <[email protected]>
    Tested-by: Caolán McNamara <[email protected]>

diff --git a/sc/source/ui/app/inputhdl.cxx b/sc/source/ui/app/inputhdl.cxx
index 7556ef49d1ac..6f064ba50269 100644
--- a/sc/source/ui/app/inputhdl.cxx
+++ b/sc/source/ui/app/inputhdl.cxx
@@ -2791,8 +2791,19 @@ void ScInputHandler::EnterHandler( ScEnterMode 
nBlockMode )
             if (!bOk)
             {
                 if ( pActiveViewSh )                // If it came from 
MouseButtonDown
+                {
                     pActiveViewSh->StopMarking();   // (the InfoBox consumes 
the MouseButtonUp)
 
+                    // tdf#125917 Release the grab the a current mouse-down 
event being handled
+                    // by ScTabView has put on the mouse via its 
SelectionEngine.
+                    // Otherwise the warning box cannot interact with the mouse
+                    if (ScTabView* pView = 
pActiveViewSh->GetViewData().GetView())
+                    {
+                        if (ScViewSelectionEngine* pSelEngine = 
pView->GetSelEngine())
+                            pSelEngine->ReleaseMouse();
+                    }
+                }
+
                 vcl::Window* pParent = nullptr;
                 if (pActiveViewSh)
                     pParent = &pActiveViewSh->GetViewFrame()->GetWindow();
commit d0ec90df4bdc8a59cd6461ec07de9e58222dd33b
Author:     Caolán McNamara <[email protected]>
AuthorDate: Mon Nov 18 21:28:22 2019 +0000
Commit:     Caolán McNamara <[email protected]>
CommitDate: Tue Nov 19 11:29:12 2019 +0100

    tdf#125917 Ensure mouse is captured before the menu is launched
    
    calc seems to excessively capture the mouse and grabs + floats are messy 
across
    the different ports. But We usually have the mouse captured before calling 
the
    menu, except if we are editing a cell, an additional capture here will 
ensure
    the grab status is the same in both modes and that events go to the same 
place
    in either case.
    
    Change-Id: I213560273be1a6a398d6a1787a53d64501c473f0
    Reviewed-on: https://gerrit.libreoffice.org/83165
    Tested-by: Jenkins
    Reviewed-by: Caolán McNamara <[email protected]>
    Tested-by: Caolán McNamara <[email protected]>

diff --git a/sc/source/ui/view/gridwin.cxx b/sc/source/ui/view/gridwin.cxx
index c286b7b5d173..c3618dbe99da 100644
--- a/sc/source/ui/view/gridwin.cxx
+++ b/sc/source/ui/view/gridwin.cxx
@@ -1754,6 +1754,10 @@ void ScGridWindow::HandleMouseButtonDown( const 
MouseEvent& rMEvt, MouseEventSta
             tools::Rectangle aButtonRect = GetListValButtonRect( aListValPos );
             if ( aButtonRect.IsInside( aPos ) )
             {
+                // tdf#125917 typically we have the mouse captured already, 
except if are editing the cell.
+                // Ensure its captured before the menu is launched even in the 
cell editing case
+                CaptureMouse();
+
                 LaunchDataSelectMenu( aListValPos.Col(), aListValPos.Row() );
 
                 nMouseStatus = SC_GM_FILTER;    // not set in 
DoAutoFilterMenue for bDataSelect
_______________________________________________
Libreoffice-commits mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to