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:
parent
d368bae503
commit
df2181c913
@ -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 =
|
||||||
|
Loading…
Reference in New Issue
Block a user