aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcrupest <crupest@outlook.com>2022-02-15 21:42:12 +0800
committercrupest <crupest@outlook.com>2022-02-15 21:42:12 +0800
commit43a297f30c03180427db435bb25a1a4b51ea847a (patch)
tree54843de2695fc145d35845b4d243d72c61877b55
parent24aaa8fbc5da8370506402facdb8ccaf563454e5 (diff)
downloadcru-43a297f30c03180427db435bb25a1a4b51ea847a.tar.gz
cru-43a297f30c03180427db435bb25a1a4b51ea847a.tar.bz2
cru-43a297f30c03180427db435bb25a1a4b51ea847a.zip
...
-rw-r--r--demos/main/main.cpp5
-rw-r--r--src/ui/components/Select.cpp7
2 files changed, 11 insertions, 1 deletions
diff --git a/demos/main/main.cpp b/demos/main/main.cpp
index 67d3ddad..d17f42ba 100644
--- a/demos/main/main.cpp
+++ b/demos/main/main.cpp
@@ -5,6 +5,7 @@
#include "cru/ui/Base.h"
#include "cru/ui/components/Menu.h"
#include "cru/ui/components/PopupButton.h"
+#include "cru/ui/components/Select.h"
#include "cru/ui/controls/Button.h"
#include "cru/ui/controls/FlexLayout.h"
#include "cru/ui/controls/TextBlock.h"
@@ -61,6 +62,10 @@ int main() {
popup_menu_text_button.SetMenuItems({u"Item 1", u"Item 2", u"Item 3"});
flex_layout.AddChild(popup_menu_text_button.GetRootControl());
+ Select select;
+ select.SetItems({u"Item 1", u"Item 2", u"Item 3"});
+ flex_layout.AddChild(select.GetRootControl());
+
window.GetWindowHost()->GetNativeWindow()->SetVisibility(
cru::platform::gui::WindowVisibilityType::Show);
diff --git a/src/ui/components/Select.cpp b/src/ui/components/Select.cpp
index 9f9fbfae..6a316717 100644
--- a/src/ui/components/Select.cpp
+++ b/src/ui/components/Select.cpp
@@ -4,7 +4,11 @@ namespace cru::ui::components {
Select::Select() {
button_.SetChild(&button_text_);
button_.ClickEvent()->AddHandler([this](const helper::ClickEventArgs& args) {
- popup_menu_.SetPosition(args.GetDownPoint());
+ auto left_bottom =
+ button_.GetContainerRenderObject()->GetTotalOffset() +
+ Point{0, button_.GetContainerRenderObject()->GetSize().height};
+ popup_menu_.SetPosition(args.GetDownPointOfScreen() - args.GetDownPoint() +
+ left_bottom);
popup_menu_.Show();
});
}
@@ -12,6 +16,7 @@ Select::Select() {
Select::~Select() { button_.RemoveFromParent(); }
void Select::SetItems(std::vector<String> items) {
+ items_ = items;
popup_menu_.GetMenu()->ClearItems();
for (Index i = 0; i < items.size(); i++) {
popup_menu_.GetMenu()->AddTextItem(std::move(items[i]),