Skip to content

Commit 8d366f6

Browse files
committed
m_pTop checks
1 parent 4fcf64a commit 8d366f6

File tree

1 file changed

+34
-25
lines changed

1 file changed

+34
-25
lines changed

Client/gui/CGUI_Impl.cpp

Lines changed: 34 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -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

584587
void 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

Comments
 (0)