Changeset View
Changeset View
Standalone View
Standalone View
abstract_client.cpp
Show First 20 Lines • Show All 1146 Lines • ▼ Show 20 Line(s) | |||||
1147 | { | 1147 | { | ||
1148 | if (!isFullScreen()) | 1148 | if (!isFullScreen()) | ||
1149 | return false; | 1149 | return false; | ||
1150 | 1150 | | |||
1151 | const auto ac = workspace()->mostRecentlyActivatedClient(); // instead of activeClient() - avoids flicker | 1151 | const auto ac = workspace()->mostRecentlyActivatedClient(); // instead of activeClient() - avoids flicker | ||
1152 | // according to NETWM spec implementation notes suggests | 1152 | // according to NETWM spec implementation notes suggests | ||
1153 | // "focused windows having state _NET_WM_STATE_FULLSCREEN" to be on the highest layer. | 1153 | // "focused windows having state _NET_WM_STATE_FULLSCREEN" to be on the highest layer. | ||
1154 | // we'll also take the screen into account | 1154 | // we'll also take the screen into account | ||
1155 | return ac && (ac == this || ac->screen() != screen()); | 1155 | return ac && (ac == this || ac->screen() != screen()|| ac->allMainClients().contains(const_cast<AbstractClient*>(this))); | ||
romangg: Just a question for understanding unrelated to this patch: why should `isActiveFullScreen`… | |||||
We keep fullscreen windows in the active layer if the active window is on a different screen. Consider you have on each screen a panel. On your second screen you have vlc playing a fullscreen video. On the first screen you want to quickly check something in the browser. This ensures that vlc stays above of the panel all the time. graesslin: We keep fullscreen windows in the active layer if the active window is on a different screen. | |||||
1156 | } | 1156 | } | ||
1157 | 1157 | | |||
1158 | #define BORDER(which) \ | 1158 | #define BORDER(which) \ | ||
1159 | int AbstractClient::border##which() const \ | 1159 | int AbstractClient::border##which() const \ | ||
1160 | { \ | 1160 | { \ | ||
1161 | return isDecorated() ? decoration()->border##which() : 0; \ | 1161 | return isDecorated() ? decoration()->border##which() : 0; \ | ||
1162 | } | 1162 | } | ||
1163 | 1163 | | |||
▲ Show 20 Lines • Show All 642 Lines • Show Last 20 Lines |
Just a question for understanding unrelated to this patch: why should isActiveFullScreen return true, if ac->screen() != screen()? We don't know if it's really active just because it's on another screen than the one which the most recently activated client is on.