workspace: Use a better algorithm for computing individual thumbnail scale
The one we had before could make unmaximized windows appear to be bigger than maximized ones, for a few reasons. Ensure that this doesn't happen again, and add some comments to explain the whys and needs for twiddling the individual thumbnail size. https://bugzilla.gnome.org/show_bug.cgi?id=686944
This commit is contained in:
parent
7ba0f07732
commit
ef69c228fd
@ -777,16 +777,19 @@ const LayoutStrategy = new Lang.Class({
|
|||||||
// Computes and returns a fancy scale for @window using the
|
// Computes and returns a fancy scale for @window using the
|
||||||
// base scale, @scale.
|
// base scale, @scale.
|
||||||
_computeWindowScale: function(window, scale) {
|
_computeWindowScale: function(window, scale) {
|
||||||
let width = window.actor.width;
|
// Since we align windows next to each other, the height of the
|
||||||
let height = window.actor.height;
|
// thumbnails is much more important to preserve than the width of
|
||||||
let ratio;
|
// them, so two windows with equal height, but maybe differering
|
||||||
|
// widths line up.
|
||||||
|
let ratio = window.actor.height / this._monitor.height;
|
||||||
|
|
||||||
if (width > height)
|
// The purpose of this manipulation here is to prevent windows
|
||||||
ratio = width / this._monitor.width;
|
// from getting too small. For something like a calculator window,
|
||||||
else
|
// we need to bump up the size just a bit to make sure it looks
|
||||||
ratio = height / this._monitor.height;
|
// good. We'll use a multiplier of 1.5 for this.
|
||||||
|
|
||||||
let fancyScale = (2 / (1 + ratio)) * scale;
|
// Map from [0, 1] to [1.5, 1]
|
||||||
|
let fancyScale = _interpolate(1.5, 1, ratio) * scale;
|
||||||
return fancyScale;
|
return fancyScale;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user