when toggling float->tile, unset all-desktops/multiple-activities
This commit is contained in:
@@ -318,7 +318,22 @@ function gridScroll(world: World, amount: number) {
|
||||
grid.arrange();
|
||||
}
|
||||
|
||||
function canTile(kwinClient: AbstractClient) {
|
||||
// TODO: support windows on all desktops
|
||||
return kwinClient.resizeable && !kwinClient.minimized && kwinClient.desktop > 0 && kwinClient.activities.length === 1;
|
||||
function canTileEver(kwinClient: AbstractClient) {
|
||||
return kwinClient.resizeable;
|
||||
}
|
||||
|
||||
function canTileNow(kwinClient: AbstractClient) {
|
||||
return canTileEver(kwinClient) && !kwinClient.minimized && kwinClient.desktop > 0 && kwinClient.activities.length === 1;
|
||||
}
|
||||
|
||||
function makeTileable(kwinClient: AbstractClient) {
|
||||
if (kwinClient.minimized) {
|
||||
kwinClient.minimized = false;
|
||||
}
|
||||
if (kwinClient.desktop <= 0) {
|
||||
kwinClient.desktop = workspace.currentDesktop;
|
||||
}
|
||||
if (kwinClient.activities.length !== 1) {
|
||||
kwinClient.activities = [workspace.currentActivity];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,7 +11,7 @@ class WindowRuleEnforcer {
|
||||
}
|
||||
|
||||
shouldTile(kwinClient: AbstractClient) {
|
||||
return canTile(kwinClient) && (
|
||||
return canTileNow(kwinClient) && (
|
||||
this.preferTiling.matches(kwinClient) ||
|
||||
kwinClient.normalWindow && kwinClient.managed && !this.preferFloating.matches(kwinClient)
|
||||
);
|
||||
|
||||
@@ -128,7 +128,8 @@ class World {
|
||||
}
|
||||
|
||||
const clientState = clientData.getState();
|
||||
if (clientState instanceof ClientStateFloating && canTile(kwinClient)) {
|
||||
if (clientState instanceof ClientStateFloating && canTileEver(kwinClient)) {
|
||||
makeTileable(kwinClient);
|
||||
clientData.setState(new ClientStateTiled(this, kwinClient), false);
|
||||
} else if (clientState instanceof ClientStateTiled) {
|
||||
clientData.setState(new ClientStateFloating(), false);
|
||||
|
||||
Reference in New Issue
Block a user