Skip to content

Conversation

chaoticgd
Copy link
Contributor

@chaoticgd chaoticgd commented Jul 26, 2025

Description of Changes

Refactor the settings window so that the tabs and scroll areas are created programmatically instead of from Qt Designer.

Since all the pages now have scroll areas that means that if the contents of a page is horizontally too big it now shows a horizontal scroll bar instead of cutting off text. This may happen if a translated string is longer than the original.

A lot of the existing translations on the graphics and debug pages will not apply since the names of the UI classes have changed. Hopefully that won't be too inconvenient for our translators.

Some groups of spin boxes on the graphics page have been split across multiple lines as for the per-game settings it displays the text "Default: " in the spin box and there previously wasn't enough space.

Some other issues I have fixed are listed below:

  • The Display group box on the Game List page expanding strangely.
  • The On-Screen Display group box on the Graphics page expanding strangely.
  • The Folders page having a squished layout which doesn't get resized properly.
  • The Real-Time Clock group box on the per-game version of the Emulation page being "anchored" to the bottom of the window.
  • All the group boxes on the per-game version of the Achivevements page expanding strangely.
  • Some of the widgets in the Advanced tab on the Graphics page being squishy.

Rationale behind Changes

There have been a lot of changes made recently that manually add scroll areas to individual settings pages as settings are added/moved. This wastes time and results in an inconsistent user experience as all the scroll areas are inevitably configured differently.

Examples of inconsistent scroll areas:

  • The Folders page has a margin and a frame.
  • The Achievements page and the Advanced page have no margin and a frame.
  • The rest of the scroll areas have no margin and no frame.

Suggested Testing Steps

Go through all the settings and make sure they still work. Try resizing the window and make sure that the widgets behave themselves. Try to show/hide different tabs on the graphics page by changing renderers and enabling/disabling the HW fixes check box. Compare dev/release builds and make sure the same changes are made to the settings page.

Did you use AI to help find, test, or implement this issue or feature?

No.

@GitHub-Khi
Copy link

Perhaps problems like this can be solved on the side? :)

@chaoticgd
Copy link
Contributor Author

Perhaps problems like this can be solved on the side? :)

This PR is exclusively for the settings window so no, open a GitHub issue for it if there isn't one already.

@chaoticgd chaoticgd force-pushed the settings_for_your_horse branch 7 times, most recently from 9767aa0 to 34fbbfc Compare August 1, 2025 18:50
@chaoticgd chaoticgd changed the title Qt: Refactor the settings window Qt: Rework the settings window Aug 1, 2025
@chaoticgd chaoticgd force-pushed the settings_for_your_horse branch 5 times, most recently from 169e413 to 64e459a Compare August 2, 2025 20:59
@chaoticgd chaoticgd force-pushed the settings_for_your_horse branch 2 times, most recently from 820a061 to 382ccce Compare August 3, 2025 18:41
@chaoticgd chaoticgd marked this pull request as ready for review August 3, 2025 19:11
@chaoticgd
Copy link
Contributor Author

This is ready for review now.

@chaoticgd chaoticgd force-pushed the settings_for_your_horse branch 6 times, most recently from 7a0f679 to 89827bd Compare August 4, 2025 17:12
@chaoticgd chaoticgd force-pushed the settings_for_your_horse branch 2 times, most recently from 032edc7 to 4cbabe6 Compare August 6, 2025 11:54
Copy link
Member

@JordanTheToaster JordanTheToaster left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Didn't blow up my house. Approved.

Copy link
Contributor

@kamfretoz kamfretoz left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Still works.

@chaoticgd chaoticgd force-pushed the settings_for_your_horse branch from 4cbabe6 to 5245ed0 Compare August 16, 2025 06:44
Copy link
Contributor

@kamfretoz kamfretoz left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

Image

@F0bes F0bes merged commit dc9e531 into PCSX2:master Aug 21, 2025
12 checks passed
Hancock33 added a commit to Hancock33/batocera.piboy that referenced this pull request Aug 24, 2025
----------------------------------------------------------------------------------
clk.mk 7d6e24b8ed2bd03e1f9089304955de0f6de610f3 # Version: Commits on Aug 22, 2025
----------------------------------------------------------------------------------
Merge pull request #1536 from TomHarte/8042Redo

Rejig 8042; extend logger for common conditional use case.,

------------------------------------------------------------------------------------------
dolphin-emu.mk 2e09dc0fdda2818d89a7962d5eb44339fb6b467a # Version: Commits on Aug 21, 2025
------------------------------------------------------------------------------------------
Merge pull request #13891 from jordan-woyak/grooverider-ini

GameINI: Disable ImmediateXFBEnable for Grooverider.,

-------------------------------------------------------------------------------------
hatari.mk 1524b194b2b29e72938095d3642adea9a5bc0a60 # Version: Commits on Aug 21, 2025
-------------------------------------------------------------------------------------
Make auto-sleeper take sleep time from program name

