From 2a9cf171cf956e25b707a7b4b9bb3bc44c786d3f Mon Sep 17 00:00:00 2001 From: larspalo Date: Sat, 6 Jul 2024 22:02:57 +0200 Subject: [PATCH] Fixed bug that prevented changing Label position on the panel representation if FreeXPlacement/FreeYPlacement was set as false. --- CHANGELOG.md | 1 + src/GUIRepresentationDrawingPanel.cpp | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0eb4b1c..9c952b7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Display of correct default text on setter button elements. - Crash caused by trying to open recent file that doesn't exist anymore. +- Bug that prevented changing label position by dragging or keys if FreeXPlacement and FreeYPlacement was false. ## [0.14.0] - 2024-07-02 diff --git a/src/GUIRepresentationDrawingPanel.cpp b/src/GUIRepresentationDrawingPanel.cpp index 991a8c6..a1ed3fe 100644 --- a/src/GUIRepresentationDrawingPanel.cpp +++ b/src/GUIRepresentationDrawingPanel.cpp @@ -299,6 +299,15 @@ void GUIRepresentationDrawingPanel::OnLeftRelease(wxMouseEvent& event) { if (m_guiObjects[i].element) { m_guiObjects[i].element->setPosX(finalXpos); m_guiObjects[i].element->setPosY(finalYpos); + if (m_guiObjects[i].element->getType().IsSameAs(wxT("Label"))) { + GUILabel *labelElement = dynamic_cast(m_guiObjects[i].element); + if (labelElement) { + if (!labelElement->isFreeXPlacement()) + labelElement->setFreeXPlacement(true); + if (!labelElement->isFreeYPlacement()) + labelElement->setFreeYPlacement(true); + } + } } else if (m_guiObjects[m_selectedObjectIndex].img) { m_guiObjects[i].img->setPositionX(finalXpos); m_guiObjects[i].img->setPositionY(finalYpos); @@ -539,6 +548,15 @@ void GUIRepresentationDrawingPanel::OnKeyboardInput(wxKeyEvent& event) { if (m_guiObjects[i].element) { m_guiObjects[i].element->setPosX(xPos); m_guiObjects[i].element->setPosY(yPos); + if (m_guiObjects[i].element->getType().IsSameAs(wxT("Label"))) { + GUILabel *labelElement = dynamic_cast(m_guiObjects[i].element); + if (labelElement) { + if (!labelElement->isFreeXPlacement()) + labelElement->setFreeXPlacement(true); + if (!labelElement->isFreeYPlacement()) + labelElement->setFreeYPlacement(true); + } + } } else if (m_guiObjects[i].img) { m_guiObjects[i].img->setPositionX(xPos); m_guiObjects[i].img->setPositionY(yPos);