diff --git a/implementations/Crafter.Graphics-GridElement.cpp b/implementations/Crafter.Graphics-GridElement.cpp index ca4fb18..3bbf139 100644 --- a/implementations/Crafter.Graphics-GridElement.cpp +++ b/implementations/Crafter.Graphics-GridElement.cpp @@ -41,6 +41,7 @@ void GridElement::UpdatePositionScaled(Window& window) { // Calculate position for this child std::int_fast32_t childX = (cellWidth * col) + (spacingX * col) + paddingX; + std::int_fast32_t childY = (cellHeight * row) + (spacingY * row) + paddingY; // Apply relative positioning diff --git a/implementations/Crafter.Graphics-MouseElement.cpp b/implementations/Crafter.Graphics-MouseElement.cpp index 0419f1b..48756bc 100644 --- a/implementations/Crafter.Graphics-MouseElement.cpp +++ b/implementations/Crafter.Graphics-MouseElement.cpp @@ -39,6 +39,10 @@ MouseElement::MouseElement(WindowMouse& window) : Transform({FractionalToMapped( window.mouseElements.push_back(this); } +MouseElement::MouseElement() : Transform({FractionalToMapped(0), FractionalToMapped(0), FractionalToMapped(1), FractionalToMapped(1), FractionalToMapped(0), FractionalToMapped(0), 0}) { + +} + void MouseElement::UpdatePosition(Window& window) { window.ScaleMouse(*this); diff --git a/implementations/Crafter.Graphics-Window_wayland.cpp b/implementations/Crafter.Graphics-Window_wayland.cpp index 0f1d59f..fa043c4 100644 --- a/implementations/Crafter.Graphics-Window_wayland.cpp +++ b/implementations/Crafter.Graphics-Window_wayland.cpp @@ -522,6 +522,8 @@ void WindowWayland::pointer_handle_button(void* data, wl_pointer* pointer, std:: } } window->mouseElements.erase(std::remove(window->mouseElements.begin(), window->mouseElements.end(), static_cast(nullptr)), window->mouseElements.end()); + window->mouseElements.insert(window->mouseElements.end(), window->pendingMouseElements.begin(), window->pendingMouseElements.end()); + window->pendingMouseElements.clear(); } void WindowWayland::PointerListenerHandleMotion(void* data, wl_pointer* wl_pointer, uint time, wl_fixed_t surface_x, wl_fixed_t surface_y) { diff --git a/interfaces/Crafter.Graphics-MouseElement.cppm b/interfaces/Crafter.Graphics-MouseElement.cppm index d1b9269..cafa295 100644 --- a/interfaces/Crafter.Graphics-MouseElement.cppm +++ b/interfaces/Crafter.Graphics-MouseElement.cppm @@ -38,6 +38,7 @@ export namespace Crafter { Event onMouseRightRelease; Event onMouseLeftRelease; + MouseElement(); MouseElement(WindowMouse& window); MouseElement(Anchor anchor); MouseElement(Anchor anchor, WindowMouse& window); diff --git a/interfaces/Crafter.Graphics-Window.cppm b/interfaces/Crafter.Graphics-Window.cppm index da9afbf..e5ee46f 100644 --- a/interfaces/Crafter.Graphics-Window.cppm +++ b/interfaces/Crafter.Graphics-Window.cppm @@ -117,6 +117,7 @@ export namespace Crafter { bool mouseLeftHeld = false; bool mouseRightHeld = false; std::vector mouseElements; + std::vector pendingMouseElements; }; class WindowTitle {