Rework Client fullscreen control
Needs ReviewPublic

Authored by romangg on Jan 11 2019, 3:18 PM.

Details

Reviewers
None
Group Reviewers
KWin
Maniphest Tasks
T11098: Replace Screens class
Summary

After fixing superficial issues go and work over Client's fullscreen control.
This way we:

  • check first for what the rule wants uis to do,
  • do only proceed if there is a change from/to fullscreen
  • remove code, that becomes unneeded by this.

This goes with the assumption, that the current fullscreen state is always
correctly stored in the m_fullscreenMode variable, but the previous code
implicitly did the same at numerous occasions, just not in a consistent
manner.

Test Plan

Manually and auto tests still pass.

Diff Detail

Branch
clientFullscreenCtrl
Lint
Lint OK
Unit
No Unit Test Coverage
Build Status
Buildable 12829
Build 12847: arc lint + arc unit
romangg created this revision.Jan 11 2019, 3:18 PM
Restricted Application added a project: KWin. · View Herald TranscriptJan 11 2019, 3:18 PM
Restricted Application added a subscriber: kwin. · View Herald Transcript
romangg requested review of this revision.Jan 11 2019, 3:18 PM
zzag added a subscriber: zzag.Jan 11 2019, 8:03 PM
zzag added inline comments.
geometry.cpp
2508

Is it possible to have have a client initially in the fullscreen state?

romangg added inline comments.Jan 11 2019, 8:14 PM
geometry.cpp
2508

Yes, but when it does this it goes through this part in the beginning.

m_fullscreenMode is set to "no fullscreen" in the Client constructor and is only changed in this function here, where geom_fs_restore is set above in case it goes fullscreen.

Personal opinion: this is X11, let's not risk breaking it.

zzag added a comment.Feb 8 2019, 2:40 PM

Personal opinion: this is X11, let's not risk breaking it.

+1.

romangg updated this revision to Diff 59812.Fri, Jun 14, 6:28 PM

Rebase on master.

zzag added a comment.Mon, Jun 17, 8:35 AM

How does this patch exactly relate to T11098?

In D18185#481084, @zzag wrote:

How does this patch exactly relate to T11098?

I want to remove the old Xinerama / Screens multi-head support on X to simplify removal of Screens class. For that to become simpler in return I try to make code overall less convoluted at as many places as possible.