@@ -330,28 +330,31 @@ bool CGUI_Impl::GetGUIInputEnabled()
330330 break ;
331331 case INPUTMODE_NO_BINDS_ON_EDIT:
332332 {
333- CEGUI::Window* pActiveWindow = m_pTop->getActiveChild ();
334- if (!pActiveWindow || pActiveWindow == m_pTop || !pActiveWindow->isVisible ())
335- {
336- return false ;
337- }
338- if (pActiveWindow->getType () == " CGUI/Editbox" )
339- {
340- CEGUI::Editbox* pEditBox = reinterpret_cast <CEGUI::Editbox*>(pActiveWindow);
341- return (!pEditBox->isReadOnly () && pEditBox->hasInputFocus ());
342- }
343- else if (pActiveWindow->getType () == " CGUI/MultiLineEditbox" )
333+ if (m_pTop)
344334 {
345- CEGUI::MultiLineEditbox* pMultiLineEditBox = reinterpret_cast <CEGUI::MultiLineEditbox*>(pActiveWindow);
346- return (!pMultiLineEditBox->isReadOnly () && pMultiLineEditBox->hasInputFocus ());
347- }
348- else if (pActiveWindow->getType () == CGUIWEBBROWSER_NAME)
349- {
350- auto pElement = reinterpret_cast <CGUIElement_Impl*>(pActiveWindow->getUserData ());
351- if (pElement->GetType () == CGUI_WEBBROWSER)
335+ CEGUI::Window* pActiveWindow = m_pTop->getActiveChild ();
336+ if (!pActiveWindow || pActiveWindow == m_pTop || !pActiveWindow->isVisible ())
337+ {
338+ return false ;
339+ }
340+ if (pActiveWindow->getType () == " CGUI/Editbox" )
341+ {
342+ CEGUI::Editbox* pEditBox = reinterpret_cast <CEGUI::Editbox*>(pActiveWindow);
343+ return (!pEditBox->isReadOnly () && pEditBox->hasInputFocus ());
344+ }
345+ else if (pActiveWindow->getType () == " CGUI/MultiLineEditbox" )
346+ {
347+ CEGUI::MultiLineEditbox* pMultiLineEditBox = reinterpret_cast <CEGUI::MultiLineEditbox*>(pActiveWindow);
348+ return (!pMultiLineEditBox->isReadOnly () && pMultiLineEditBox->hasInputFocus ());
349+ }
350+ else if (pActiveWindow->getType () == CGUIWEBBROWSER_NAME)
352351 {
353- auto pWebBrowser = reinterpret_cast <CGUIWebBrowser_Impl*>(pElement);
354- return pWebBrowser->HasInputFocus ();
352+ auto pElement = reinterpret_cast <CGUIElement_Impl*>(pActiveWindow->getUserData ());
353+ if (pElement->GetType () == CGUI_WEBBROWSER)
354+ {
355+ auto pWebBrowser = reinterpret_cast <CGUIWebBrowser_Impl*>(pElement);
356+ return pWebBrowser->HasInputFocus ();
357+ }
355358 }
356359 }
357360 return false ;
@@ -583,6 +586,9 @@ eCursorType CGUI_Impl::GetCursorType()
583586
584587void CGUI_Impl::AddChild (CGUIElement_Impl* pChild)
585588{
589+ if (!m_pTop)
590+ return ;
591+
586592 m_pTop->addChildWindow (pChild->GetWindow ());
587593}
588594
@@ -1156,12 +1162,15 @@ bool CGUI_Impl::Event_MouseButtonDown(const CEGUI::EventArgs& Args)
11561162 pElement->Event_OnMouseButtonDown ();
11571163 else
11581164 {
1159- // If there's no element, we're probably dealing with the root element
1160- CEGUI::Window* pActiveWindow = m_pTop->getActiveChild ();
1161- if (m_pTop == wnd && pActiveWindow)
1165+ if (m_pTop)
11621166 {
1163- // Deactivate active window to trigger onClientGUIBlur
1164- pActiveWindow->deactivate ();
1167+ // If there's no element, we're probably dealing with the root element
1168+ CEGUI::Window* pActiveWindow = m_pTop->getActiveChild ();
1169+ if (m_pTop == wnd && pActiveWindow)
1170+ {
1171+ // Deactivate active window to trigger onClientGUIBlur
1172+ pActiveWindow->deactivate ();
1173+ }
11651174 }
11661175 }
11671176
0 commit comments