windowPreview: Use a proper spacing between icon and title
Right now the spacing between icon and title works using a little trick that doesn't really seem intended: The title is offset by (icon-height * ICON_OVERLAP), when the icon is actually overlapping the preview by ICON_OVERLAP, and *overflowing* the preview by (1 - ICON_OVERLAP). So correct that and offset the title by (icon-height * (1 - ICON_OVERLAP)), and since now there's no spacing anymore, add a proper ICON_TITLE_SPACING to that offset. Also add the new ICON_TITLE_SPACING to the overlapHeight, where the spacing was ignored so far. Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1692>
This commit is contained in:
parent
ece5220b42
commit
3795ccbcf3
@ -20,6 +20,8 @@ var DRAGGING_WINDOW_OPACITY = 100;
|
|||||||
const ICON_SIZE = 64;
|
const ICON_SIZE = 64;
|
||||||
const ICON_OVERLAP = 0.7;
|
const ICON_OVERLAP = 0.7;
|
||||||
|
|
||||||
|
const ICON_TITLE_SPACING = 6;
|
||||||
|
|
||||||
var WindowPreviewLayout = GObject.registerClass({
|
var WindowPreviewLayout = GObject.registerClass({
|
||||||
Properties: {
|
Properties: {
|
||||||
'bounding-box': GObject.ParamSpec.boxed(
|
'bounding-box': GObject.ParamSpec.boxed(
|
||||||
@ -325,10 +327,11 @@ var WindowPreview = GObject.registerClass({
|
|||||||
source: this._windowContainer,
|
source: this._windowContainer,
|
||||||
coordinate: Clutter.BindCoordinate.X,
|
coordinate: Clutter.BindCoordinate.X,
|
||||||
}));
|
}));
|
||||||
|
const iconBottomOverlap = ICON_SIZE * (1 - ICON_OVERLAP);
|
||||||
this._title.add_constraint(new Clutter.BindConstraint({
|
this._title.add_constraint(new Clutter.BindConstraint({
|
||||||
source: this._windowContainer,
|
source: this._windowContainer,
|
||||||
coordinate: Clutter.BindCoordinate.Y,
|
coordinate: Clutter.BindCoordinate.Y,
|
||||||
offset: scaleFactor * ICON_SIZE * ICON_OVERLAP,
|
offset: scaleFactor * (iconBottomOverlap + ICON_TITLE_SPACING),
|
||||||
}));
|
}));
|
||||||
this._title.add_constraint(new Clutter.AlignConstraint({
|
this._title.add_constraint(new Clutter.AlignConstraint({
|
||||||
source: this._windowContainer,
|
source: this._windowContainer,
|
||||||
@ -338,7 +341,7 @@ var WindowPreview = GObject.registerClass({
|
|||||||
this._title.add_constraint(new Clutter.AlignConstraint({
|
this._title.add_constraint(new Clutter.AlignConstraint({
|
||||||
source: this._windowContainer,
|
source: this._windowContainer,
|
||||||
align_axis: Clutter.AlignAxis.Y_AXIS,
|
align_axis: Clutter.AlignAxis.Y_AXIS,
|
||||||
pivot_point: new Graphene.Point({ x: -1, y: ICON_OVERLAP }),
|
pivot_point: new Graphene.Point({ x: -1, y: 0 }),
|
||||||
factor: 1,
|
factor: 1,
|
||||||
}));
|
}));
|
||||||
this._title.clutter_text.ellipsize = Pango.EllipsizeMode.END;
|
this._title.clutter_text.ellipsize = Pango.EllipsizeMode.END;
|
||||||
@ -455,7 +458,7 @@ var WindowPreview = GObject.registerClass({
|
|||||||
const [, titleHeight] = this._title.get_preferred_height(-1);
|
const [, titleHeight] = this._title.get_preferred_height(-1);
|
||||||
|
|
||||||
const topOverlap = 0;
|
const topOverlap = 0;
|
||||||
const bottomOverlap = titleHeight;
|
const bottomOverlap = ICON_TITLE_SPACING + titleHeight;
|
||||||
|
|
||||||
return [topOverlap, bottomOverlap];
|
return [topOverlap, bottomOverlap];
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user