mirror of
https://github.com/element-hq/element-web
synced 2024-11-24 18:25:49 +03:00
don't over-constraint layout while resizing
adapting the approach taken in the prototype
This commit is contained in:
parent
b0bb4eb5ab
commit
88f25dec4d
1 changed files with 28 additions and 1 deletions
|
@ -41,6 +41,14 @@ export class Layout {
|
||||||
this._sectionHeights = Object.assign({}, initialSizes);
|
this._sectionHeights = Object.assign({}, initialSizes);
|
||||||
// in-progress heights, while dragging. Committed on mouse-up.
|
// in-progress heights, while dragging. Committed on mouse-up.
|
||||||
this._heights = [];
|
this._heights = [];
|
||||||
|
// use while manually resizing to cancel
|
||||||
|
// the resize for a given mouse position
|
||||||
|
// when the previous resize made the layout
|
||||||
|
// constrained
|
||||||
|
this._clampedOffset = 0;
|
||||||
|
// used while manually resizing, to clear
|
||||||
|
// _clampedOffset when the direction of resizing changes
|
||||||
|
this._lastOffset = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
setAvailableHeight(newSize) {
|
setAvailableHeight(newSize) {
|
||||||
|
@ -268,6 +276,22 @@ export class Layout {
|
||||||
this._sectionHeights[section.id] = this._heights[i];
|
this._sectionHeights[section.id] = this._heights[i];
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_setUncommittedSectionHeight(sectionIndex, offset) {
|
||||||
|
if (Math.sign(offset) != Math.sign(this._lastOffset)) {
|
||||||
|
this._clampedOffset = undefined;
|
||||||
|
}
|
||||||
|
if (this._clampedOffset !== undefined) {
|
||||||
|
if (offset < 0 && offset < this._clampedOffset) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (offset > 0 && offset > this._clampedOffset) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this._clampedOffset = this._relayout(sectionIndex, offset);
|
||||||
|
this._lastOffset = offset;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class Handle {
|
class Handle {
|
||||||
|
@ -278,7 +302,10 @@ class Handle {
|
||||||
}
|
}
|
||||||
|
|
||||||
setHeight(height) {
|
setHeight(height) {
|
||||||
this._layout._relayout(this._sectionIndex, height - this._initialHeight);
|
this._layout._setUncommittedSectionHeight(
|
||||||
|
this._sectionIndex,
|
||||||
|
height - this._initialHeight,
|
||||||
|
);
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue