From faf73c4af74bdae1abf394a33b573149b98ec2b1 Mon Sep 17 00:00:00 2001 From: Yuqian Yang Date: Sun, 16 Nov 2025 12:14:47 +0800 Subject: Clean DeleteLater. --- src/ui/DeleteLater.cpp | 8 +++++++- src/ui/controls/TextHostControlService.cpp | 4 +--- src/ui/host/WindowHost.cpp | 1 - 3 files changed, 8 insertions(+), 5 deletions(-) (limited to 'src/ui') 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::kDefaultPatterns = { TextHostControlService::TextHostControlService(Control* control) : control_(control), text_host_control_(dynamic_cast(control)) { - context_menu_ = MakeDeleteLaterPtr(); - SetUpShortcuts(); SetupOneHandler(&Control::MouseMoveEvent, @@ -701,7 +699,7 @@ void TextHostControlService::SetUpShortcuts() { void TextHostControlService::OpenContextMenu(const Point& position, ContextMenuItem items) { - context_menu_ = MakeDeleteLaterPtr(); + context_menu_ = MakeDeleteLater(); 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" -- cgit v1.2.3