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 // 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;
}, },