From d80edd99d7c8f23cb27d77521cff50efc67b08a4 Mon Sep 17 00:00:00 2001 From: Tobias Date: Sat, 10 Aug 2019 11:01:18 +0200 Subject: [PATCH] Port yuzu-emu/yuzu#2457: "yuzu/{about_dialog, main}: Specify string conversions explicitly for SCM-related info" (#4774) * yuzu/about_dialog: Specify string conversions explicitly Specifies the conversions explicitly to avoid implicit conversions from const char* to QString. This makes it easier to disable implicit QString conversions in the future. In this case, the implicit conversion was technically wrong as well. The implicit conversion treats the input strings as ASCII characters. This would result in an incorrect conversion being performed in the rare case a branch name was created with a non-ASCII Unicode character, likely resulting in junk being displayed. * yuzu/main: Move window title updating logic to its own function For similar reasons to the previous change, we move this to a single function, so we don't need to duplicate the conversion logic in several places within main.cpp. --- src/citra_qt/aboutdialog.cpp | 8 ++++---- src/citra_qt/main.cpp | 16 +++++++++------- src/citra_qt/main.h | 2 +- 3 files changed, 14 insertions(+), 12 deletions(-) diff --git a/src/citra_qt/aboutdialog.cpp b/src/citra_qt/aboutdialog.cpp index ac2d3d91c..a45a3e3ea 100644 --- a/src/citra_qt/aboutdialog.cpp +++ b/src/citra_qt/aboutdialog.cpp @@ -11,10 +11,10 @@ AboutDialog::AboutDialog(QWidget* parent) : QDialog(parent, Qt::WindowTitleHint | Qt::WindowCloseButtonHint | Qt::WindowSystemMenuHint), ui(new Ui::AboutDialog) { ui->setupUi(this); - ui->labelLogo->setPixmap(QIcon::fromTheme("citra").pixmap(200)); - ui->labelBuildInfo->setText( - ui->labelBuildInfo->text().arg(Common::g_build_fullname, Common::g_scm_branch, - Common::g_scm_desc, QString(Common::g_build_date).left(10))); + ui->labelLogo->setPixmap(QIcon::fromTheme(QStringLiteral("citra")).pixmap(200)); + ui->labelBuildInfo->setText(ui->labelBuildInfo->text().arg( + QString::fromUtf8(Common::g_build_fullname), QString::fromUtf8(Common::g_scm_branch), + QString::fromUtf8(Common::g_scm_desc), QString::fromUtf8(Common::g_build_date).left(10))); } AboutDialog::~AboutDialog() = default; diff --git a/src/citra_qt/main.cpp b/src/citra_qt/main.cpp index 5a7d7c2d5..5fd38fd86 100644 --- a/src/citra_qt/main.cpp +++ b/src/citra_qt/main.cpp @@ -158,9 +158,9 @@ GMainWindow::GMainWindow() : config(new Config()), emu_thread(nullptr) { ConnectMenuEvents(); ConnectWidgetEvents(); - SetupUIStrings(); LOG_INFO(Frontend, "Citra Version: {} | {}-{}", Common::g_build_fullname, Common::g_scm_branch, Common::g_scm_desc); + UpdateWindowTitle(); show(); @@ -797,7 +797,7 @@ bool GMainWindow::LoadROM(const QString& filename) { std::string title; system.GetAppLoader().ReadTitle(title); game_title = QString::fromStdString(title); - SetupUIStrings(); + UpdateWindowTitle(); game_path = filename; @@ -927,7 +927,7 @@ void GMainWindow::ShutdownGame() { } game_title.clear(); - SetupUIStrings(); + UpdateWindowTitle(); game_path.clear(); } @@ -1813,7 +1813,7 @@ void GMainWindow::OnLanguageChanged(const QString& locale) { LoadTranslation(); ui.retranslateUi(this); RetranslateStatusBar(); - SetupUIStrings(); + UpdateWindowTitle(); if (emulation_running) ui.action_Start->setText(tr("Continue")); @@ -1826,11 +1826,13 @@ void GMainWindow::OnMoviePlaybackCompleted() { ui.action_Stop_Recording_Playback->setEnabled(false); } -void GMainWindow::SetupUIStrings() { +void GMainWindow::UpdateWindowTitle() { + const QString full_name = QString::fromUtf8(Common::g_build_fullname); + if (game_title.isEmpty()) { - setWindowTitle(tr("Citra %1").arg(Common::g_build_fullname)); + setWindowTitle(tr("Citra %1").arg(full_name)); } else { - setWindowTitle(tr("Citra %1| %2").arg(Common::g_build_fullname, game_title)); + setWindowTitle(tr("Citra %1| %2").arg(full_name, game_title)); } } diff --git a/src/citra_qt/main.h b/src/citra_qt/main.h index 256469215..068a8da8a 100644 --- a/src/citra_qt/main.h +++ b/src/citra_qt/main.h @@ -197,7 +197,7 @@ private: Q_INVOKABLE void OnMoviePlaybackCompleted(); void UpdateStatusBar(); void LoadTranslation(); - void SetupUIStrings(); + void UpdateWindowTitle(); void RetranslateStatusBar(); void InstallCIA(QStringList filepaths);