support unfocused float window inside a focused float window
if a floating window is inside a floating window, go up the floating windows until we find the first one that accepts focus, rather than pass the input to the toplevel frame Change-Id: I6c2a3de02ab436b8441b1fec15d51dec4f96c931
This commit is contained in:
parent
b0d1a39e99
commit
6f9ce98bd0
@ -813,11 +813,22 @@ static vcl::Window* ImplGetKeyInputWindow( vcl::Window* pWindow )
|
||||
|
||||
// find window - is every time the window which has currently the
|
||||
// focus or the last time the focus.
|
||||
// the first floating window always has the focus
|
||||
|
||||
// the first floating window always has the focus, try it, or any parent floating windows, first
|
||||
vcl::Window* pChild = pSVData->maWinData.mpFirstFloat;
|
||||
if( !pChild || ( pChild->ImplGetWindowImpl()->mbFloatWin && !static_cast<FloatingWindow *>(pChild)->GrabsFocus() ) )
|
||||
pChild = pWindow->ImplGetWindowImpl()->mpFrameData->mpFocusWin;
|
||||
else
|
||||
while (pChild)
|
||||
{
|
||||
if (pChild->ImplGetWindowImpl()->mbFloatWin)
|
||||
{
|
||||
if (static_cast<FloatingWindow *>(pChild)->GrabsFocus())
|
||||
break;
|
||||
}
|
||||
pChild = pChild->GetParent();
|
||||
}
|
||||
|
||||
if (!pChild)
|
||||
pChild = pWindow;
|
||||
|
||||
pChild = pChild->ImplGetWindowImpl()->mpFrameData->mpFocusWin;
|
||||
|
||||
// no child - than no input
|
||||
|
Loading…
x
Reference in New Issue
Block a user