Sdk: Fix segfault when deleting hovered widget
This commit is contained in:
@@ -80,7 +80,7 @@ namespace Ndk
|
||||
};
|
||||
|
||||
protected:
|
||||
EntityHandle CreateEntity();
|
||||
const EntityHandle& CreateEntity();
|
||||
void DestroyEntity(Entity* entity);
|
||||
virtual void Layout();
|
||||
void InvalidateNode() override;
|
||||
|
||||
@@ -39,7 +39,7 @@ namespace Ndk
|
||||
|
||||
std::size_t RegisterWidget(BaseWidget* widget);
|
||||
|
||||
inline void SetKeyboardOwner(BaseWidget* widget);
|
||||
inline void SetKeyboardOwner(std::size_t canvasIndex);
|
||||
|
||||
void UnregisterWidget(std::size_t index);
|
||||
|
||||
@@ -67,10 +67,10 @@ namespace Ndk
|
||||
NazaraSlot(Nz::EventHandler, OnMouseLeft, m_mouseLeftSlot);
|
||||
NazaraSlot(Nz::EventHandler, OnTextEntered, m_textEnteredSlot);
|
||||
|
||||
std::size_t m_keyboardOwner;
|
||||
std::size_t m_hoveredWidget;
|
||||
std::vector<WidgetBox> m_widgetBoxes;
|
||||
Nz::CursorControllerHandle m_cursorController;
|
||||
const WidgetBox* m_hoveredWidget;
|
||||
BaseWidget* m_keyboardOwner;
|
||||
WorldHandle m_world;
|
||||
};
|
||||
}
|
||||
|
||||
@@ -8,9 +8,9 @@
|
||||
namespace Ndk
|
||||
{
|
||||
inline Canvas::Canvas(WorldHandle world, Nz::EventHandler& eventHandler, Nz::CursorControllerHandle cursorController) :
|
||||
m_hoveredWidget(InvalidCanvasIndex),
|
||||
m_keyboardOwner(InvalidCanvasIndex),
|
||||
m_cursorController(cursorController),
|
||||
m_hoveredWidget(nullptr),
|
||||
m_keyboardOwner(nullptr),
|
||||
m_world(std::move(world))
|
||||
{
|
||||
m_canvas = this;
|
||||
@@ -61,12 +61,12 @@ namespace Ndk
|
||||
WidgetBox& entry = m_widgetBoxes[index];
|
||||
|
||||
entry.cursor = entry.widget->GetCursor();
|
||||
if (m_cursorController && m_hoveredWidget == &entry)
|
||||
if (m_cursorController && m_hoveredWidget == index)
|
||||
m_cursorController->UpdateCursor(Nz::Cursor::Get(entry.cursor));
|
||||
}
|
||||
|
||||
inline void Ndk::Canvas::SetKeyboardOwner(BaseWidget* widget)
|
||||
inline void Canvas::SetKeyboardOwner(std::size_t canvasIndex)
|
||||
{
|
||||
m_keyboardOwner = widget;
|
||||
m_keyboardOwner = canvasIndex;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user