aboutsummaryrefslogtreecommitdiff
path: root/src/ui/controls/ContentControl.cpp
blob: 8b421e091b0807e45971c3877da5e9ee13206bae (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include "cru/ui/controls/ContentControl.h"

namespace cru::ui::controls {
Control* ContentControl::GetChild() const {
  if (GetChildren().empty()) return nullptr;
  return GetChildren()[0];
}

void ContentControl::SetChild(Control* child) {
  Control* old_child = nullptr;
  if (!GetChildren().empty()) {
    old_child = GetChildren()[0];
    this->RemoveChild(0);
  }
  if (child) {
    this->AddChild(child, 0);
  }
  OnChildChanged(old_child, child);
}

void ContentControl::OnChildChanged(Control* old_child, Control* new_child) {
  if (container_render_object_) {
    if (old_child) {
      container_render_object_->RemoveChild(0);
    }
    if (new_child) {
      container_render_object_->AddChild(new_child->GetRenderObject(), 0);
    }
  }
}
}  // namespace cru::ui::controls