From c4f1bf27ef5f071bab7f2d5542ae893ac684d005 Mon Sep 17 00:00:00 2001 From: Michael Oliver Date: Sun, 6 Apr 2025 13:37:35 +0100 Subject: [PATCH] [UI] Add paste functionality to keyboard input dialog --- src/xenia/kernel/xam/xam_ui.cc | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/src/xenia/kernel/xam/xam_ui.cc b/src/xenia/kernel/xam/xam_ui.cc index 84946e06b..fb1181233 100644 --- a/src/xenia/kernel/xam/xam_ui.cc +++ b/src/xenia/kernel/xam/xam_ui.cc @@ -1099,8 +1099,23 @@ class KeyboardInputDialog : public XamDialog { if (first_draw) { ImGui::SetKeyboardFocusHere(); } - if (ImGui::InputText("##body", text_buffer_.data(), text_buffer_.size(), - ImGuiInputTextFlags_EnterReturnsTrue)) { + ImGui::PushID("input_text"); + bool input_submitted = + ImGui::InputText("##body", text_buffer_.data(), text_buffer_.size(), + ImGuiInputTextFlags_EnterReturnsTrue); + // Context menu for paste functionality + if (ImGui::BeginPopupContextItem("input_context_menu")) { + if (ImGui::MenuItem("Paste")) { + if (ImGui::GetClipboardText() != nullptr) { + std::string clipboard_text = ImGui::GetClipboardText(); + xe::string_util::copy_truncating( + text_buffer_.data(), clipboard_text, text_buffer_.size()); + } + } + ImGui::EndPopup(); + } + ImGui::PopID(); + if (input_submitted) { text_ = std::string(text_buffer_.data(), text_buffer_.size()); cancelled_ = false; ImGui::CloseCurrentPopup();