workspace: Move border radius handling to WorkspaceBackground
Let WorkspaceBackground itself manage its background radius. Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1691>
This commit is contained in:
parent
a17c4283ea
commit
1819e34f29
@ -856,7 +856,7 @@ var WorkspaceLayout = GObject.registerClass({
|
|||||||
|
|
||||||
var WorkspaceBackground = GObject.registerClass(
|
var WorkspaceBackground = GObject.registerClass(
|
||||||
class WorkspaceBackground extends St.Widget {
|
class WorkspaceBackground extends St.Widget {
|
||||||
_init(monitorIndex) {
|
_init(monitorIndex, stateAdjustment) {
|
||||||
super._init({
|
super._init({
|
||||||
style_class: 'workspace-background',
|
style_class: 'workspace-background',
|
||||||
layout_manager: new Clutter.BinLayout(),
|
layout_manager: new Clutter.BinLayout(),
|
||||||
@ -867,6 +867,9 @@ class WorkspaceBackground extends St.Widget {
|
|||||||
this._monitorIndex = monitorIndex;
|
this._monitorIndex = monitorIndex;
|
||||||
this._workarea = Main.layoutManager.getWorkAreaForMonitor(monitorIndex);
|
this._workarea = Main.layoutManager.getWorkAreaForMonitor(monitorIndex);
|
||||||
|
|
||||||
|
this._stateAdjustment = stateAdjustment;
|
||||||
|
stateAdjustment.connect('notify::value', () => this._updateBorderRadius());
|
||||||
|
|
||||||
this._bin = new Clutter.Actor({
|
this._bin = new Clutter.Actor({
|
||||||
layout_manager: new Clutter.BinLayout(),
|
layout_manager: new Clutter.BinLayout(),
|
||||||
clip_to_allocation: true,
|
clip_to_allocation: true,
|
||||||
@ -898,6 +901,15 @@ class WorkspaceBackground extends St.Widget {
|
|||||||
this.connect('destroy', this._onDestroy.bind(this));
|
this.connect('destroy', this._onDestroy.bind(this));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_updateBorderRadius() {
|
||||||
|
const { scaleFactor } = St.ThemeContext.get_for_stage(global.stage);
|
||||||
|
const cornerRadius = scaleFactor * BACKGROUND_CORNER_RADIUS_PIXELS;
|
||||||
|
|
||||||
|
const backgroundContent = this._bgManager.backgroundActor.content;
|
||||||
|
backgroundContent.rounded_clip_radius =
|
||||||
|
Util.lerp(0, cornerRadius, this._stateAdjustment.value);
|
||||||
|
}
|
||||||
|
|
||||||
_updateRoundedClipBounds() {
|
_updateRoundedClipBounds() {
|
||||||
const monitor = Main.layoutManager.monitors[this._monitorIndex];
|
const monitor = Main.layoutManager.monitors[this._monitorIndex];
|
||||||
|
|
||||||
@ -942,10 +954,6 @@ class WorkspaceBackground extends St.Widget {
|
|||||||
delete this._workareasChangedId;
|
delete this._workareasChangedId;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
set cornerRadius(radius) {
|
|
||||||
this._bgManager.backgroundActor.content.rounded_clip_radius = radius;
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -960,12 +968,14 @@ class Workspace extends St.Widget {
|
|||||||
layout_manager: new Clutter.BinLayout(),
|
layout_manager: new Clutter.BinLayout(),
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const layoutManager = new WorkspaceLayout(metaWorkspace, monitorIndex);
|
||||||
|
|
||||||
// Background
|
// Background
|
||||||
this._background = new WorkspaceBackground(monitorIndex);
|
this._background =
|
||||||
|
new WorkspaceBackground(monitorIndex, layoutManager.stateAdjustment);
|
||||||
this.add_child(this._background);
|
this.add_child(this._background);
|
||||||
|
|
||||||
// Window previews
|
// Window previews
|
||||||
const layoutManager = new WorkspaceLayout(metaWorkspace, monitorIndex);
|
|
||||||
this._container = new Clutter.Actor({
|
this._container = new Clutter.Actor({
|
||||||
reactive: true,
|
reactive: true,
|
||||||
x_expand: true,
|
x_expand: true,
|
||||||
@ -1031,17 +1041,6 @@ class Workspace extends St.Widget {
|
|||||||
|
|
||||||
// DND requires this to be set
|
// DND requires this to be set
|
||||||
this._delegate = this;
|
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() {
|
_shouldLeaveOverview() {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user