aboutsummaryrefslogtreecommitdiff
path: root/src/ui
diff options
context:
space:
mode:
Diffstat (limited to 'src/ui')
-rw-r--r--src/ui/components/Menu.cpp5
-rw-r--r--src/ui/controls/RootControl.cpp2
-rw-r--r--src/ui/controls/TextHostControlService.cpp6
3 files changed, 7 insertions, 6 deletions
diff --git a/src/ui/components/Menu.cpp b/src/ui/components/Menu.cpp
index 59bcf8ec..fa594399 100644
--- a/src/ui/components/Menu.cpp
+++ b/src/ui/components/Menu.cpp
@@ -91,13 +91,14 @@ PopupMenu::~PopupMenu() {}
controls::Control* PopupMenu::GetRootControl() { return &popup_; }
void PopupMenu::SetPosition(const Point& position) {
- popup_.GetWindowHost()->GetNativeWindow()->SetClientRect(Rect{position, {}});
+ auto window = popup_.GetWindowHost()->GetNativeWindow();
+ window->SetClientRect(Rect{position, window->GetClientSize()});
}
void PopupMenu::Show() {
- popup_.GetWindowHost()->RelayoutWithSize(Size::Infinite(), true);
auto native_window = popup_.GetWindowHost()->GetNativeWindow();
native_window->SetVisibility(platform::gui::WindowVisibilityType::Show);
+ popup_.GetWindowHost()->RelayoutWithSize(Size::Infinite(), true);
native_window->RequestFocus();
native_window->SetToForeground();
}
diff --git a/src/ui/controls/RootControl.cpp b/src/ui/controls/RootControl.cpp
index 1bb2e7ee..7be1c630 100644
--- a/src/ui/controls/RootControl.cpp
+++ b/src/ui/controls/RootControl.cpp
@@ -1,7 +1,5 @@
#include "cru/ui/controls/RootControl.h"
-#include "cru/base/Base.h"
-#include "cru/platform/gui/Base.h"
#include "cru/platform/gui/Window.h"
#include "cru/ui/Base.h"
#include "cru/ui/host/WindowHost.h"
diff --git a/src/ui/controls/TextHostControlService.cpp b/src/ui/controls/TextHostControlService.cpp
index b2fbd61d..06c1651f 100644
--- a/src/ui/controls/TextHostControlService.cpp
+++ b/src/ui/controls/TextHostControlService.cpp
@@ -273,7 +273,8 @@ void TextHostControlService::DeleteText(TextRange range,
range = range.Normalize();
if (!Utf8IsValidInsertPosition(this->text_.data(), this->text_.size(),
range.GetStart())) {
- CRU_LOG_TAG_ERROR("Invalid text delete start position {}.", range.GetStart());
+ CRU_LOG_TAG_ERROR("Invalid text delete start position {}.",
+ range.GetStart());
return;
}
if (!Utf8IsValidInsertPosition(this->text_.data(), this->text_.size(),
@@ -701,6 +702,7 @@ void TextHostControlService::OpenContextMenu(const Point& position,
ContextMenuItem items) {
CRU_LOG_TAG_DEBUG("Open context menu.");
auto menu = context_menu_->GetMenu();
+ menu->ClearItems();
if (items & ContextMenuItem::kSelectAll) {
menu->AddTextItem("Select All", [this] { this->SelectAll(); });
}
@@ -713,8 +715,8 @@ void TextHostControlService::OpenContextMenu(const Point& position,
if (items & ContextMenuItem::kPaste) {
menu->AddTextItem("Paste", [this] { this->Paste(); });
}
- context_menu_->SetPosition(position);
context_menu_->Show();
+ context_menu_->SetPosition(position);
}
} // namespace cru::ui::controls