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:
Jasper St. Pierre 2012-10-26 11:43:38 -04:00
parent 7ba0f07732
commit ef69c228fd

View File

@ -777,16 +777,19 @@ const LayoutStrategy = new Lang.Class({
// Computes and returns a fancy scale for @window using the
// base scale, @scale.
_computeWindowScale: function(window, scale) {
let width = window.actor.width;
let height = window.actor.height;
let ratio;
// Since we align windows next to each other, the height of the
// thumbnails is much more important to preserve than the width of
// them, so two windows with equal height, but maybe differering
// widths line up.
let ratio = window.actor.height / this._monitor.height;
if (width > height)
ratio = width / this._monitor.width;
else
ratio = height / this._monitor.height;
// The purpose of this manipulation here is to prevent windows
// from getting too small. For something like a calculator window,
// we need to bump up the size just a bit to make sure it looks
// 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;
},