Changeset View
Changeset View
Standalone View
Standalone View
client.cpp
Show First 20 Lines • Show All 589 Lines • ▼ Show 20 Line(s) | 588 | { | |||
---|---|---|---|---|---|
590 | updateInputWindow(); | 590 | updateInputWindow(); | ||
591 | } | 591 | } | ||
592 | 592 | | |||
593 | bool Client::userNoBorder() const | 593 | bool Client::userNoBorder() const | ||
594 | { | 594 | { | ||
595 | return noborder; | 595 | return noborder; | ||
596 | } | 596 | } | ||
597 | 597 | | |||
598 | bool Client::isFullScreenable() const | ||||
599 | { | ||||
600 | return isFullScreenable(false); | ||||
601 | } | ||||
602 | | ||||
603 | bool Client::isFullScreenable(bool fullscreenHack) const | ||||
604 | { | ||||
605 | if (!rules()->checkFullScreen(true)) { | ||||
606 | return false; | ||||
607 | } | ||||
608 | if (fullscreenHack) { | ||||
609 | return isNormalWindow(); | ||||
610 | } | ||||
611 | if (rules()->checkStrictGeometry(true)) { | ||||
612 | // check geometry constraints (rule to obey is set) | ||||
zzag: We lose this path in ShellClient::isFullScreenable. Is there a reason for thta? | |||||
Wayland native clients can't dictate the compositor if fullscreen is possible or not. so we don't need to check if their geometry is restricted. At least the call to AbstractClient::sizeForClientSize in the case of ShellClient in the current version on master would imply this. romangg: Wayland native clients can't dictate the compositor if fullscreen is possible or not. so we… | |||||
As far as I know, it depends on compositor's policies, e.g. if max size was set for a xdg-toplevel, then compositor can disallow the fullscreen state, though this is probably unrelated. I just wanted to make sure you did this on purpose. zzag: As far as I know, it depends on compositor's policies, e.g. if max size was set for a xdg… | |||||
613 | const QRect fsarea = workspace()->clientArea(FullScreenArea, this); | ||||
614 | if (sizeForClientSize(fsarea.size(), SizemodeAny, true) != fsarea.size()) { | ||||
615 | return false; // the app wouldn't fit exactly fullscreen geometry due to its strict geometry requirements | ||||
616 | } | ||||
617 | } | ||||
618 | // don't check size constrains - some apps request fullscreen despite requesting fixed size | ||||
619 | return !isSpecialWindow(); // also better disallow only weird types to go fullscreen | ||||
620 | } | ||||
621 | | ||||
598 | bool Client::noBorder() const | 622 | bool Client::noBorder() const | ||
599 | { | 623 | { | ||
600 | return userNoBorder() || isFullScreen(); | 624 | return userNoBorder() || isFullScreen(); | ||
601 | } | 625 | } | ||
602 | 626 | | |||
603 | bool Client::userCanSetNoBorder() const | 627 | bool Client::userCanSetNoBorder() const | ||
604 | { | 628 | { | ||
605 | return !isFullScreen() && !isShade() && !tabGroup(); | 629 | return !isFullScreen() && !isShade() && !tabGroup(); | ||
▲ Show 20 Lines • Show All 1535 Lines • Show Last 20 Lines |
We lose this path in ShellClient::isFullScreenable. Is there a reason for thta?