[gnome-shell/wip/aday/app-grid-layout] workspace: Add WorkspaceBackground to Workspace itself
- From: Allan Day <allanday src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell/wip/aday/app-grid-layout] workspace: Add WorkspaceBackground to Workspace itself
- Date: Mon, 22 Feb 2021 10:20:28 +0000 (UTC)
commit f71c053e8c6381a3ad90568da0d8df73cfbf6f60
Author: Georges Basile Stavracas Neto <georges stavracas gmail com>
Date: Wed Feb 17 11:01:44 2021 -0300
workspace: Add WorkspaceBackground to Workspace itself
Instead of adding it to the window previews container, add it to Workspace
itself. This requires expanding WorkspaceBackground, so add the relevant
x and y expand flags.
Since the background is beneath the window previews, create and add it before
the window preview container.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1691>
js/ui/workspace.js | 48 +++++++++++++++++++++---------------------------
1 file changed, 21 insertions(+), 27 deletions(-)
---
diff --git a/js/ui/workspace.js b/js/ui/workspace.js
index fa66417e37..f886903a04 100644
--- a/js/ui/workspace.js
+++ b/js/ui/workspace.js
@@ -416,7 +416,6 @@ var WorkspaceLayout = GObject.registerClass({
this._container = null;
this._windows = new Map();
this._sortedWindows = [];
- this._background = null;
this._lastBox = null;
this._windowSlots = [];
this._layout = null;
@@ -605,15 +604,6 @@ var WorkspaceLayout = GObject.registerClass({
this._windowSlots = this._getWindowSlots(box.copy());
}
- if (this._background) {
- const { scaleFactor } = St.ThemeContext.get_for_stage(global.stage);
- const cornerRadius = scaleFactor * BACKGROUND_CORNER_RADIUS_PIXELS;
- this._background.cornerRadius =
- Util.lerp(0, cornerRadius, this._stateAdjustment.value);
-
- this._background.allocate(box);
- }
-
const allocationScale = containerBox.get_width() / this._workarea.width;
const workspaceBox = new Clutter.ActorBox();
@@ -621,7 +611,7 @@ var WorkspaceLayout = GObject.registerClass({
let childBox = new Clutter.ActorBox();
for (const child of container) {
- if (!child.visible || child === this._background)
+ if (!child.visible)
continue;
// The fifth element in the slot array is the WindowPreview
@@ -783,16 +773,6 @@ var WorkspaceLayout = GObject.registerClass({
this.layout_changed();
}
- setBackground(background) {
- if (this._background)
- this._container.remove_child(this._background);
-
- this._background = background;
-
- if (this._background)
- this._container.add_child(this._background);
- }
-
syncStacking(stackIndices) {
const windows = [...this._windows.keys()];
windows.sort((a, b) => {
@@ -802,7 +782,7 @@ var WorkspaceLayout = GObject.registerClass({
return stackIndices[seqA] - stackIndices[seqB];
});
- let lastWindow = this._background;
+ let lastWindow = null;
for (const window of windows) {
window.setStackAbove(lastWindow);
lastWindow = window;
@@ -880,6 +860,8 @@ class WorkspaceBackground extends St.Widget {
super._init({
style_class: 'workspace-background',
layout_manager: new Clutter.BinLayout(),
+ x_expand: true,
+ y_expand: true,
});
this._monitorIndex = monitorIndex;
@@ -978,6 +960,11 @@ class Workspace extends St.Widget {
layout_manager: new Clutter.BinLayout(),
});
+ // Background
+ this._background = new WorkspaceBackground(monitorIndex);
+ this.add_child(this._background);
+
+ // Window previews
const layoutManager = new WorkspaceLayout(metaWorkspace, monitorIndex);
this._container = new Clutter.Actor({
reactive: true,
@@ -1000,10 +987,6 @@ class Workspace extends St.Widget {
if (monitorIndex != Main.layoutManager.primaryIndex)
this.add_style_class_name('external-monitor');
- // Background
- this._background = new WorkspaceBackground(monitorIndex);
- layoutManager.setBackground(this._background);
-
const clickAction = new Clutter.ClickAction();
clickAction.connect('clicked', action => {
// Switch to the workspace when not the active one, leave the
@@ -1048,6 +1031,17 @@ class Workspace extends St.Widget {
// DND requires this to be set
this._delegate = this;
+
+ layoutManager.stateAdjustment.connect('notify::value',
+ () => this._updateBackgroundBorderRadius());
+ }
+
+ _updateBackgroundBorderRadius() {
+ const { scaleFactor } = St.ThemeContext.get_for_stage(global.stage);
+ const cornerRadius = scaleFactor * BACKGROUND_CORNER_RADIUS_PIXELS;
+ const { stateAdjustment } = this._container.layout_manager;
+ this._background.cornerRadius =
+ Util.lerp(0, cornerRadius, stateAdjustment.value);
}
_shouldLeaveOverview() {
@@ -1303,7 +1297,7 @@ class Workspace extends St.Widget {
this._container.layout_manager.addWindow(clone, metaWindow);
if (this._windows.length == 0)
- clone.setStackAbove(this._background);
+ clone.setStackAbove(null);
else
clone.setStackAbove(this._windows[this._windows.length - 1]);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]