allow FS mapping of geometry restricted windows

and copy isSpecialWindow() check as rulebook input
to setFullscreen()

Client::isFullScreenable() checks:
* fullscreen rule
* fullscreen_hack (-> for normal windows)
* geometry restrictions
* special window

Client::manage() for fullscreeining checks:
* fullscreen rule (with correct "initial" parameter)
* fullscreen_hack

-> this breaks the fullscreen rule for geometry restricted windows
and causes inconsistent behavior between client requests at runtime
(which do not test ::isFullScreenable()) and on mapping.

Otoh, the specialWindow() protection should apply generally - those
kind of windows should not be fullscreened since the user can not
exit this state via kwin for them - and there's hardly a good reason
for them to be fullscreen, esp. not to enter that state at runtime

REVIEW: 118442
CCBUG: 335617

Cherry-picked from kde-workspace
43229afee9fac4303e3d280ea63f96f034b3ffb5
This commit is contained in:
Thomas Lübking 2014-06-05 20:23:47 +02:00 committed by Martin Gräßlin
parent 5185fe81cf
commit 75a298a4fb
2 changed files with 2 additions and 2 deletions

View file

@ -2390,7 +2390,7 @@ void Client::setFullScreen(bool set, bool user)
return;
if (user && !userCanSetFullScreen())
return;
set = rules()->checkFullScreen(set);
set = rules()->checkFullScreen(set && !isSpecialWindow());
setShade(ShadeNone);
bool was_fs = isFullScreen();
if (was_fs)

View file

@ -527,7 +527,7 @@ bool Client::manage(xcb_window_t w, bool isMapped)
demandAttention();
if (info->state() & NET::Modal)
setModal(true);
if (fullscreen_mode != FullScreenHack && isFullScreenable())
if (fullscreen_mode != FullScreenHack)
setFullScreen(rules()->checkFullScreen(info->state() & NET::FullScreen, !isMapped), false);
}