Revert "Prevent PersistedElements overflowing scrolled areas"
parent
3d8e9f9edb
commit
613b994f9d
|
@ -96,10 +96,6 @@ $AppsDrawerBodyHeight: 273px;
|
||||||
height: $AppsDrawerBodyHeight;
|
height: $AppsDrawerBodyHeight;
|
||||||
}
|
}
|
||||||
|
|
||||||
.mx_AppTile_persistedWrapper > div {
|
|
||||||
height: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.mx_AppTile_mini .mx_AppTile_persistedWrapper {
|
.mx_AppTile_mini .mx_AppTile_persistedWrapper {
|
||||||
height: 114px;
|
height: 114px;
|
||||||
}
|
}
|
||||||
|
|
|
@ -156,70 +156,16 @@ export default class PersistedElement extends React.Component {
|
||||||
child.style.display = visible ? 'block' : 'none';
|
child.style.display = visible ? 'block' : 'none';
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* Clip element bounding rectangle to that of the parent elements.
|
|
||||||
* This is not a full visibility check, but prevents the persisted
|
|
||||||
* element from overflowing parent containers when inside a scrolled
|
|
||||||
* area.
|
|
||||||
*/
|
|
||||||
_getClippedBoundingClientRect(element) {
|
|
||||||
let parentElement = element.parentElement;
|
|
||||||
let rect = element.getBoundingClientRect();
|
|
||||||
|
|
||||||
rect = new DOMRect(rect.left, rect.top, rect.width, rect.height);
|
|
||||||
|
|
||||||
while (parentElement) {
|
|
||||||
const parentRect = parentElement.getBoundingClientRect();
|
|
||||||
|
|
||||||
if (parentRect.left > rect.left) {
|
|
||||||
rect.width = rect.width - (parentRect.left - rect.left);
|
|
||||||
rect.x = parentRect.x;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (parentRect.top > rect.top) {
|
|
||||||
rect.height = rect.height - (parentRect.top - rect.top);
|
|
||||||
rect.y = parentRect.y;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (parentRect.right < rect.right) {
|
|
||||||
rect.width = rect.width - (rect.right - parentRect.right);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (parentRect.bottom < rect.bottom) {
|
|
||||||
rect.height = rect.height - (rect.bottom - parentRect.bottom);
|
|
||||||
}
|
|
||||||
|
|
||||||
parentElement = parentElement.parentElement;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (rect.width < 0) rect.width = 0;
|
|
||||||
if (rect.height < 0) rect.height = 0;
|
|
||||||
|
|
||||||
return rect;
|
|
||||||
}
|
|
||||||
|
|
||||||
updateChildPosition(child, parent) {
|
updateChildPosition(child, parent) {
|
||||||
if (!child || !parent) return;
|
if (!child || !parent) return;
|
||||||
|
|
||||||
const parentRect = parent.getBoundingClientRect();
|
const parentRect = parent.getBoundingClientRect();
|
||||||
const clipRect = this._getClippedBoundingClientRect(parent);
|
|
||||||
|
|
||||||
Object.assign(child.parentElement.style, {
|
|
||||||
position: 'absolute',
|
|
||||||
top: clipRect.top + 'px',
|
|
||||||
left: clipRect.left + 'px',
|
|
||||||
width: clipRect.width + 'px',
|
|
||||||
height: clipRect.height + 'px',
|
|
||||||
overflow: "hidden",
|
|
||||||
});
|
|
||||||
|
|
||||||
Object.assign(child.style, {
|
Object.assign(child.style, {
|
||||||
position: 'absolute',
|
position: 'absolute',
|
||||||
top: (parentRect.top - clipRect.top) + 'px',
|
top: parentRect.top + 'px',
|
||||||
left: (parentRect.left - clipRect.left) + 'px',
|
left: parentRect.left + 'px',
|
||||||
width: parentRect.width + 'px',
|
width: parentRect.width + 'px',
|
||||||
height: parentRect.height + 'px',
|
height: parentRect.height + 'px',
|
||||||
overflow: "hidden",
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -141,15 +141,6 @@ export default createReactClass({
|
||||||
return counters;
|
return counters;
|
||||||
},
|
},
|
||||||
|
|
||||||
_onScroll: function(rect) {
|
|
||||||
if (this.props.onResize) {
|
|
||||||
this.props.onResize();
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Force refresh of PersistedElements which may be partially hidden */
|
|
||||||
window.dispatchEvent(new Event('resize'));
|
|
||||||
},
|
|
||||||
|
|
||||||
render: function() {
|
render: function() {
|
||||||
const CallView = sdk.getComponent("voip.CallView");
|
const CallView = sdk.getComponent("voip.CallView");
|
||||||
const TintableSvg = sdk.getComponent("elements.TintableSvg");
|
const TintableSvg = sdk.getComponent("elements.TintableSvg");
|
||||||
|
@ -274,7 +265,7 @@ export default createReactClass({
|
||||||
}
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<AutoHideScrollbar className={classes} style={style} onScroll={this._onScroll}>
|
<AutoHideScrollbar className={classes} style={style} >
|
||||||
{ stateViews }
|
{ stateViews }
|
||||||
{ appsDrawer }
|
{ appsDrawer }
|
||||||
{ fileDropTarget }
|
{ fileDropTarget }
|
||||||
|
|
Loading…
Reference in New Issue