diff options
| author | bobzel <zzzman@gmail.com> | 2021-08-26 12:08:30 -0400 |
|---|---|---|
| committer | bobzel <zzzman@gmail.com> | 2021-08-26 12:08:30 -0400 |
| commit | 26cd0fb5b14ef0fac6f09228bbca6e16013506e8 (patch) | |
| tree | 2723feb045b7edf24bb6d64cdba0a8176e5aa708 /src/client/views/collections/CollectionTreeView.tsx | |
| parent | b7cc1b5df65cc6d0777069602678afebef7f17b0 (diff) | |
allowed tree views to be scaled which makes slides work in lightbox.
Diffstat (limited to 'src/client/views/collections/CollectionTreeView.tsx')
| -rw-r--r-- | src/client/views/collections/CollectionTreeView.tsx | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/src/client/views/collections/CollectionTreeView.tsx b/src/client/views/collections/CollectionTreeView.tsx index e36835893..e94268204 100644 --- a/src/client/views/collections/CollectionTreeView.tsx +++ b/src/client/views/collections/CollectionTreeView.tsx @@ -61,7 +61,9 @@ export class CollectionTreeView extends CollectionSubView<Document, Partial<coll this.props.isSelected(outsideReaction) || this._isAnyChildContentActive || this.props.rootSelected(outsideReaction)) ? true : false) + isDisposing = false; componentWillUnmount() { + this.isDisposing = true; super.componentWillUnmount(); this.treedropDisposer?.(); Object.values(this._disposers).forEach(disposer => disposer?.()); @@ -76,6 +78,7 @@ export class CollectionTreeView extends CollectionSubView<Document, Partial<coll refList: Set<any> = new Set(); observer: any; computeHeight = () => { + if (this.isDisposing) return; const bodyHeight = Array.from(this.refList).reduce((p, r) => p + Number(getComputedStyle(r).height.replace("px", "")), this.paddingTop() + this.paddingBot()); this.layoutDoc._autoHeightMargins = bodyHeight; this.props.setHeight(this.documentTitleHeight() + bodyHeight); @@ -269,7 +272,16 @@ export class CollectionTreeView extends CollectionSubView<Document, Partial<coll </button> </div >; } + @computed get nativeWidth() { return Doc.NativeWidth(this.Document, undefined, true); } + @computed get nativeHeight() { return Doc.NativeHeight(this.Document, undefined, true); } + @computed get contentScaling() { + const nw = this.nativeWidth; + const nh = this.nativeHeight; + const hscale = nh ? this.props.PanelHeight() / nh : 1; + const wscale = nw ? this.props.PanelWidth() / nw : 1; + return wscale < hscale ? wscale : hscale; + } paddingX = () => NumCast(this.doc._xPadding, 15); paddingTop = () => NumCast(this.doc._yPadding, 20); paddingBot = () => NumCast(this.doc._yPadding, 20); @@ -278,14 +290,17 @@ export class CollectionTreeView extends CollectionSubView<Document, Partial<coll titleTransform = () => this.props.ScreenToLocalTransform().translate(-NumCast(this.doc._xPadding, 10), -NumCast(this.doc._yPadding, 20)); truncateTitleWidth = () => this.treeViewtruncateTitleWidth; onChildClick = () => this.props.onChildClick?.() || ScriptCast(this.doc.onChildClick); - panelWidth = () => this.props.PanelWidth() - 2 * this.paddingX(); + panelWidth = () => (this.props.PanelWidth() - 2 * this.paddingX()) * (this.props.scaling?.() || 1); render() { TraceMobx(); const background = () => this.props.styleProvider?.(this.doc, this.props, StyleProp.BackgroundColor); const pointerEvents = () => !this.props.isContentActive() && !SnappingManager.GetIsDragging() ? "none" : undefined; return !(this.doc instanceof Doc) || !this.treeChildren ? (null) : - <div className="collectionTreeView-container" onContextMenu={this.onContextMenu}> + <div className="collectionTreeView-container" + style={{ transform: `scale(${this.contentScaling})`, transformOrigin: "top left" }} + + onContextMenu={this.onContextMenu}> <div className="collectionTreeView-dropTarget" style={{ background: background(), paddingLeft: `${this.paddingX()}px`, paddingRight: `${this.paddingX()}px`, paddingBottom: `${this.paddingBot()}px`, paddingTop: `${this.paddingTop()}px`, pointerEvents: pointerEvents() }} onWheel={e => e.stopPropagation()} |
