diff options
Diffstat (limited to 'src/ui')
| -rw-r--r-- | src/ui/components/Menu.cpp | 5 | ||||
| -rw-r--r-- | src/ui/controls/RootControl.cpp | 2 | ||||
| -rw-r--r-- | src/ui/controls/TextHostControlService.cpp | 6 |
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 |
