[gnome-shell] dash: Fix messed up icon height
- From: Georges Basile Stavracas Neto <gbsneto src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell] dash: Fix messed up icon height
- Date: Sun, 14 Apr 2019 02:54:52 +0000 (UTC)
commit 4e5ca6d376e6a57a78fe38f77e12e8c6b7210725
Author: Florian Müllner <fmuellner gnome org>
Date: Tue Apr 9 03:03:54 2019 +0200
dash: Fix messed up icon height
When determining the biggest icon size that fits the available height,
we first subtract the additional space requirements of icons (spacing,
padding, running indicator etc.) and then divide the result by the
number of icons to get the maximum size available to each icon texture.
In the above, the additional space requirement of each icon is taken
from the first icon (as all icons are assumed to be the same), and
calculated as the difference between the icon button's preferred height
and the currently used icon size.
To make sure that the icon is actually using the dash's current icon
size (even while animating to a new icon size), we enforce its height
during the size request and restore its original height afterwards.
However after some recent changes, that step is causing troubles:
For some reason, the original height may be 0, and when we restore it,
we end up forcing a fixed non-height that bypasses the regular size
request machinery.
While it is unclear where exactly the zero height comes from (maybe
waiting for a valid resource scale?), it is clear that it's best
to avoid forcing a fixed height. So instead of making the icon
texture comply with the assumed icon size, adjust the calculations
to use its current height request.
https://gitlab.gnome.org/GNOME/gnome-shell/issues/1053
js/ui/dash.js | 14 +++++---------
1 file changed, 5 insertions(+), 9 deletions(-)
---
diff --git a/js/ui/dash.js b/js/ui/dash.js
index e60cdd8ad..6b5aeffb1 100644
--- a/js/ui/dash.js
+++ b/js/ui/dash.js
@@ -584,22 +584,18 @@ var Dash = class Dash {
let firstButton = iconChildren[0].child;
let firstIcon = firstButton._delegate.icon;
- let minHeight, natHeight;
- let scaleFactor = St.ThemeContext.get_for_stage(global.stage).scale_factor;
-
- // Enforce the current icon size during the size request
+ // Enforce valid spacings during the size request
firstIcon.icon.ensure_style();
- let [, currentHeight] = firstIcon.icon.get_size();
- firstIcon.icon.set_height(this.iconSize * scaleFactor);
- [minHeight, natHeight] = firstButton.get_preferred_height(-1);
- firstIcon.icon.set_height(currentHeight);
+ let [, iconHeight] = firstIcon.icon.get_preferred_height(-1);
+ let [, buttonHeight] = firstButton.get_preferred_height(-1);
// Subtract icon padding and box spacing from the available height
- availHeight -= iconChildren.length * (natHeight - this.iconSize * scaleFactor) +
+ availHeight -= iconChildren.length * (buttonHeight - iconHeight) +
(iconChildren.length - 1) * spacing;
let availSize = availHeight / iconChildren.length;
+ let scaleFactor = St.ThemeContext.get_for_stage(global.stage).scale_factor;
let iconSizes = baseIconSizes.map(s => s * scaleFactor);
let newIconSize = baseIconSizes[0];
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]