From 8be46b870addcdadfe9ebf4aa90fa08c9bd26d7c Mon Sep 17 00:00:00 2001 From: dijunkun Date: Mon, 9 Mar 2026 21:35:21 +0800 Subject: [PATCH] [feat] add cancel button during connecting --- src/gui/panels/remote_peer_panel.cpp | 3 +++ src/gui/windows/connection_status_window.cpp | 12 ++++++++++++ 2 files changed, 15 insertions(+) diff --git a/src/gui/panels/remote_peer_panel.cpp b/src/gui/panels/remote_peer_panel.cpp index 2230561..b58dd61 100644 --- a/src/gui/panels/remote_peer_panel.cpp +++ b/src/gui/panels/remote_peer_panel.cpp @@ -197,6 +197,9 @@ int Render::ConnectTo(const std::string& remote_id, const char* password, props->control_window_max_width_ = title_bar_height_ * 9.0f; props->control_window_max_height_ = title_bar_height_ * 7.0f; + props->connection_status_ = ConnectionStatus::Connecting; + show_connection_status_window_ = true; + if (!props->peer_) { LOG_INFO("Create peer [{}] instance failed", props->local_id_); return -1; diff --git a/src/gui/windows/connection_status_window.cpp b/src/gui/windows/connection_status_window.cpp index 00d42b9..bc42719 100644 --- a/src/gui/windows/connection_status_window.cpp +++ b/src/gui/windows/connection_status_window.cpp @@ -36,6 +36,18 @@ bool Render::ConnectionStatusWindow( text = localization::p2p_connecting[localization_language_index_]; ImGui::SetCursorPosX(connection_status_window_width * 0.43f); ImGui::SetCursorPosY(connection_status_window_height * 0.67f); + // cancel + if (ImGui::Button( + localization::cancel[localization_language_index_].c_str()) || + ImGui::IsKeyPressed(ImGuiKey_Escape)) { + show_connection_status_window_ = false; + re_enter_remote_id_ = true; + LOG_INFO("User cancelled connecting to [{}]", props->remote_id_); + if (props->peer_) { + LeaveConnection(props->peer_, props->remote_id_.c_str()); + } + ret_flag = true; + } } else if (ConnectionStatus::Connected == props->connection_status_) { text = localization::p2p_connected[localization_language_index_]; ImGui::SetCursorPosX(connection_status_window_width * 0.43f);