Extract XCUI selection model and layout lab click selection

This commit is contained in:
2026-04-05 07:03:51 +08:00
parent d46dcbfa9e
commit 646e5855ce
10 changed files with 202 additions and 15 deletions

View File

@@ -0,0 +1,49 @@
#include <XCEngine/UI/Widgets/UISelectionModel.h>
namespace XCEngine {
namespace UI {
namespace Widgets {
bool UISelectionModel::HasSelection() const {
return !m_selectedId.empty();
}
const std::string& UISelectionModel::GetSelectedId() const {
return m_selectedId;
}
bool UISelectionModel::IsSelected(std::string_view id) const {
return !m_selectedId.empty() && m_selectedId == id;
}
bool UISelectionModel::SetSelection(std::string selectionId) {
if (m_selectedId == selectionId) {
return false;
}
m_selectedId = std::move(selectionId);
return true;
}
bool UISelectionModel::ClearSelection() {
if (m_selectedId.empty()) {
return false;
}
m_selectedId.clear();
return true;
}
bool UISelectionModel::ToggleSelection(std::string selectionId) {
if (m_selectedId == selectionId) {
m_selectedId.clear();
return true;
}
m_selectedId = std::move(selectionId);
return true;
}
} // namespace Widgets
} // namespace UI
} // namespace XCEngine