mirror of
https://github.com/elementary/gala.git
synced 2024-12-24 01:36:05 +03:00
WorkspaceManager: Exclude a window that's about to be removed from count (#2160)
Co-authored-by: Leo <lenemter@gmail.com>
This commit is contained in:
parent
c8800bb73d
commit
8069298347
@ -266,14 +266,20 @@ namespace Gala {
|
||||
|
||||
/**
|
||||
* Get the number of toplevel windows on a workspace excluding those that are
|
||||
* on all workspaces
|
||||
* on all workspaces.
|
||||
*
|
||||
* We need `exclude` here because on Meta.Workspace.window_removed
|
||||
* the windows gets removed from workspace's internal window list but not display's window list
|
||||
* which Meta.Workspace uses for Meta.Workspace.list_windows ().
|
||||
*
|
||||
* @param workspace The workspace on which to count the windows
|
||||
* @param exclude a window to not count
|
||||
*
|
||||
*/
|
||||
public static uint get_n_windows (Meta.Workspace workspace, bool on_primary = false) {
|
||||
public static uint get_n_windows (Meta.Workspace workspace, bool on_primary = false, Meta.Window? exclude = null) {
|
||||
var n = 0;
|
||||
foreach (unowned var window in workspace.list_windows ()) {
|
||||
if (window.on_all_workspaces) {
|
||||
if (window.on_all_workspaces || window == exclude) {
|
||||
continue;
|
||||
}
|
||||
|
||||
|
@ -156,7 +156,7 @@ namespace Gala {
|
||||
// or we are in modal-mode
|
||||
if ((!is_active_workspace || wm.is_modal ())
|
||||
&& remove_freeze_count < 1
|
||||
&& Utils.get_n_windows (workspace, true) == 0
|
||||
&& Utils.get_n_windows (workspace, true, window) == 0
|
||||
&& workspace != last_workspace) {
|
||||
remove_workspace (workspace);
|
||||
}
|
||||
@ -164,7 +164,7 @@ namespace Gala {
|
||||
// if window is the second last and empty, make it the last workspace
|
||||
if (is_active_workspace
|
||||
&& remove_freeze_count < 1
|
||||
&& Utils.get_n_windows (workspace, true) == 0
|
||||
&& Utils.get_n_windows (workspace, true, window) == 0
|
||||
&& workspace.index () == last_workspace_index - 1) {
|
||||
remove_workspace (last_workspace);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user