Description
Two independent regressions in src/rcw.c, one commit each, both introduced by !2741 (merged):
-
rcw_toolbar_fullscreen()wrotemultimon=0into the profile on the exit-fullscreen branch and saved it.remmina_protocol_widget_get_multimon()reads that value back from the file, so multi monitor stayed off for the rest of the session and for every later connection. Leaving fullscreen is not a request to change the preference — that is owned by the multi monitor toolbar button viarcw_toolbar_multi_monitor_mode(). The write is removed. -
rcw_switch_viewmode()did not rebuild the per-monitor windows. It replaces the connection window throughrcw_create_fullscreen()+rcw_migrate(); emptying the old notebook makesrcw_on_page_removed()dispose that window'sMultimonWindowset, and the replacement starts withmultimon_areas == NULL.rcw_open_from_file_full()andrco_viewport_fullscreen_mode()build the set, but the fullscreen toolbar button and host key both arrive throughrcw_switch_viewmode(), which did not. It now rebuilds, gated on the profile'smultimonsetting.
Kept as one merge request because the two faults share a code path and neither fix is observable on
its own: with (1) still present, multimon has already been zeroed by the time (2) would act.
Related Issue
Closes #3628 (closed), closes #3629 (closed)
Motivation and Context
Multi monitor spanning currently survives only until the first fullscreen toggle, and then stays
broken for all later connections because the profile has been rewritten on disk. Both faults are in
master only, from !2741 (merged); neither is in a tagged release (v1.4.43 is the latest), which is likely
why they have gone unreported. Background: #2686 (closed) (closed by !2741 (merged)) and the post-merge analysis in
#3558 (closed).
How Has This Been Tested?
Environment:
- Remmina
master@ f7ebb11b + these commits,-DWITH_FREERDP3=ON, system FreeRDP 3.32.2 - GTK 3.24.52;
plasma-wayland-protocols1.23.0 present, soHAVE_KDE_OUTPUT_ORDER_V1=1 - KDE Plasma / KWin 6.8.1 on Wayland, CachyOS (Arch-based)
- Two 2560x1440 monitors side by side: DP-3
+0+0(primary), DP-1+2560+0 - Profile:
multimon=1,monitorids=(empty),resolution_mode=2,scale=0
Before:
- Initial connection spans both monitors.
- One fullscreen toggle off/on → fullscreen covers one monitor only, and the
.remminaprofile has been silently rewritten tomultimon=0.
After:
- Spanning survives repeated fullscreen toggles off/on, and via the fullscreen host key.
- The profile retains
multimon=1. - Unticking the multi monitor button still correctly writes
multimon=0, so that path is unchanged. - Builds clean (no new warnings) and single-monitor use is unaffected, since the new call is gated
on
multimon.
Known, not introduced here: re-entering fullscreen maps a fresh fullscreen window per monitor, which
shows a brief flicker. That follows from the existing destroy-on-exit design in
rcw_on_page_removed(); removing it would mean keeping the per-monitor windows alive across the
windowed interval, which is a larger change.
Screenshots (if appropriate):
n/a — the symptom is window geometry; happy to attach before/after captures if useful.
Types of changes
- Bug fix (non-breaking change which fixes an issue)
- New feature (non-breaking change which adds functionality)
- Breaking change (fix or feature that would cause existing functionality to change)
Checklist:
- My code follows the code style of this project.
- My change requires a change to the documentation.
- I have updated the documentation accordingly.