aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/ui/CMakeLists.txt2
-rw-r--r--src/ui/controls/LayoutControl.cpp17
-rw-r--r--src/ui/controls/Popup.cpp20
3 files changed, 38 insertions, 1 deletions
diff --git a/src/ui/CMakeLists.txt b/src/ui/CMakeLists.txt
index 2f0eb10d..15ad1258 100644
--- a/src/ui/CMakeLists.txt
+++ b/src/ui/CMakeLists.txt
@@ -13,6 +13,7 @@ add_library(cru_ui STATIC
controls/FlexLayout.cpp
controls/LayoutControl.cpp
controls/NoChildControl.cpp
+ controls/Popup.cpp
controls/StackLayout.cpp
controls/TextBlock.cpp
controls/TextBox.cpp
@@ -44,6 +45,7 @@ target_sources(cru_ui PUBLIC
${CRU_UI_INCLUDE_DIR}/controls/FlexLayout.hpp
${CRU_UI_INCLUDE_DIR}/controls/LayoutControl.hpp
${CRU_UI_INCLUDE_DIR}/controls/NoChildControl.hpp
+ ${CRU_UI_INCLUDE_DIR}/controls/Popup.hpp
${CRU_UI_INCLUDE_DIR}/controls/StackLayout.hpp
${CRU_UI_INCLUDE_DIR}/controls/TextBox.hpp
${CRU_UI_INCLUDE_DIR}/controls/TextBlock.hpp
diff --git a/src/ui/controls/LayoutControl.cpp b/src/ui/controls/LayoutControl.cpp
index 85417beb..5954853e 100644
--- a/src/ui/controls/LayoutControl.cpp
+++ b/src/ui/controls/LayoutControl.cpp
@@ -1,3 +1,18 @@
#include "cru/ui/controls/LayoutControl.hpp"
-namespace cru::ui::controls {}
+#include "cru/ui/render/RenderObject.hpp"
+
+namespace cru::ui::controls {
+void LayoutControl::OnAddChild(Control* child, Index position) {
+ if (container_render_object_ != nullptr) {
+ container_render_object_->AddChild(child->GetRenderObject(), position);
+ }
+}
+
+void LayoutControl::OnRemoveChild(Control* child, Index position) {
+ CRU_UNUSED(child)
+ if (container_render_object_ != nullptr) {
+ container_render_object_->RemoveChild(position);
+ }
+}
+} // namespace cru::ui::controls
diff --git a/src/ui/controls/Popup.cpp b/src/ui/controls/Popup.cpp
new file mode 100644
index 00000000..f51f2b3b
--- /dev/null
+++ b/src/ui/controls/Popup.cpp
@@ -0,0 +1,20 @@
+#include "cru/ui/controls/Popup.hpp"
+
+#include "cru/platform/gui/UiApplication.hpp"
+#include "cru/ui/host/WindowHost.hpp"
+#include "cru/ui/render/StackLayoutRenderObject.hpp"
+
+#include <memory>
+
+namespace cru::ui::controls {
+Popup::Popup(Control* attached_control) : attached_control_(attached_control) {
+ render_object_ = std::make_unique<render::StackLayoutRenderObject>();
+ SetContainerRenderObject(render_object_.get());
+
+ window_host_ = std::make_unique<host::WindowHost>(
+ this, host::CreateWindowParams(
+ nullptr, platform::gui::CreateWindowFlags::NoCaptionAndBorder));
+}
+
+Popup::~Popup() = default;
+} // namespace cru::ui::controls