environment: Add Math.clamp
The good old clamp function, now part of the Math family. Clamp is happy after so many years of loneliness. This is a strict implementation of the draft ECMAScript proposal. https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1295
This commit is contained in:
parent
5569090d1c
commit
8154728d09
@ -72,10 +72,6 @@ function _getFolderName(folder) {
|
|||||||
return name;
|
return name;
|
||||||
}
|
}
|
||||||
|
|
||||||
function clamp(value, min, max) {
|
|
||||||
return Math.max(min, Math.min(max, value));
|
|
||||||
}
|
|
||||||
|
|
||||||
function _getViewFromIcon(icon) {
|
function _getViewFromIcon(icon) {
|
||||||
for (let parent = icon.get_parent(); parent; parent = parent.get_parent()) {
|
for (let parent = icon.get_parent(); parent; parent = parent.get_parent()) {
|
||||||
if (parent instanceof BaseAppView)
|
if (parent instanceof BaseAppView)
|
||||||
@ -627,7 +623,7 @@ class AppDisplay extends BaseAppView {
|
|||||||
}
|
}
|
||||||
|
|
||||||
goToPage(pageNumber, animate = true) {
|
goToPage(pageNumber, animate = true) {
|
||||||
pageNumber = clamp(pageNumber, 0, this._grid.nPages() - 1);
|
pageNumber = Math.clamp(pageNumber, 0, this._grid.nPages() - 1);
|
||||||
|
|
||||||
if (this._grid.currentPage === pageNumber &&
|
if (this._grid.currentPage === pageNumber &&
|
||||||
this._displayingDialog &&
|
this._displayingDialog &&
|
||||||
|
@ -362,6 +362,10 @@ function init() {
|
|||||||
const Format = imports.format;
|
const Format = imports.format;
|
||||||
|
|
||||||
String.prototype.format = Format.format;
|
String.prototype.format = Format.format;
|
||||||
|
|
||||||
|
Math.clamp = function (x, lower, upper) {
|
||||||
|
return Math.min(Math.max(x, lower), upper);
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
// adjustAnimationTime:
|
// adjustAnimationTime:
|
||||||
|
@ -155,10 +155,6 @@ class BaseIcon extends St.Bin {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
function clamp(value, min, max) {
|
|
||||||
return Math.max(Math.min(value, max), min);
|
|
||||||
}
|
|
||||||
|
|
||||||
function zoomOutActor(actor) {
|
function zoomOutActor(actor) {
|
||||||
let [x, y] = actor.get_transformed_position();
|
let [x, y] = actor.get_transformed_position();
|
||||||
zoomOutActorAtPos(actor, x, y);
|
zoomOutActorAtPos(actor, x, y);
|
||||||
@ -182,8 +178,8 @@ function zoomOutActorAtPos(actor, x, y) {
|
|||||||
let scaledHeight = height * APPICON_ANIMATION_OUT_SCALE;
|
let scaledHeight = height * APPICON_ANIMATION_OUT_SCALE;
|
||||||
let scaledX = x - (scaledWidth - width) / 2;
|
let scaledX = x - (scaledWidth - width) / 2;
|
||||||
let scaledY = y - (scaledHeight - height) / 2;
|
let scaledY = y - (scaledHeight - height) / 2;
|
||||||
let containedX = clamp(scaledX, monitor.x, monitor.x + monitor.width - scaledWidth);
|
let containedX = Math.clamp(scaledX, monitor.x, monitor.x + monitor.width - scaledWidth);
|
||||||
let containedY = clamp(scaledY, monitor.y, monitor.y + monitor.height - scaledHeight);
|
let containedY = Math.clamp(scaledY, monitor.y, monitor.y + monitor.height - scaledHeight);
|
||||||
|
|
||||||
actorClone.ease({
|
actorClone.ease({
|
||||||
scale_x: APPICON_ANIMATION_OUT_SCALE,
|
scale_x: APPICON_ANIMATION_OUT_SCALE,
|
||||||
|
@ -225,10 +225,6 @@ class Indicator extends PanelMenu.SystemIndicator {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
function clamp(value, min, max) {
|
|
||||||
return Math.max(min, Math.min(max, value));
|
|
||||||
}
|
|
||||||
|
|
||||||
var AppAuthorizer = class {
|
var AppAuthorizer = class {
|
||||||
constructor(desktopId, reqAccuracyLevel, permStoreProxy, maxAccuracyLevel) {
|
constructor(desktopId, reqAccuracyLevel, permStoreProxy, maxAccuracyLevel) {
|
||||||
this.desktopId = desktopId;
|
this.desktopId = desktopId;
|
||||||
@ -313,9 +309,8 @@ var AppAuthorizer = class {
|
|||||||
|
|
||||||
_completeAuth() {
|
_completeAuth() {
|
||||||
if (this._accuracyLevel != GeoclueAccuracyLevel.NONE) {
|
if (this._accuracyLevel != GeoclueAccuracyLevel.NONE) {
|
||||||
this._accuracyLevel = clamp(this._accuracyLevel,
|
this._accuracyLevel = Math.clamp(this._accuracyLevel,
|
||||||
0,
|
0, this._maxAccuracyLevel);
|
||||||
this._maxAccuracyLevel);
|
|
||||||
}
|
}
|
||||||
this._saveToPermissionStore();
|
this._saveToPermissionStore();
|
||||||
|
|
||||||
|
@ -28,10 +28,6 @@ const State = {
|
|||||||
SCROLLING: 1,
|
SCROLLING: 1,
|
||||||
};
|
};
|
||||||
|
|
||||||
function clamp(value, min, max) {
|
|
||||||
return Math.max(min, Math.min(max, value));
|
|
||||||
}
|
|
||||||
|
|
||||||
const TouchpadSwipeGesture = GObject.registerClass({
|
const TouchpadSwipeGesture = GObject.registerClass({
|
||||||
Properties: {
|
Properties: {
|
||||||
'enabled': GObject.ParamSpec.boolean(
|
'enabled': GObject.ParamSpec.boolean(
|
||||||
@ -558,8 +554,8 @@ var SwipeTracker = GObject.registerClass({
|
|||||||
|
|
||||||
let firstPoint = this._snapPoints[0];
|
let firstPoint = this._snapPoints[0];
|
||||||
let lastPoint = this._snapPoints[this._snapPoints.length - 1];
|
let lastPoint = this._snapPoints[this._snapPoints.length - 1];
|
||||||
this._progress = clamp(this._progress, firstPoint, lastPoint);
|
this._progress = Math.clamp(this._progress, firstPoint, lastPoint);
|
||||||
this._progress = clamp(this._progress,
|
this._progress = Math.clamp(this._progress,
|
||||||
this._initialProgress - 1, this._initialProgress + 1);
|
this._initialProgress - 1, this._initialProgress + 1);
|
||||||
|
|
||||||
this.emit('update', this._progress);
|
this.emit('update', this._progress);
|
||||||
@ -606,7 +602,7 @@ var SwipeTracker = GObject.registerClass({
|
|||||||
|
|
||||||
let duration = Math.abs((this._progress - endProgress) / velocity * DURATION_MULTIPLIER);
|
let duration = Math.abs((this._progress - endProgress) / velocity * DURATION_MULTIPLIER);
|
||||||
if (duration > 0) {
|
if (duration > 0) {
|
||||||
duration = clamp(duration,
|
duration = Math.clamp(duration,
|
||||||
MIN_ANIMATION_DURATION, MAX_ANIMATION_DURATION);
|
MIN_ANIMATION_DURATION, MAX_ANIMATION_DURATION);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user