summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/core/frontend/applets/software_keyboard.cpp5
-rw-r--r--src/core/frontend/applets/software_keyboard.h6
-rw-r--r--src/core/hle/service/am/applets/applet_software_keyboard.cpp20
-rw-r--r--src/core/hle/service/am/applets/applet_software_keyboard.h3
-rw-r--r--src/yuzu/applets/qt_software_keyboard.cpp9
-rw-r--r--src/yuzu/applets/qt_software_keyboard.h12
-rw-r--r--src/yuzu/main.cpp5
-rw-r--r--src/yuzu/main.h2
8 files changed, 36 insertions, 26 deletions
diff --git a/src/core/frontend/applets/software_keyboard.cpp b/src/core/frontend/applets/software_keyboard.cpp
index 12c76c9ee..c4863ee73 100644
--- a/src/core/frontend/applets/software_keyboard.cpp
+++ b/src/core/frontend/applets/software_keyboard.cpp
@@ -16,7 +16,8 @@ DefaultSoftwareKeyboardApplet::~DefaultSoftwareKeyboardApplet() = default;
16 16
17void DefaultSoftwareKeyboardApplet::InitializeKeyboard( 17void DefaultSoftwareKeyboardApplet::InitializeKeyboard(
18 bool is_inline, KeyboardInitializeParameters initialize_parameters, 18 bool is_inline, KeyboardInitializeParameters initialize_parameters,
19 std::function<void(Service::AM::Applets::SwkbdResult, std::u16string)> submit_normal_callback_, 19 std::function<void(Service::AM::Applets::SwkbdResult, std::u16string, bool)>
20 submit_normal_callback_,
20 std::function<void(Service::AM::Applets::SwkbdReplyType, std::u16string, s32)> 21 std::function<void(Service::AM::Applets::SwkbdReplyType, std::u16string, s32)>
21 submit_inline_callback_) { 22 submit_inline_callback_) {
22 if (is_inline) { 23 if (is_inline) {
@@ -128,7 +129,7 @@ void DefaultSoftwareKeyboardApplet::ExitKeyboard() const {
128} 129}
129 130
130void DefaultSoftwareKeyboardApplet::SubmitNormalText(std::u16string text) const { 131void DefaultSoftwareKeyboardApplet::SubmitNormalText(std::u16string text) const {
131 submit_normal_callback(Service::AM::Applets::SwkbdResult::Ok, text); 132 submit_normal_callback(Service::AM::Applets::SwkbdResult::Ok, text, true);
132} 133}
133 134
134void DefaultSoftwareKeyboardApplet::SubmitInlineText(std::u16string_view text) const { 135void DefaultSoftwareKeyboardApplet::SubmitInlineText(std::u16string_view text) const {
diff --git a/src/core/frontend/applets/software_keyboard.h b/src/core/frontend/applets/software_keyboard.h
index 29109306b..490c55cc2 100644
--- a/src/core/frontend/applets/software_keyboard.h
+++ b/src/core/frontend/applets/software_keyboard.h
@@ -57,7 +57,7 @@ public:
57 57
58 virtual void InitializeKeyboard( 58 virtual void InitializeKeyboard(
59 bool is_inline, KeyboardInitializeParameters initialize_parameters, 59 bool is_inline, KeyboardInitializeParameters initialize_parameters,
60 std::function<void(Service::AM::Applets::SwkbdResult, std::u16string)> 60 std::function<void(Service::AM::Applets::SwkbdResult, std::u16string, bool)>
61 submit_normal_callback_, 61 submit_normal_callback_,
62 std::function<void(Service::AM::Applets::SwkbdReplyType, std::u16string, s32)> 62 std::function<void(Service::AM::Applets::SwkbdReplyType, std::u16string, s32)>
63 submit_inline_callback_) = 0; 63 submit_inline_callback_) = 0;
@@ -82,7 +82,7 @@ public:
82 82
83 void InitializeKeyboard( 83 void InitializeKeyboard(
84 bool is_inline, KeyboardInitializeParameters initialize_parameters, 84 bool is_inline, KeyboardInitializeParameters initialize_parameters,
85 std::function<void(Service::AM::Applets::SwkbdResult, std::u16string)> 85 std::function<void(Service::AM::Applets::SwkbdResult, std::u16string, bool)>
86 submit_normal_callback_, 86 submit_normal_callback_,
87 std::function<void(Service::AM::Applets::SwkbdReplyType, std::u16string, s32)> 87 std::function<void(Service::AM::Applets::SwkbdReplyType, std::u16string, s32)>
88 submit_inline_callback_) override; 88 submit_inline_callback_) override;
@@ -106,7 +106,7 @@ private:
106 106
107 KeyboardInitializeParameters parameters; 107 KeyboardInitializeParameters parameters;
108 108
109 mutable std::function<void(Service::AM::Applets::SwkbdResult, std::u16string)> 109 mutable std::function<void(Service::AM::Applets::SwkbdResult, std::u16string, bool)>
110 submit_normal_callback; 110 submit_normal_callback;
111 mutable std::function<void(Service::AM::Applets::SwkbdReplyType, std::u16string, s32)> 111 mutable std::function<void(Service::AM::Applets::SwkbdReplyType, std::u16string, s32)>
112 submit_inline_callback; 112 submit_inline_callback;
diff --git a/src/core/hle/service/am/applets/applet_software_keyboard.cpp b/src/core/hle/service/am/applets/applet_software_keyboard.cpp
index c89aa1bbf..1f21cee91 100644
--- a/src/core/hle/service/am/applets/applet_software_keyboard.cpp
+++ b/src/core/hle/service/am/applets/applet_software_keyboard.cpp
@@ -109,13 +109,18 @@ void SoftwareKeyboard::Execute() {
109 ShowNormalKeyboard(); 109 ShowNormalKeyboard();
110} 110}
111 111
112void SoftwareKeyboard::SubmitTextNormal(SwkbdResult result, std::u16string submitted_text) { 112void SoftwareKeyboard::SubmitTextNormal(SwkbdResult result, std::u16string submitted_text,
113 bool confirmed) {
113 if (complete) { 114 if (complete) {
114 return; 115 return;
115 } 116 }
116 117
117 if (swkbd_config_common.use_text_check && result == SwkbdResult::Ok) { 118 if (swkbd_config_common.use_text_check && result == SwkbdResult::Ok) {
118 SubmitForTextCheck(submitted_text); 119 if (confirmed) {
120 SubmitNormalOutputAndExit(result, submitted_text);
121 } else {
122 SubmitForTextCheck(submitted_text);
123 }
119 } else { 124 } else {
120 SubmitNormalOutputAndExit(result, submitted_text); 125 SubmitNormalOutputAndExit(result, submitted_text);
121 } 126 }
@@ -583,11 +588,12 @@ void SoftwareKeyboard::InitializeFrontendKeyboard() {
583 .disable_cancel_button{disable_cancel_button}, 588 .disable_cancel_button{disable_cancel_button},
584 }; 589 };
585 590
586 frontend.InitializeKeyboard(false, std::move(initialize_parameters), 591 frontend.InitializeKeyboard(
587 [this](SwkbdResult result, std::u16string submitted_text) { 592 false, std::move(initialize_parameters),
588 SubmitTextNormal(result, submitted_text); 593 [this](SwkbdResult result, std::u16string submitted_text, bool confirmed) {
589 }, 594 SubmitTextNormal(result, submitted_text, confirmed);
590 {}); 595 },
596 {});
591 } 597 }
592} 598}
593 599
diff --git a/src/core/hle/service/am/applets/applet_software_keyboard.h b/src/core/hle/service/am/applets/applet_software_keyboard.h
index 6009c10c7..a0fddd965 100644
--- a/src/core/hle/service/am/applets/applet_software_keyboard.h
+++ b/src/core/hle/service/am/applets/applet_software_keyboard.h
@@ -36,8 +36,9 @@ public:
36 * 36 *
37 * @param result SwkbdResult enum 37 * @param result SwkbdResult enum
38 * @param submitted_text UTF-16 encoded string 38 * @param submitted_text UTF-16 encoded string
39 * @param confirmed Whether the text has been confirmed after TextCheckResult::Confirm
39 */ 40 */
40 void SubmitTextNormal(SwkbdResult result, std::u16string submitted_text); 41 void SubmitTextNormal(SwkbdResult result, std::u16string submitted_text, bool confirmed);
41 42
42 /** 43 /**
43 * Submits the input text to the application. 44 * Submits the input text to the application.
diff --git a/src/yuzu/applets/qt_software_keyboard.cpp b/src/yuzu/applets/qt_software_keyboard.cpp
index 8fc0c5a36..a83a11a95 100644
--- a/src/yuzu/applets/qt_software_keyboard.cpp
+++ b/src/yuzu/applets/qt_software_keyboard.cpp
@@ -413,7 +413,7 @@ void QtSoftwareKeyboardDialog::ShowTextCheckDialog(
413 ? ui->text_edit_osk->toPlainText().toStdU16String() 413 ? ui->text_edit_osk->toPlainText().toStdU16String()
414 : ui->line_edit_osk->text().toStdU16String(); 414 : ui->line_edit_osk->text().toStdU16String();
415 415
416 emit SubmitNormalText(SwkbdResult::Ok, std::move(text)); 416 emit SubmitNormalText(SwkbdResult::Ok, std::move(text), true);
417 break; 417 break;
418 } 418 }
419 } 419 }
@@ -1510,7 +1510,8 @@ QtSoftwareKeyboard::~QtSoftwareKeyboard() = default;
1510 1510
1511void QtSoftwareKeyboard::InitializeKeyboard( 1511void QtSoftwareKeyboard::InitializeKeyboard(
1512 bool is_inline, Core::Frontend::KeyboardInitializeParameters initialize_parameters, 1512 bool is_inline, Core::Frontend::KeyboardInitializeParameters initialize_parameters,
1513 std::function<void(Service::AM::Applets::SwkbdResult, std::u16string)> submit_normal_callback_, 1513 std::function<void(Service::AM::Applets::SwkbdResult, std::u16string, bool)>
1514 submit_normal_callback_,
1514 std::function<void(Service::AM::Applets::SwkbdReplyType, std::u16string, s32)> 1515 std::function<void(Service::AM::Applets::SwkbdReplyType, std::u16string, s32)>
1515 submit_inline_callback_) { 1516 submit_inline_callback_) {
1516 if (is_inline) { 1517 if (is_inline) {
@@ -1609,8 +1610,8 @@ void QtSoftwareKeyboard::ExitKeyboard() const {
1609} 1610}
1610 1611
1611void QtSoftwareKeyboard::SubmitNormalText(Service::AM::Applets::SwkbdResult result, 1612void QtSoftwareKeyboard::SubmitNormalText(Service::AM::Applets::SwkbdResult result,
1612 std::u16string submitted_text) const { 1613 std::u16string submitted_text, bool confirmed) const {
1613 submit_normal_callback(result, submitted_text); 1614 submit_normal_callback(result, submitted_text, confirmed);
1614} 1615}
1615 1616
1616void QtSoftwareKeyboard::SubmitInlineText(Service::AM::Applets::SwkbdReplyType reply_type, 1617void QtSoftwareKeyboard::SubmitInlineText(Service::AM::Applets::SwkbdReplyType reply_type,
diff --git a/src/yuzu/applets/qt_software_keyboard.h b/src/yuzu/applets/qt_software_keyboard.h
index 1a03c098c..592d9c085 100644
--- a/src/yuzu/applets/qt_software_keyboard.h
+++ b/src/yuzu/applets/qt_software_keyboard.h
@@ -51,8 +51,8 @@ public:
51 void ExitKeyboard(); 51 void ExitKeyboard();
52 52
53signals: 53signals:
54 void SubmitNormalText(Service::AM::Applets::SwkbdResult result, 54 void SubmitNormalText(Service::AM::Applets::SwkbdResult result, std::u16string submitted_text,
55 std::u16string submitted_text) const; 55 bool confirmed = false) const;
56 56
57 void SubmitInlineText(Service::AM::Applets::SwkbdReplyType reply_type, 57 void SubmitInlineText(Service::AM::Applets::SwkbdReplyType reply_type,
58 std::u16string submitted_text, s32 cursor_position) const; 58 std::u16string submitted_text, s32 cursor_position) const;
@@ -234,7 +234,7 @@ public:
234 234
235 void InitializeKeyboard( 235 void InitializeKeyboard(
236 bool is_inline, Core::Frontend::KeyboardInitializeParameters initialize_parameters, 236 bool is_inline, Core::Frontend::KeyboardInitializeParameters initialize_parameters,
237 std::function<void(Service::AM::Applets::SwkbdResult, std::u16string)> 237 std::function<void(Service::AM::Applets::SwkbdResult, std::u16string, bool)>
238 submit_normal_callback_, 238 submit_normal_callback_,
239 std::function<void(Service::AM::Applets::SwkbdReplyType, std::u16string, s32)> 239 std::function<void(Service::AM::Applets::SwkbdReplyType, std::u16string, s32)>
240 submit_inline_callback_) override; 240 submit_inline_callback_) override;
@@ -272,13 +272,13 @@ signals:
272 void MainWindowExitKeyboard() const; 272 void MainWindowExitKeyboard() const;
273 273
274private: 274private:
275 void SubmitNormalText(Service::AM::Applets::SwkbdResult result, 275 void SubmitNormalText(Service::AM::Applets::SwkbdResult result, std::u16string submitted_text,
276 std::u16string submitted_text) const; 276 bool confirmed) const;
277 277
278 void SubmitInlineText(Service::AM::Applets::SwkbdReplyType reply_type, 278 void SubmitInlineText(Service::AM::Applets::SwkbdReplyType reply_type,
279 std::u16string submitted_text, s32 cursor_position) const; 279 std::u16string submitted_text, s32 cursor_position) const;
280 280
281 mutable std::function<void(Service::AM::Applets::SwkbdResult, std::u16string)> 281 mutable std::function<void(Service::AM::Applets::SwkbdResult, std::u16string, bool)>
282 submit_normal_callback; 282 submit_normal_callback;
283 mutable std::function<void(Service::AM::Applets::SwkbdReplyType, std::u16string, s32)> 283 mutable std::function<void(Service::AM::Applets::SwkbdReplyType, std::u16string, s32)>
284 submit_inline_callback; 284 submit_inline_callback;
diff --git a/src/yuzu/main.cpp b/src/yuzu/main.cpp
index f6fb23085..5c767e8f2 100644
--- a/src/yuzu/main.cpp
+++ b/src/yuzu/main.cpp
@@ -483,8 +483,9 @@ void GMainWindow::SoftwareKeyboardInitialize(
483 } else { 483 } else {
484 connect( 484 connect(
485 software_keyboard, &QtSoftwareKeyboardDialog::SubmitNormalText, this, 485 software_keyboard, &QtSoftwareKeyboardDialog::SubmitNormalText, this,
486 [this](Service::AM::Applets::SwkbdResult result, std::u16string submitted_text) { 486 [this](Service::AM::Applets::SwkbdResult result, std::u16string submitted_text,
487 emit SoftwareKeyboardSubmitNormalText(result, submitted_text); 487 bool confirmed) {
488 emit SoftwareKeyboardSubmitNormalText(result, submitted_text, confirmed);
488 }, 489 },
489 Qt::QueuedConnection); 490 Qt::QueuedConnection);
490 } 491 }
diff --git a/src/yuzu/main.h b/src/yuzu/main.h
index aed15a0a0..981102daa 100644
--- a/src/yuzu/main.h
+++ b/src/yuzu/main.h
@@ -150,7 +150,7 @@ signals:
150 void ProfileSelectorFinishedSelection(std::optional<Common::UUID> uuid); 150 void ProfileSelectorFinishedSelection(std::optional<Common::UUID> uuid);
151 151
152 void SoftwareKeyboardSubmitNormalText(Service::AM::Applets::SwkbdResult result, 152 void SoftwareKeyboardSubmitNormalText(Service::AM::Applets::SwkbdResult result,
153 std::u16string submitted_text); 153 std::u16string submitted_text, bool confirmed);
154 void SoftwareKeyboardSubmitInlineText(Service::AM::Applets::SwkbdReplyType reply_type, 154 void SoftwareKeyboardSubmitInlineText(Service::AM::Applets::SwkbdReplyType reply_type,
155 std::u16string submitted_text, s32 cursor_position); 155 std::u16string submitted_text, s32 cursor_position);
156 156