workspaceThumbnail: Use current number of workspaces for sizes

There are situations where MetaWorkspaceManager and ThumbnailsBox disagree
on the number of workspaces, for example when animating them out. It's more
important to follow the visible number of workspaces while they're updated.

Make vfunc_get_preferred_width() and vfunc_get_preferred_height() use the
current number of workspace thumbnails to calculate their sizes, instead of
MetaWorkspaceManager's n-thumbnails property.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1593>
This commit is contained in:
Georges Basile Stavracas Neto 2021-01-27 13:29:53 -03:00 committed by Marge Bot
parent d368bae503
commit df2181c913

View File

@ -1178,13 +1178,12 @@ var ThumbnailsBox = GObject.registerClass({
} }
vfunc_get_preferred_height(forWidth) { vfunc_get_preferred_height(forWidth) {
let workspaceManager = global.workspace_manager;
let themeNode = this.get_theme_node(); let themeNode = this.get_theme_node();
forWidth = themeNode.adjust_for_width(forWidth); forWidth = themeNode.adjust_for_width(forWidth);
let spacing = themeNode.get_length('spacing'); let spacing = themeNode.get_length('spacing');
let nWorkspaces = workspaceManager.n_workspaces; let nWorkspaces = this._thumbnails.length;
let totalSpacing = (nWorkspaces - 1) * spacing; let totalSpacing = (nWorkspaces - 1) * spacing;
const avail = forWidth - totalSpacing; const avail = forWidth - totalSpacing;
@ -1200,11 +1199,10 @@ var ThumbnailsBox = GObject.registerClass({
// Note that for getPreferredHeight/Width we cheat a bit and skip propagating // Note that for getPreferredHeight/Width we cheat a bit and skip propagating
// the size request to our children because we know how big they are and know // the size request to our children because we know how big they are and know
// that the actors aren't depending on the virtual functions being called. // that the actors aren't depending on the virtual functions being called.
let workspaceManager = global.workspace_manager;
let themeNode = this.get_theme_node(); let themeNode = this.get_theme_node();
let spacing = themeNode.get_length('spacing'); let spacing = themeNode.get_length('spacing');
let nWorkspaces = workspaceManager.n_workspaces; let nWorkspaces = this._thumbnails.length;
let totalSpacing = (nWorkspaces - 1) * spacing; let totalSpacing = (nWorkspaces - 1) * spacing;
const naturalWidth = const naturalWidth =