diff --git a/.ci/build-mac-arm64.sh b/.ci/build-mac-arm64.sh index 4db1e27e80..0abbf1e602 100644 --- a/.ci/build-mac-arm64.sh +++ b/.ci/build-mac-arm64.sh @@ -72,13 +72,13 @@ if [ ! -d "/tmp/Qt/$QT_VER" ]; then git clone https://github.com/engnr/qt-downloader.git cd qt-downloader git checkout f52efee0f18668c6d6de2dec0234b8c4bc54c597 - # nested Qt 6.8.3 URL workaround + # nested Qt 6.9.0 URL workaround # sed -i '' "s/'qt{0}_{0}{1}{2}'.format(major, minor, patch)]))/'qt{0}_{0}{1}{2}'.format(major, minor, patch), 'qt{0}_{0}{1}{2}'.format(major, minor, patch)]))/g" qt-downloader # sed -i '' "s/'{}\/{}\/qt{}_{}\/'/'{0}\/{1}\/qt{2}_{3}\/qt{2}_{3}\/'/g" qt-downloader cd "/tmp/Qt" "$BREW_X64_PATH/bin/pipenv" run pip3 install py7zr requests semantic_version lxml mkdir -p "$QT_VER/macos" ; ln -s "macos" "$QT_VER/clang_64" - # sed -i '' 's/args\.version \/ derive_toolchain_dir(args) \/ //g' "$WORKDIR/qt-downloader/qt-downloader" # Qt 6.8.3 workaround + # sed -i '' 's/args\.version \/ derive_toolchain_dir(args) \/ //g' "$WORKDIR/qt-downloader/qt-downloader" # Qt 6.9.0 workaround "$BREW_X64_PATH/bin/pipenv" run "$WORKDIR/qt-downloader/qt-downloader" macos desktop "$QT_VER" clang_64 --opensource --addons qtmultimedia qtimageformats # -o "$QT_VER/clang_64" fi diff --git a/.ci/build-mac.sh b/.ci/build-mac.sh index 64583f31d2..421ea4184a 100644 --- a/.ci/build-mac.sh +++ b/.ci/build-mac.sh @@ -39,13 +39,13 @@ if [ ! -d "/tmp/Qt/$QT_VER" ]; then git clone https://github.com/engnr/qt-downloader.git cd qt-downloader git checkout f52efee0f18668c6d6de2dec0234b8c4bc54c597 - # nested Qt 6.8.3 URL workaround + # nested Qt 6.9.0 URL workaround # sed -i '' "s/'qt{0}_{0}{1}{2}'.format(major, minor, patch)]))/'qt{0}_{0}{1}{2}'.format(major, minor, patch), 'qt{0}_{0}{1}{2}'.format(major, minor, patch)]))/g" qt-downloader # sed -i '' "s/'{}\/{}\/qt{}_{}\/'/'{0}\/{1}\/qt{2}_{3}\/qt{2}_{3}\/'/g" qt-downloader cd "/tmp/Qt" "$BREW_X64_PATH/bin/pipenv" run pip3 install py7zr requests semantic_version lxml mkdir -p "$QT_VER/macos" ; ln -s "macos" "$QT_VER/clang_64" - # sed -i '' 's/args\.version \/ derive_toolchain_dir(args) \/ //g' "$WORKDIR/qt-downloader/qt-downloader" # Qt 6.8.3 workaround + # sed -i '' 's/args\.version \/ derive_toolchain_dir(args) \/ //g' "$WORKDIR/qt-downloader/qt-downloader" # Qt 6.9.0 workaround "$BREW_X64_PATH/bin/pipenv" run "$WORKDIR/qt-downloader/qt-downloader" macos desktop "$QT_VER" clang_64 --opensource --addons qtmultimedia qtimageformats # -o "$QT_VER/clang_64" fi diff --git a/.cirrus.yml b/.cirrus.yml index 6041cc8702..4305e16f6f 100644 --- a/.cirrus.yml +++ b/.cirrus.yml @@ -7,7 +7,7 @@ env: BUILD_SOURCEBRANCHNAME: $CIRRUS_BRANCH RPCS3_TOKEN: ENCRYPTED[100ebb8e3552bf2021d0ef55dccda3e58d27be5b6cab0b0b92843ef490195d3c4edaefa087e4a3b425caa6392300b9b1] QT_VER_MAIN: '6' - QT_VER: '6.8.3' + QT_VER: '6.9.0' LLVM_COMPILER_VER: '19' LLVM_VER: '19.1.7' @@ -23,7 +23,7 @@ env: # COMPILER: msvc # BUILD_ARTIFACTSTAGINGDIRECTORY: ${CIRRUS_WORKING_DIR}\artifacts\ # QT_VER_MSVC: 'msvc2022' -# QT_DATE: '202503201308' +# QT_DATE: '202503301022' # QTDIR: C:\Qt\${QT_VER}\${QT_VER_MSVC}_64 # VULKAN_VER: '1.3.268.0' # VULKAN_SDK_SHA: '8459ef49bd06b697115ddd3d97c9aec729e849cd775f5be70897718a9b3b9db5' diff --git a/.github/workflows/rpcs3.yml b/.github/workflows/rpcs3.yml index 683712cf69..1a820bdc4f 100644 --- a/.github/workflows/rpcs3.yml +++ b/.github/workflows/rpcs3.yml @@ -105,9 +105,9 @@ jobs: env: COMPILER: msvc QT_VER_MAIN: '6' - QT_VER: '6.8.3' + QT_VER: '6.9.0' QT_VER_MSVC: 'msvc2022' - QT_DATE: '202503201308' + QT_DATE: '202503301022' LLVM_VER: '19.1.7' VULKAN_VER: '1.3.268.0' VULKAN_SDK_SHA: '8459ef49bd06b697115ddd3d97c9aec729e849cd775f5be70897718a9b3b9db5' diff --git a/BUILDING.md b/BUILDING.md index 83693b0f44..d9131e5929 100644 --- a/BUILDING.md +++ b/BUILDING.md @@ -19,26 +19,26 @@ The following tools are required to build RPCS3 on Windows 10 or later: with standalone **CMake** tool. - [Python 3.6+](https://www.python.org/downloads/) (add to PATH) -- [Qt 6.8.3](https://www.qt.io/download-qt-installer) In case you can't download from the official installer, you can use [Another Qt installer](https://github.com/miurahr/aqtinstall) (In that case you will need to manually add the "qtmultimedia" module when installing Qt) +- [Qt 6.9.0](https://www.qt.io/download-qt-installer) In case you can't download from the official installer, you can use [Another Qt installer](https://github.com/miurahr/aqtinstall) (In that case you will need to manually add the "qtmultimedia" module when installing Qt) - [Vulkan SDK 1.3.268.0](https://vulkan.lunarg.com/sdk/home) (see "Install the SDK" [here](https://vulkan.lunarg.com/doc/sdk/latest/windows/getting_started.html)) for now future SDKs don't work. You need precisely 1.3.268.0. The `sln` solution available only on **Visual Studio** is the preferred building solution. It easily allows to build the **RPCS3** application in `Release` and `Debug` mode. In order to build **RPCS3** with the `sln` solution (with **Visual Studio**), **Qt** libs need to be detected. To detect the libs: -- add and set the `QTDIR` environment variable, e.g. `\6.8.3\msvc2022_64\` +- add and set the `QTDIR` environment variable, e.g. `\6.9.0\msvc2022_64\` - or use the [Visual Studio Qt Plugin](https://marketplace.visualstudio.com/items?itemName=TheQtCompany.QtVisualStudioTools2022) **NOTE:** If you have issues with the **Visual Studio Qt Plugin**, you may want to uninstall it and install the [Legacy Qt Plugin](https://marketplace.visualstudio.com/items?itemName=TheQtCompany.LEGACYQtVisualStudioTools2022) instead. In order to build **RPCS3** with the `CMake` solution (with both **Visual Studio** and standalone **CMake** tool): -- add and set the `Qt6_ROOT` environment variable to the **Qt** libs path, e.g. `\6.8.3\msvc2022_64\` +- add and set the `Qt6_ROOT` environment variable to the **Qt** libs path, e.g. `\6.9.0\msvc2022_64\` ### Linux These are the essentials tools to build RPCS3 on Linux. Some of them can be installed through your favorite package manager: - Clang 17+ or GCC 13+ - [CMake 3.28.0+](https://www.cmake.org/download/) -- [Qt 6.8.3](https://www.qt.io/download-qt-installer) +- [Qt 6.9.0](https://www.qt.io/download-qt-installer) - [Vulkan SDK 1.3.268.0](https://vulkan.lunarg.com/sdk/home) (See "Install the SDK" [here](https://vulkan.lunarg.com/doc/sdk/latest/linux/getting_started.html)) for now future SDKs don't work. You need precisely 1.3.268.0. - [SDL3](https://github.com/libsdl-org/SDL/releases) (for the FAudio backend) @@ -121,7 +121,7 @@ Start **Visual Studio**, click on `Open a project or solution` and select the `r ##### Configuring the Qt Plugin (if used) 1) go to `Extensions->Qt VS Tools->Qt Versions` -2) add the path to your Qt installation with compiler e.g. `\6.8.3\msvc2022_64`, version will fill in automatically +2) add the path to your Qt installation with compiler e.g. `\6.9.0\msvc2022_64`, version will fill in automatically 3) go to `Extensions->Qt VS Tools->Options->Legacy Project Format`. (Only available in the **Legacy Qt Plugin**) 4) set `Build: Run pre-build setup` to `true`. (Only available in the **Legacy Qt Plugin**) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 5e442bd01b..ce43a2cb52 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -71,9 +71,9 @@ jobs: # variables: # COMPILER: msvc # QT_VER_MAIN: '6' -# QT_VER: '6.8.3' +# QT_VER: '6.9.0' # QT_VER_MSVC: 'msvc2022' -# QT_DATE: '202503201308' +# QT_DATE: '202503301022' # QTDIR: C:\Qt\$(QT_VER)\$(QT_VER_MSVC)_64 # LLVM_VER: '19.1.7' # VULKAN_VER: '1.3.268.0' diff --git a/rpcs3/rpcs3qt/custom_table_widget_item.cpp b/rpcs3/rpcs3qt/custom_table_widget_item.cpp index d679797134..aa6d660ee3 100644 --- a/rpcs3/rpcs3qt/custom_table_widget_item.cpp +++ b/rpcs3/rpcs3qt/custom_table_widget_item.cpp @@ -28,8 +28,8 @@ bool custom_table_widget_item::operator<(const QTableWidgetItem& other) const return QTableWidgetItem::operator<(other); } - const QVariant data_l = data(m_sort_role); - const QVariant data_r = other.data(m_sort_role); + const QVariant data_l = data(m_sort_role); + const QVariant data_r = other.data(m_sort_role); const int type_l = data_l.metaType().id(); const int type_r = data_r.metaType().id(); diff --git a/rpcs3/rpcs3qt/game_list_table.cpp b/rpcs3/rpcs3qt/game_list_table.cpp index f526bcea43..96f94787b5 100644 --- a/rpcs3/rpcs3qt/game_list_table.cpp +++ b/rpcs3/rpcs3qt/game_list_table.cpp @@ -83,10 +83,9 @@ void game_list_table::restore_layout(const QByteArray& state) void game_list_table::resize_columns_to_contents(int spacing) { - verticalHeader()->resizeSections(QHeaderView::ResizeMode::ResizeToContents); horizontalHeader()->resizeSections(QHeaderView::ResizeMode::ResizeToContents); - // Make non-icon columns slighty bigger for better visuals + // Make non-icon columns slightly bigger for better visuals for (int i = 1; i < columnCount(); i++) { if (isColumnHidden(i)) @@ -102,6 +101,7 @@ void game_list_table::resize_columns_to_contents(int spacing) void game_list_table::adjust_icon_column() { // Fixate vertical header and row height + verticalHeader()->setDefaultSectionSize(m_icon_size.height()); verticalHeader()->setMinimumSectionSize(m_icon_size.height()); verticalHeader()->setMaximumSectionSize(m_icon_size.height()); @@ -158,9 +158,9 @@ void game_list_table::sort(usz game_count, int sort_column, Qt::SortOrder col_so } // Fixate vertical header and row height + verticalHeader()->setDefaultSectionSize(m_icon_size.height()); verticalHeader()->setMinimumSectionSize(m_icon_size.height()); verticalHeader()->setMaximumSectionSize(m_icon_size.height()); - resizeRowsToContents(); // Resize columns if the game list was empty before if (!old_row_count && !old_game_count) diff --git a/rpcs3/rpcs3qt/ps_move_tracker_dialog.cpp b/rpcs3/rpcs3qt/ps_move_tracker_dialog.cpp index 4b9bc5dd6e..3ce46f9249 100644 --- a/rpcs3/rpcs3qt/ps_move_tracker_dialog.cpp +++ b/rpcs3/rpcs3qt/ps_move_tracker_dialog.cpp @@ -360,6 +360,7 @@ void ps_move_tracker_dialog::update_saturation_threshold(bool update_slider) ui->saturationThresholdSlider->setValue(saturation_threshold); } } + void ps_move_tracker_dialog::update_min_radius(bool update_slider) { ui->minRadiusGb->setTitle(tr("Min Radius: %0 %").arg(g_cfg_move.min_radius.get())); diff --git a/rpcs3/rpcs3qt/savestate_manager_dialog.cpp b/rpcs3/rpcs3qt/savestate_manager_dialog.cpp index 463931b321..d6ac40785c 100644 --- a/rpcs3/rpcs3qt/savestate_manager_dialog.cpp +++ b/rpcs3/rpcs3qt/savestate_manager_dialog.cpp @@ -293,7 +293,6 @@ void savestate_manager_dialog::RepaintUI(bool restore_layout) if (restore_layout && !m_game_table->horizontalHeader()->restoreState(game_table_state) && m_game_table->rowCount()) { // If no settings exist, resize to contents. (disabled) - //m_game_table->verticalHeader()->resizeSections(QHeaderView::ResizeMode::ResizeToContents); //m_game_table->horizontalHeader()->resizeSections(QHeaderView::ResizeMode::ResizeToContents); } @@ -301,7 +300,6 @@ void savestate_manager_dialog::RepaintUI(bool restore_layout) if (restore_layout && !m_savestate_table->horizontalHeader()->restoreState(savestate_table_state) && m_savestate_table->rowCount()) { // If no settings exist, resize to contents. (disabled) - //m_savestate_table->verticalHeader()->resizeSections(QHeaderView::ResizeMode::ResizeToContents); //m_savestate_table->horizontalHeader()->resizeSections(QHeaderView::ResizeMode::ResizeToContents); } @@ -695,9 +693,9 @@ void savestate_manager_dialog::PopulateSavestateTable() void savestate_manager_dialog::ReadjustGameTable() const { // Fixate vertical header and row height + m_game_table->verticalHeader()->setDefaultSectionSize(m_game_icon_size.height()); m_game_table->verticalHeader()->setMinimumSectionSize(m_game_icon_size.height()); m_game_table->verticalHeader()->setMaximumSectionSize(m_game_icon_size.height()); - m_game_table->resizeRowsToContents(); // Resize and fixate icon column m_game_table->resizeColumnToContents(static_cast(gui::savestate_game_list_columns::icon)); diff --git a/rpcs3/rpcs3qt/trophy_manager_dialog.cpp b/rpcs3/rpcs3qt/trophy_manager_dialog.cpp index 555f2a6f44..709875a22b 100644 --- a/rpcs3/rpcs3qt/trophy_manager_dialog.cpp +++ b/rpcs3/rpcs3qt/trophy_manager_dialog.cpp @@ -512,7 +512,6 @@ void trophy_manager_dialog::RepaintUI(bool restore_layout) if (restore_layout && !m_game_table->horizontalHeader()->restoreState(game_table_state) && m_game_table->rowCount()) { // If no settings exist, resize to contents. (disabled) - //m_game_table->verticalHeader()->resizeSections(QHeaderView::ResizeMode::ResizeToContents); //m_game_table->horizontalHeader()->resizeSections(QHeaderView::ResizeMode::ResizeToContents); } @@ -520,7 +519,6 @@ void trophy_manager_dialog::RepaintUI(bool restore_layout) if (restore_layout && !m_trophy_table->horizontalHeader()->restoreState(trophy_table_state) && m_trophy_table->rowCount()) { // If no settings exist, resize to contents. (disabled) - //m_trophy_table->verticalHeader()->resizeSections(QHeaderView::ResizeMode::ResizeToContents); //m_trophy_table->horizontalHeader()->resizeSections(QHeaderView::ResizeMode::ResizeToContents); } @@ -1222,9 +1220,9 @@ void trophy_manager_dialog::PopulateTrophyTable() void trophy_manager_dialog::ReadjustGameTable() const { // Fixate vertical header and row height + m_game_table->verticalHeader()->setDefaultSectionSize(m_game_icon_size.height()); m_game_table->verticalHeader()->setMinimumSectionSize(m_game_icon_size.height()); m_game_table->verticalHeader()->setMaximumSectionSize(m_game_icon_size.height()); - m_game_table->resizeRowsToContents(); // Resize and fixate icon column m_game_table->resizeColumnToContents(static_cast(gui::trophy_game_list_columns::icon)); @@ -1237,9 +1235,9 @@ void trophy_manager_dialog::ReadjustGameTable() const void trophy_manager_dialog::ReadjustTrophyTable() const { // Fixate vertical header and row height + m_trophy_table->verticalHeader()->setDefaultSectionSize(m_icon_height); m_trophy_table->verticalHeader()->setMinimumSectionSize(m_icon_height); m_trophy_table->verticalHeader()->setMaximumSectionSize(m_icon_height); - m_trophy_table->resizeRowsToContents(); // Resize and fixate icon column m_trophy_table->resizeColumnToContents(static_cast(gui::trophy_list_columns::icon));