It increases the program size, but one does not need to build

new ones to experiment with sleep times.,

-----------------------------------------------------------------------------------------
lightspark.mk 24cd92f269ee97c6ed2ecdc5f0777e89578e7e92 # Version: Commits on Aug 21, 2025
-----------------------------------------------------------------------------------------
[ABCContext] don't turn

egative zero\ constants into integer

fixes regressions from previous commit in ruffle tests,

----------------------------------------------------
pcsx2.mk v2.5.120 # Version: Commits on Aug 21, 2025
----------------------------------------------------
- [Qt: Rework the settings window](PCSX2/pcsx2#13066)

-----------------------------------------------------------------------------------
play.mk 7062c5e67a4a90b75fe1d0221c43f678a0d049b6 # Version: Commits on Aug 19, 2025
-----------------------------------------------------------------------------------
Remove minimum size on bootable view widget.,

---------------------------------------------------------------
ruffle.mk nightly-2025-08-22 # Version: Commits on Aug 22, 2025
---------------------------------------------------------------
## What's Changed

* tests: Fix `avm2/mouse_wheel_events` & `avm2/edittext_line_methods` by @kjarosh in ruffle-rs/ruffle#21425

* core: Make code more readable for PixelRegion (nit) by @Flawake in ruffle-rs/ruffle#21433

* avm1: Resolve _root from display object's root by @jarca0123 in ruffle-rs/ruffle#21337

* chore: Mark `avm2/stage3d_errors_atf` test as flaky by @kjarosh in ruffle-rs/ruffle#21427

* ci: Add test coverage by @kjarosh in ruffle-rs/ruffle#21342

* chore: Fix clippy warnings by @kjarosh in ruffle-rs/ruffle#21438

**Full Changelog**: ruffle-rs/ruffle@nightly-2025-08-21...nightly-2025-08-22,

-------------------------------------------------------------------------------------------
xenia-native.mk 765073021a3fd0ec193f89ff224aad5a3af31551 # Version: Commits on Aug 22, 2025
-------------------------------------------------------------------------------------------
[CPU/XEX] Use fmt to make hash string, check size,

-----------------------------------------------------------------------------------
ymir.mk a831035fedc92eef05b31f552c1ce61321bb1d11 # Version: Commits on Aug 21, 2025
-----------------------------------------------------------------------------------
fix(SH2): Fix MOVA offset when in delay slot,

------------------------------------------------------------------------------------
box64.mk cb2c29c5f992cb4e5ec481f8d99b973b90411403 # Version: Commits on Aug 22, 2025
------------------------------------------------------------------------------------
[INTERP] Refactored how 64/65/66/67 and F2/F3 prefixes are handled, removing some (mostly) duplicated code,

---------------------------------------------------------------------------------------
corsixth.mk ac604c5f00b0e9c9cadd0d4d40ea7c2bcf6febeb # Version: Commits on Aug 22, 2025
---------------------------------------------------------------------------------------
Update screenshot function (#2972),

------------------------------------------------------------------------------------------
devilutionx.mk 0c3fe1345cab72586dfcf1d9bcffb863142afb0c # Version: Commits on Aug 21, 2025
------------------------------------------------------------------------------------------
Parse Quest Data from TSV,

-------------------------------------------------------------------------------------------
jazz2-native.mk 59732fc2951c49ebae077cad671b3d117c4b380b # Version: Commits on Aug 21, 2025
-------------------------------------------------------------------------------------------
Minor changes,

------------------------------------------------------
syncthing.mk v2.0.3 # Version: Commits on Aug 22, 2025
------------------------------------------------------
## Major changes in 2.0

- Database backend switched from LevelDB to SQLite. There is a migration on

  first launch which can be lengthy for larger setups. The new database is

  easier to understand and maintain and, hopefully, less buggy.

- The logging format has changed to use structured log entries (a message

  plus several key-value pairs). Additionally, we can now control the log

  level per package, and a new log level WARNING has been inserted between

  INFO and ERROR (which was previously known as WARNING...). The INFO level

  has become more verbose, indicating the sync actions taken by Syncthing. A

  new command line flag `--log-level` sets the default log level for all

  packages, and the `STTRACE` environment variable and GUI has been updated

  to set log levels per package. The `--verbose` and `--logflags` command

  line options have been removed and will be ignored if given.

- Deleted items are no longer kept forever in the database, instead they are

  forgotten after fifteen months. If your use case require deletes to take

  effect after more than a fifteen month delay, set the

  `--db-delete-retention-interval` command line option or corresponding

  environment variable to zero, or a longer time interval of your choosing.

- Modernised command line options parsing. Old single-dash long options are

  no longer supported, e.g. `-home` must be given as `--home`. Some options

  have been renamed, others have become subcommands. All serve options are

  now also accepted as environment variables. See  `syncthing --help` and

  `syncthing serve --help` for details.

- Rolling hash detection of shifted data is no longer supported as this

  effectively never helped. Instead, scanning and syncing is faster and more

  efficient without it.

- A \default folder\ is no longer created on first startup.

- Multiple connections are now used by default between v2 devices. The new

  default value is to use three connections: one for index metadata and two

  for data exchange.

- The following platforms unfortunately no longer get prebuilt binaries for

  download at syncthing.net and on GitHub, due to complexities related to

  cross compilation with SQLite:

  - dragonfly/amd64

  - illumos/amd64 and solaris/amd64

  - linux/ppc64

  - netbsd/*

  - openbsd/386 and openbsd/arm

  - windows/arm

- The handling of conflict resolution involving deleted files has changed. A

  delete can now be the winning outcome of conflict resolution, resulting in

  the deleted file being moved to a conflict copy.

This release is also available as:

* APT repository: https://apt.syncthing.net/

* Docker image: `docker.io/syncthing/syncthing:2.0.3` or `ghcr.io/syncthing/syncthing:2.0.3`

  (`{docker,ghcr}.io/syncthing/syncthing:2` to follow just the major version)

## What's Changed

### Fixes

* fix(cmd): restore --version flag for compatibility by @acolomb in syncthing/syncthing#10269

* fix(cmd): make database migration more robust to write errors by @calmh in syncthing/syncthing#10278

* fix(cmd): provide temporary GUI/API server during database migration by @calmh in syncthing/syncthing#10279

* fix(db): clean files for dropped folders at startup by @calmh in syncthing/syncthing#10280

### Other

* chore(slog): re-enable LOGGER_DISCARD (fixes #10262) by @rasa in syncthing/syncthing#10267

* build: downgrade gopsutil (fixes #10276) by @calmh in syncthing/syncthing#10277

**Full Changelog**: syncthing/syncthing@v2.0.2...v2.0.3,

----------------------------------------------------------------------------------------
retroarch.mk 6c120d07a8cacd024d1a3f6236cf1de80e3b78e5 # Version: Commits on Aug 22, 2025
----------------------------------------------------------------------------------------
Fetch translations from Crowdin,

-------------------------------------------------------------------------------------
gzdoom.mk ba9e127e9f1e851d69d4ff3843f1f883188b45f7 # Version: Commits on Aug 14, 2025
-------------------------------------------------------------------------------------
Added to CreateTossable and PowerWeaponLevel2,

------------------------------------------------------------------------------------------
xash3d-fwgs.mk dc1e39264bdf7ad9945f81a165527d6ff18ab417 # Version: Commits on Aug 21, 2025
------------------------------------------------------------------------------------------
Documentation: donate: add new donation info,

--------------------------------------------------------------------------------------------
libretro-dice.mk 2f847e9e3ccdc8086ab02ab3e6c97bf0729deadd # Version: Commits on Aug 22, 2025
--------------------------------------------------------------------------------------------
Fetch translations & Recreate libretro_core_options_intl.h,

-----------------------------------------------------------------------------------------------------
libretro-genesisplusgx.mk 54eb537ad0d82b242a5fa63f061b1480ffa493da # Version: Commits on Aug 22, 2025
-----------------------------------------------------------------------------------------------------
[Core/MD] fixed Life on Mars / Life on Earth Reimagined original ROM detection,

--------------------------------------------------------------------------------------------
libretro-gpsp.mk 143b0abb02a6ff501757674c9fdf47e0fcd7cbd3 # Version: Commits on Aug 21, 2025
--------------------------------------------------------------------------------------------
Emit .note.GNU-stack on asm files to signal a non-executable stack,

------------------------------------------------------------------------------------------------
libretro-panda3ds.mk 78002be334ea8a86e64d20dd8a85ac2af568f1fa # Version: Commits on Aug 21, 2025
------------------------------------------------------------------------------------------------
Vendor Teakra, make emulator own DSP RAM and add DSP RAM to fastmem (#806)

* DSP: Own DSP RAM and add it to fastmem

* Vendor Teakra

* Add MacOS support to fastmem

* Fix MacOS fastmem paths

* Fix iOS build,

---------------------------------------------------------------------------------------------
libretro-vba-m.mk a17df26e5208173e5e71b174f9a97a04d416fd29 # Version: Commits on Aug 21, 2025
---------------------------------------------------------------------------------------------
build: fix Debian installdeps for current Ubuntu

Fix installdeps for Debian variants by checking for `libsdl3-dev` and

falling back to `libsdl2-dev` if not available.

Also add `libx264-dev` and `libx265-dev` to the list of FFmpeg packages

as we now require them.

Fix #1486

Signed-off-by: Rafael Kitover <[email protected]>,
@chaoticgd chaoticgd deleted the settings_for_your_horse branch August 29, 2025 21:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

7 participants