Fix two multi monitor fullscreen regressions (#3628, #3629)

Description

Two independent regressions in src/rcw.c, one commit each, both introduced by !2741 (merged):

  1. rcw_toolbar_fullscreen() wrote multimon=0 into 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 via rcw_toolbar_multi_monitor_mode(). The write is removed.

  2. rcw_switch_viewmode() did not rebuild the per-monitor windows. It replaces the connection window through rcw_create_fullscreen() + rcw_migrate(); emptying the old notebook makes rcw_on_page_removed() dispose that window's MultimonWindow set, and the replacement starts with multimon_areas == NULL. rcw_open_from_file_full() and rco_viewport_fullscreen_mode() build the set, but the fullscreen toolbar button and host key both arrive through rcw_switch_viewmode(), which did not. It now rebuilds, gated on the profile's multimon setting.

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.

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-protocols 1.23.0 present, so HAVE_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 .remmina profile has been silently rewritten to multimon=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.

Merge request reports

Loading
Loading