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:
@@ -813,11 +813,22 @@ static vcl::Window* ImplGetKeyInputWindow( vcl::Window* pWindow )
|
|||||||
|
|
||||||
// find window - is every time the window which has currently the
|
// find window - is every time the window which has currently the
|
||||||
// focus or the last time the focus.
|
// 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;
|
vcl::Window* pChild = pSVData->maWinData.mpFirstFloat;
|
||||||
if( !pChild || ( pChild->ImplGetWindowImpl()->mbFloatWin && !static_cast<FloatingWindow *>(pChild)->GrabsFocus() ) )
|
while (pChild)
|
||||||
pChild = pWindow->ImplGetWindowImpl()->mpFrameData->mpFocusWin;
|
{
|
||||||
else
|
if (pChild->ImplGetWindowImpl()->mbFloatWin)
|
||||||
|
{
|
||||||
|
if (static_cast<FloatingWindow *>(pChild)->GrabsFocus())
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
pChild = pChild->GetParent();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!pChild)
|
||||||
|
pChild = pWindow;
|
||||||
|
|
||||||
pChild = pChild->ImplGetWindowImpl()->mpFrameData->mpFocusWin;
|
pChild = pChild->ImplGetWindowImpl()->mpFrameData->mpFocusWin;
|
||||||
|
|
||||||
// no child - than no input
|
// no child - than no input
|
||||||
|
Reference in New Issue
Block a user