[gnome-shell] workspace: Account for window picker padding
- From: Georges Basile Stavracas Neto <gbsneto src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell] workspace: Account for window picker padding
- Date: Mon, 6 Jul 2020 22:46:04 +0000 (UTC)
commit 124eb1ca187928b07cc333c0134491a1edd05a77
Author: Florian Müllner <fmuellner gnome org>
Date: Fri Jun 26 02:56:35 2020 +0200
workspace: Account for window picker padding
Workspaces are supposed to request the work area as their preferred
size, however the widget will adjust the sizes returned by the
layout manager to account for borders and padding.
https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1345
js/ui/workspace.js | 22 ++++++++++++++++++----
1 file changed, 18 insertions(+), 4 deletions(-)
---
diff --git a/js/ui/workspace.js b/js/ui/workspace.js
index 14670d1004..f4189ec4da 100644
--- a/js/ui/workspace.js
+++ b/js/ui/workspace.js
@@ -520,26 +520,40 @@ var WorkspaceLayout = GObject.registerClass({
return this._layout.strategy.computeWindowSlots(this._layout, availArea);
}
+ _getAdjustedWorkarea(container) {
+ const workarea = this._workarea.copy();
+
+ if (container instanceof St.Widget) {
+ const themeNode = container.get_theme_node();
+ workarea.width -= themeNode.get_horizontal_padding();
+ workarea.height -= themeNode.get_vertical_padding();
+ }
+
+ return workarea;
+ }
+
vfunc_set_container(container) {
this._container = container;
this._stateAdjustment.actor = container;
}
vfunc_get_preferred_width(container, forHeight) {
+ const workarea = this._getAdjustedWorkarea(container);
if (forHeight === -1)
- return [0, this._workarea.width];
+ return [0, workarea.width];
- const workAreaAspectRatio = this._workarea.width / this._workarea.height;
+ const workAreaAspectRatio = workarea.width / workarea.height;
const widthPreservingAspectRatio = forHeight * workAreaAspectRatio;
return [0, widthPreservingAspectRatio];
}
vfunc_get_preferred_height(container, forWidth) {
+ const workarea = this._getAdjustedWorkarea(container);
if (forWidth === -1)
- return [0, this._workarea.height];
+ return [0, workarea.height];
- const workAreaAspectRatio = this._workarea.width / this._workarea.height;
+ const workAreaAspectRatio = workarea.width / workarea.height;
const heightPreservingAspectRatio = forWidth / workAreaAspectRatio;
return [0, heightPreservingAspectRatio];
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]