summaryrefslogtreecommitdiff
path: root/src/yuzu
diff options
context:
space:
mode:
Diffstat (limited to 'src/yuzu')
-rw-r--r--src/yuzu/CMakeLists.txt13
-rw-r--r--src/yuzu/applets/software_keyboard.cpp43
-rw-r--r--src/yuzu/configuration/configure_dialog.cpp14
-rw-r--r--src/yuzu/configuration/configure_dialog.h3
-rw-r--r--src/yuzu/configuration/configure_per_game.cpp14
-rw-r--r--src/yuzu/configuration/configure_per_game.h2
-rw-r--r--src/yuzu/main.cpp40
-rw-r--r--src/yuzu/uisettings.h2
8 files changed, 82 insertions, 49 deletions
diff --git a/src/yuzu/CMakeLists.txt b/src/yuzu/CMakeLists.txt
index cc0790e07..634fe66a5 100644
--- a/src/yuzu/CMakeLists.txt
+++ b/src/yuzu/CMakeLists.txt
@@ -4,6 +4,12 @@ set(CMAKE_AUTOUIC ON)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${PROJECT_SOURCE_DIR}/CMakeModules)
+# Set the RPATH for Qt Libraries
+# This must be done before the `yuzu` target is created
+if (YUZU_USE_BUNDLED_QT AND (${CMAKE_SYSTEM_NAME} STREQUAL "Linux"))
+ set(CMAKE_BUILD_RPATH "${CMAKE_BINARY_DIR}/bin/lib/")
+endif()
+
add_executable(yuzu
Info.plist
about_dialog.cpp
@@ -278,11 +284,14 @@ if(UNIX AND NOT APPLE)
install(TARGETS yuzu RUNTIME DESTINATION "${CMAKE_INSTALL_PREFIX}/bin")
endif()
-if (MSVC)
+if (YUZU_USE_BUNDLED_QT)
include(CopyYuzuQt5Deps)
+ copy_yuzu_Qt5_deps(yuzu)
+endif()
+
+if (MSVC)
include(CopyYuzuSDLDeps)
include(CopyYuzuFFmpegDeps)
- copy_yuzu_Qt5_deps(yuzu)
copy_yuzu_SDL_deps(yuzu)
copy_yuzu_FFmpeg_deps(yuzu)
endif()
diff --git a/src/yuzu/applets/software_keyboard.cpp b/src/yuzu/applets/software_keyboard.cpp
index b0f764994..aa453a79f 100644
--- a/src/yuzu/applets/software_keyboard.cpp
+++ b/src/yuzu/applets/software_keyboard.cpp
@@ -720,21 +720,9 @@ void QtSoftwareKeyboardDialog::SetTextDrawType() {
ui->line_edit_osk->setFocus();
});
- connect(ui->line_edit_osk, &QLineEdit::returnPressed, [this] {
- switch (bottom_osk_index) {
- case BottomOSKIndex::LowerCase:
- ui->button_ok->click();
- break;
- case BottomOSKIndex::UpperCase:
- ui->button_ok_shift->click();
- break;
- case BottomOSKIndex::NumberPad:
- ui->button_ok_num->click();
- break;
- default:
- break;
- }
- });
+ connect(
+ ui->line_edit_osk, &QLineEdit::returnPressed, this,
+ [this] { TranslateButtonPress(HIDButton::Plus); }, Qt::QueuedConnection);
ui->line_edit_osk->setPlaceholderText(
QString::fromStdU16String(initialize_parameters.guide_text));
@@ -1113,12 +1101,11 @@ void QtSoftwareKeyboardDialog::NormalKeyboardButtonClicked(QPushButton* button)
}
if (button == ui->button_ok || button == ui->button_ok_shift || button == ui->button_ok_num) {
- if (ui->topOSK->currentIndex() == 1) {
- emit SubmitNormalText(SwkbdResult::Ok,
- ui->text_edit_osk->toPlainText().toStdU16String());
- } else {
- emit SubmitNormalText(SwkbdResult::Ok, ui->line_edit_osk->text().toStdU16String());
- }
+ auto text = ui->topOSK->currentIndex() == 1
+ ? ui->text_edit_osk->toPlainText().toStdU16String()
+ : ui->line_edit_osk->text().toStdU16String();
+
+ emit SubmitNormalText(SwkbdResult::Ok, std::move(text));
return;
}
@@ -1277,13 +1264,11 @@ void QtSoftwareKeyboardDialog::TranslateButtonPress(HIDButton button) {
if (is_inline) {
emit SubmitInlineText(SwkbdReplyType::DecidedCancel, current_text, cursor_position);
} else {
- if (ui->topOSK->currentIndex() == 1) {
- emit SubmitNormalText(SwkbdResult::Cancel,
- ui->text_edit_osk->toPlainText().toStdU16String());
- } else {
- emit SubmitNormalText(SwkbdResult::Cancel,
- ui->line_edit_osk->text().toStdU16String());
- }
+ auto text = ui->topOSK->currentIndex() == 1
+ ? ui->text_edit_osk->toPlainText().toStdU16String()
+ : ui->line_edit_osk->text().toStdU16String();
+
+ emit SubmitNormalText(SwkbdResult::Cancel, std::move(text));
}
break;
case HIDButton::Y:
@@ -1575,7 +1560,7 @@ void QtSoftwareKeyboard::ShowNormalKeyboard() const {
void QtSoftwareKeyboard::ShowTextCheckDialog(
Service::AM::Applets::SwkbdTextCheckResult text_check_result,
std::u16string text_check_message) const {
- emit MainWindowShowTextCheckDialog(text_check_result, text_check_message);
+ emit MainWindowShowTextCheckDialog(text_check_result, std::move(text_check_message));
}
void QtSoftwareKeyboard::ShowInlineKeyboard(
diff --git a/src/yuzu/configuration/configure_dialog.cpp b/src/yuzu/configuration/configure_dialog.cpp
index 3ad40d2b3..6028135c5 100644
--- a/src/yuzu/configuration/configure_dialog.cpp
+++ b/src/yuzu/configuration/configure_dialog.cpp
@@ -2,8 +2,11 @@
// Licensed under GPLv2 or any later version
// Refer to the license.txt file included.
+#include <QAbstractButton>
+#include <QDialogButtonBox>
#include <QHash>
#include <QListWidgetItem>
+#include <QPushButton>
#include <QSignalBlocker>
#include "common/settings.h"
#include "core/core.h"
@@ -31,6 +34,12 @@ ConfigureDialog::ConfigureDialog(QWidget* parent, HotkeyRegistry& registry,
connect(ui->selectorList, &QListWidget::itemSelectionChanged, this,
&ConfigureDialog::UpdateVisibleTabs);
+ if (Core::System::GetInstance().IsPoweredOn()) {
+ QPushButton* apply_button = ui->buttonBox->addButton(QDialogButtonBox::Apply);
+ connect(apply_button, &QAbstractButton::clicked, this,
+ &ConfigureDialog::HandleApplyButtonClicked);
+ }
+
adjustSize();
ui->selectorList->setCurrentRow(0);
}
@@ -80,6 +89,11 @@ void ConfigureDialog::RetranslateUI() {
ui->tabWidget->setCurrentIndex(old_index);
}
+void ConfigureDialog::HandleApplyButtonClicked() {
+ UISettings::values.configuration_applied = true;
+ ApplyConfiguration();
+}
+
Q_DECLARE_METATYPE(QList<QWidget*>);
void ConfigureDialog::PopulateSelectionList() {
diff --git a/src/yuzu/configuration/configure_dialog.h b/src/yuzu/configuration/configure_dialog.h
index 570c3b941..abe019635 100644
--- a/src/yuzu/configuration/configure_dialog.h
+++ b/src/yuzu/configuration/configure_dialog.h
@@ -35,9 +35,10 @@ signals:
private:
void changeEvent(QEvent* event) override;
-
void RetranslateUI();
+ void HandleApplyButtonClicked();
+
void SetConfiguration();
void UpdateVisibleTabs();
void PopulateSelectionList();
diff --git a/src/yuzu/configuration/configure_per_game.cpp b/src/yuzu/configuration/configure_per_game.cpp
index 007d93c77..7dfcf150c 100644
--- a/src/yuzu/configuration/configure_per_game.cpp
+++ b/src/yuzu/configuration/configure_per_game.cpp
@@ -7,9 +7,12 @@
#include <string>
#include <utility>
+#include <QAbstractButton>
#include <QCheckBox>
+#include <QDialogButtonBox>
#include <QHeaderView>
#include <QMenu>
+#include <QPushButton>
#include <QStandardItemModel>
#include <QString>
#include <QTimer>
@@ -45,6 +48,12 @@ ConfigurePerGame::ConfigurePerGame(QWidget* parent, u64 title_id, std::string_vi
scene = new QGraphicsScene;
ui->icon_view->setScene(scene);
+ if (Core::System::GetInstance().IsPoweredOn()) {
+ QPushButton* apply_button = ui->buttonBox->addButton(QDialogButtonBox::Apply);
+ connect(apply_button, &QAbstractButton::clicked, this,
+ &ConfigurePerGame::HandleApplyButtonClicked);
+ }
+
LoadConfiguration();
}
@@ -77,6 +86,11 @@ void ConfigurePerGame::RetranslateUI() {
ui->retranslateUi(this);
}
+void ConfigurePerGame::HandleApplyButtonClicked() {
+ UISettings::values.configuration_applied = true;
+ ApplyConfiguration();
+}
+
void ConfigurePerGame::LoadFromFile(FileSys::VirtualFile file) {
this->file = std::move(file);
LoadConfiguration();
diff --git a/src/yuzu/configuration/configure_per_game.h b/src/yuzu/configuration/configure_per_game.h
index d86749a0e..dc6b68763 100644
--- a/src/yuzu/configuration/configure_per_game.h
+++ b/src/yuzu/configuration/configure_per_game.h
@@ -40,6 +40,8 @@ private:
void changeEvent(QEvent* event) override;
void RetranslateUI();
+ void HandleApplyButtonClicked();
+
void LoadConfiguration();
std::unique_ptr<Ui::ConfigurePerGame> ui;
diff --git a/src/yuzu/main.cpp b/src/yuzu/main.cpp
index 1d63ababb..dd8dd3233 100644
--- a/src/yuzu/main.cpp
+++ b/src/yuzu/main.cpp
@@ -2594,12 +2594,12 @@ void GMainWindow::OnConfigure() {
&GMainWindow::OnLanguageChanged);
const auto result = configure_dialog.exec();
- if (result != QDialog::Accepted) {
+ if (result != QDialog::Accepted && !UISettings::values.configuration_applied) {
return;
+ } else if (result == QDialog::Accepted) {
+ configure_dialog.ApplyConfiguration();
+ controller_dialog->refreshConfiguration();
}
-
- configure_dialog.ApplyConfiguration();
- controller_dialog->refreshConfiguration();
InitializeHotkeys();
if (UISettings::values.theme != old_theme) {
UpdateUITheme();
@@ -2614,6 +2614,8 @@ void GMainWindow::OnConfigure() {
game_list->PopulateAsync(UISettings::values.game_dirs);
}
+ UISettings::values.configuration_applied = false;
+
config->Save();
if ((UISettings::values.hide_mouse || Settings::values.mouse_panning) && emulation_running) {
@@ -2643,23 +2645,27 @@ void GMainWindow::OpenPerGameConfiguration(u64 title_id, const std::string& file
ConfigurePerGame dialog(this, title_id, file_name);
dialog.LoadFromFile(v_file);
const auto result = dialog.exec();
- if (result == QDialog::Accepted) {
+
+ if (result != QDialog::Accepted && !UISettings::values.configuration_applied) {
+ Settings::RestoreGlobalState(system.IsPoweredOn());
+ return;
+ } else if (result == QDialog::Accepted) {
dialog.ApplyConfiguration();
+ }
- const auto reload = UISettings::values.is_game_list_reload_pending.exchange(false);
- if (reload) {
- game_list->PopulateAsync(UISettings::values.game_dirs);
- }
+ const auto reload = UISettings::values.is_game_list_reload_pending.exchange(false);
+ if (reload) {
+ game_list->PopulateAsync(UISettings::values.game_dirs);
+ }
- // Do not cause the global config to write local settings into the config file
- const bool is_powered_on = system.IsPoweredOn();
- Settings::RestoreGlobalState(is_powered_on);
+ // Do not cause the global config to write local settings into the config file
+ const bool is_powered_on = system.IsPoweredOn();
+ Settings::RestoreGlobalState(is_powered_on);
- if (!is_powered_on) {
- config->Save();
- }
- } else {
- Settings::RestoreGlobalState(system.IsPoweredOn());
+ UISettings::values.configuration_applied = false;
+
+ if (!is_powered_on) {
+ config->Save();
}
}
diff --git a/src/yuzu/uisettings.h b/src/yuzu/uisettings.h
index 5ba00b8c8..49122ec32 100644
--- a/src/yuzu/uisettings.h
+++ b/src/yuzu/uisettings.h
@@ -95,6 +95,8 @@ struct Values {
uint8_t row_2_text_id;
std::atomic_bool is_game_list_reload_pending{false};
bool cache_game_list;
+
+ bool configuration_applied;
};
extern Values values;