aboutsummaryrefslogtreecommitdiff
path: root/src/ui
diff options
context:
space:
mode:
Diffstat (limited to 'src/ui')
-rw-r--r--src/ui/DeleteLater.cpp8
-rw-r--r--src/ui/controls/TextHostControlService.cpp4
-rw-r--r--src/ui/host/WindowHost.cpp1
3 files changed, 8 insertions, 5 deletions
diff --git a/src/ui/DeleteLater.cpp b/src/ui/DeleteLater.cpp
index f8911ae1..499b9b34 100644
--- a/src/ui/DeleteLater.cpp
+++ b/src/ui/DeleteLater.cpp
@@ -4,10 +4,16 @@
#include "cru/platform/gui/UiApplication.h"
namespace cru::ui {
+
+DeleteLaterImpl::DeleteLaterImpl() : delete_later_scheduled_(false) {}
+
DeleteLaterImpl::~DeleteLaterImpl() {}
void DeleteLaterImpl::DeleteLater() {
- GetUiApplication()->SetImmediate([this] { delete this; });
+ if (!delete_later_scheduled_) {
+ GetUiApplication()->SetImmediate([this] { delete this; });
+ delete_later_scheduled_ = true;
+ }
}
void DeleteLaterImpl::OnPrepareDelete() {}
diff --git a/src/ui/controls/TextHostControlService.cpp b/src/ui/controls/TextHostControlService.cpp
index 3c38c454..235e6e6a 100644
--- a/src/ui/controls/TextHostControlService.cpp
+++ b/src/ui/controls/TextHostControlService.cpp
@@ -150,8 +150,6 @@ std::vector<TextControlMovePattern> TextControlMovePattern::kDefaultPatterns = {
TextHostControlService::TextHostControlService(Control* control)
: control_(control),
text_host_control_(dynamic_cast<ITextHostControl*>(control)) {
- context_menu_ = MakeDeleteLaterPtr<components::PopupMenu>();
-
SetUpShortcuts();
SetupOneHandler(&Control::MouseMoveEvent,
@@ -701,7 +699,7 @@ void TextHostControlService::SetUpShortcuts() {
void TextHostControlService::OpenContextMenu(const Point& position,
ContextMenuItem items) {
- context_menu_ = MakeDeleteLaterPtr<components::PopupMenu>();
+ context_menu_ = MakeDeleteLater<components::PopupMenu>();
auto menu = context_menu_->GetMenu();
if (items & ContextMenuItem::kSelectAll) {
menu->AddTextItem("Select All", [this] { this->SelectAll(); });
diff --git a/src/ui/host/WindowHost.cpp b/src/ui/host/WindowHost.cpp
index 7417740d..ec956bb4 100644
--- a/src/ui/host/WindowHost.cpp
+++ b/src/ui/host/WindowHost.cpp
@@ -4,7 +4,6 @@
#include "cru/base/Base.h"
#include "cru/base/log/Logger.h"
#include "cru/platform/graphics/Painter.h"
-#include "cru/platform/gui/InputMethod.h"
#include "cru/platform/gui/UiApplication.h"
#include "cru/platform/gui/Window.h"
#include "cru/ui/Base.h"