[WIP] Apply new window flags only when necessary

Authored by mglb on Apr 22 2019, 6:21 PM.


Group Reviewers

Applying the settings in Configure Konsole dialog causes all Konsole
windows to be hidden and shown again. This causes all information
related to window management (window state, desktop, position/display,
etc.) to be lost - windows appear on current display, desktop, at new

The hide/show action is triggered by window flags change. Only "remove
window titlebar and frame" option really changes the flags, so the
action is changed to be triggered only by this option.

Introduced changes:

  • Window flags are changed change only when necessary (i.e. when "remove window titlebar and frame" option is changed).
  • Windows are restored:
    • at previous positions
    • on the same displays
    • on previous activity
    • [MISSING] with the same state (minimized, maximized, etc)
    • [MISSING] on the same desktop
    • [MISSING] with the same stacking order

Any ideas how to implement missing features?

Test Plan
  • Open a few Konsole windows, put them on different desktops, different positions, minimize, maximize, etc.
  • Open Configure Konsole dialog, change any option except "remove window titlebar and frame"
  • Apply

Result before change
Konsole windows end up on current desktop; configuration window hides
under them.

Result after change
Konsole windows position and state does not change.

Diff Detail

R319 Konsole
wip/Apply-new-configuration-options-only-when-necessary (branched from master)
No Linters Available
No Unit Test Coverage
Build Status
Buildable 11118
Build 11136: arc lint + arc unit
mglb created this revision.Apr 22 2019, 6:21 PM
Restricted Application added a subscriber: konsole-devel. · View Herald TranscriptApr 22 2019, 6:21 PM
mglb requested review of this revision.Apr 22 2019, 6:21 PM

FYI, we'd need to test this in wayland as well - at least to avoid any regressions (if possible).

mglb added a comment.Apr 23 2019, 5:01 PM

Sure, when missing parts will be implemented or when we decide to not implement them.