forked from etc/pineapple-src
early-access version 2732
This commit is contained in:
parent
e1efbad3be
commit
9ebf8edc43
5 changed files with 26 additions and 17 deletions
|
@ -1,7 +1,7 @@
|
||||||
yuzu emulator early access
|
yuzu emulator early access
|
||||||
=============
|
=============
|
||||||
|
|
||||||
This is the source code for early-access 2731.
|
This is the source code for early-access 2732.
|
||||||
|
|
||||||
## Legal Notice
|
## Legal Notice
|
||||||
|
|
||||||
|
|
|
@ -178,6 +178,10 @@ std::wstring UTF8ToUTF16W(const std::string& input) {
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
std::u16string U16StringFromBuffer(const u16* input, std::size_t length) {
|
||||||
|
return std::u16string(reinterpret_cast<const char16_t*>(input), length);
|
||||||
|
}
|
||||||
|
|
||||||
std::string StringFromFixedZeroTerminatedBuffer(std::string_view buffer, std::size_t max_len) {
|
std::string StringFromFixedZeroTerminatedBuffer(std::string_view buffer, std::size_t max_len) {
|
||||||
std::size_t len = 0;
|
std::size_t len = 0;
|
||||||
while (len < buffer.length() && len < max_len && buffer[len] != '\0') {
|
while (len < buffer.length() && len < max_len && buffer[len] != '\0') {
|
||||||
|
|
|
@ -44,6 +44,8 @@ bool SplitPath(const std::string& full_path, std::string* _pPath, std::string* _
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
[[nodiscard]] std::u16string U16StringFromBuffer(const u16* input, std::size_t length);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Compares the string defined by the range [`begin`, `end`) to the null-terminated C-string
|
* Compares the string defined by the range [`begin`, `end`) to the null-terminated C-string
|
||||||
* `other` for equality.
|
* `other` for equality.
|
||||||
|
|
|
@ -411,11 +411,11 @@ void QtSoftwareKeyboardDialog::ShowTextCheckDialog(
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
auto text = ui->topOSK->currentIndex() == 1
|
const auto text = ui->topOSK->currentIndex() == 1 ? ui->text_edit_osk->toPlainText()
|
||||||
? ui->text_edit_osk->toPlainText().toStdU16String()
|
: ui->line_edit_osk->text();
|
||||||
: ui->line_edit_osk->text().toStdU16String();
|
auto text_str = Common::U16StringFromBuffer(text.utf16(), text.size());
|
||||||
|
|
||||||
emit SubmitNormalText(SwkbdResult::Ok, std::move(text), true);
|
emit SubmitNormalText(SwkbdResult::Ok, std::move(text_str), true);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -562,7 +562,7 @@ void QtSoftwareKeyboardDialog::keyPressEvent(QKeyEvent* event) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
InlineTextInsertString(entered_text.toStdU16String());
|
InlineTextInsertString(Common::U16StringFromBuffer(entered_text.utf16(), entered_text.size()));
|
||||||
}
|
}
|
||||||
|
|
||||||
void QtSoftwareKeyboardDialog::MoveAndResizeWindow(QPoint pos, QSize size) {
|
void QtSoftwareKeyboardDialog::MoveAndResizeWindow(QPoint pos, QSize size) {
|
||||||
|
@ -1119,11 +1119,11 @@ void QtSoftwareKeyboardDialog::NormalKeyboardButtonClicked(QPushButton* button)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (button == ui->button_ok || button == ui->button_ok_shift || button == ui->button_ok_num) {
|
if (button == ui->button_ok || button == ui->button_ok_shift || button == ui->button_ok_num) {
|
||||||
auto text = ui->topOSK->currentIndex() == 1
|
const auto text = ui->topOSK->currentIndex() == 1 ? ui->text_edit_osk->toPlainText()
|
||||||
? ui->text_edit_osk->toPlainText().toStdU16String()
|
: ui->line_edit_osk->text();
|
||||||
: ui->line_edit_osk->text().toStdU16String();
|
auto text_str = Common::U16StringFromBuffer(text.utf16(), text.size());
|
||||||
|
|
||||||
emit SubmitNormalText(SwkbdResult::Ok, std::move(text));
|
emit SubmitNormalText(SwkbdResult::Ok, std::move(text_str));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1189,7 +1189,8 @@ void QtSoftwareKeyboardDialog::InlineKeyboardButtonClicked(QPushButton* button)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
InlineTextInsertString(button->text().toStdU16String());
|
const auto button_text = button->text();
|
||||||
|
InlineTextInsertString(Common::U16StringFromBuffer(button_text.utf16(), button_text.size()));
|
||||||
|
|
||||||
// Revert the keyboard to lowercase if the shift key is active.
|
// Revert the keyboard to lowercase if the shift key is active.
|
||||||
if (bottom_osk_index == BottomOSKIndex::UpperCase && !caps_lock_enabled) {
|
if (bottom_osk_index == BottomOSKIndex::UpperCase && !caps_lock_enabled) {
|
||||||
|
@ -1282,11 +1283,11 @@ void QtSoftwareKeyboardDialog::TranslateButtonPress(Core::HID::NpadButton button
|
||||||
if (is_inline) {
|
if (is_inline) {
|
||||||
emit SubmitInlineText(SwkbdReplyType::DecidedCancel, current_text, cursor_position);
|
emit SubmitInlineText(SwkbdReplyType::DecidedCancel, current_text, cursor_position);
|
||||||
} else {
|
} else {
|
||||||
auto text = ui->topOSK->currentIndex() == 1
|
const auto text = ui->topOSK->currentIndex() == 1 ? ui->text_edit_osk->toPlainText()
|
||||||
? ui->text_edit_osk->toPlainText().toStdU16String()
|
: ui->line_edit_osk->text();
|
||||||
: ui->line_edit_osk->text().toStdU16String();
|
auto text_str = Common::U16StringFromBuffer(text.utf16(), text.size());
|
||||||
|
|
||||||
emit SubmitNormalText(SwkbdResult::Cancel, std::move(text));
|
emit SubmitNormalText(SwkbdResult::Cancel, std::move(text_str));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case Core::HID::NpadButton::Y:
|
case Core::HID::NpadButton::Y:
|
||||||
|
|
|
@ -1401,7 +1401,8 @@ void GMainWindow::BootGame(const QString& filename, u64 program_id, std::size_t
|
||||||
if (loader != nullptr && loader->ReadProgramId(title_id) == Loader::ResultStatus::Success &&
|
if (loader != nullptr && loader->ReadProgramId(title_id) == Loader::ResultStatus::Success &&
|
||||||
type == StartGameType::Normal) {
|
type == StartGameType::Normal) {
|
||||||
// Load per game settings
|
// Load per game settings
|
||||||
const auto file_path = std::filesystem::path{filename.toStdU16String()};
|
const auto file_path =
|
||||||
|
std::filesystem::path{Common::U16StringFromBuffer(filename.utf16(), filename.size())};
|
||||||
const auto config_file_name = title_id == 0
|
const auto config_file_name = title_id == 0
|
||||||
? Common::FS::PathToUTF8String(file_path.filename())
|
? Common::FS::PathToUTF8String(file_path.filename())
|
||||||
: fmt::format("{:016X}", title_id);
|
: fmt::format("{:016X}", title_id);
|
||||||
|
@ -1482,7 +1483,8 @@ void GMainWindow::BootGame(const QString& filename, u64 program_id, std::size_t
|
||||||
}
|
}
|
||||||
if (res != Loader::ResultStatus::Success || title_name.empty()) {
|
if (res != Loader::ResultStatus::Success || title_name.empty()) {
|
||||||
title_name = Common::FS::PathToUTF8String(
|
title_name = Common::FS::PathToUTF8String(
|
||||||
std::filesystem::path{filename.toStdU16String()}.filename());
|
std::filesystem::path{Common::U16StringFromBuffer(filename.utf16(), filename.size())}
|
||||||
|
.filename());
|
||||||
}
|
}
|
||||||
const bool is_64bit = system->Kernel().CurrentProcess()->Is64BitProcess();
|
const bool is_64bit = system->Kernel().CurrentProcess()->Is64BitProcess();
|
||||||
const auto instruction_set_suffix = is_64bit ? tr("(64-bit)") : tr("(32-bit)");
|
const auto instruction_set_suffix = is_64bit ? tr("(64-bit)") : tr("(32-bit)");
|
||||||
|
|
Loading…
Reference in a new issue