aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorbobzel <zzzman@gmail.com>2020-09-03 15:20:05 -0400
committerbobzel <zzzman@gmail.com>2020-09-03 15:20:05 -0400
commit91a30e512b93937409c2fb3299dc52fc2a87c22a (patch)
treee72424ee57e4f1a0474694151914697418057ba1 /src
parent425b8c1d8a577dfd8e2970afb61d69a62bea9e96 (diff)
stopped pdfs from scrolling when hovering over link and showing a preview -- a better fix would be to just stop the scrolling in the non-preview views but let the preview scroll
Diffstat (limited to 'src')
-rw-r--r--src/client/views/nodes/LinkDocPreview.tsx15
-rw-r--r--src/client/views/pdf/PDFViewer.tsx3
2 files changed, 11 insertions, 7 deletions
diff --git a/src/client/views/nodes/LinkDocPreview.tsx b/src/client/views/nodes/LinkDocPreview.tsx
index ce8df5195..dddefc17f 100644
--- a/src/client/views/nodes/LinkDocPreview.tsx
+++ b/src/client/views/nodes/LinkDocPreview.tsx
@@ -22,6 +22,7 @@ interface Props {
}
@observer
export class LinkDocPreview extends React.Component<Props> {
+ static TargetDoc: Doc | undefined;
@observable public static LinkInfo: Opt<{ linkDoc?: Doc; addDocTab: (document: Doc, where: string) => boolean, linkSrc: Doc; href?: string; Location: number[] }>;
@observable _targetDoc: Opt<Doc>;
@observable _toolTipText = "";
@@ -42,12 +43,14 @@ export class LinkDocPreview extends React.Component<Props> {
LinkDocPreview.LinkInfo = undefined;
this._targetDoc ? DocumentManager.Instance.FollowLink(this.props.linkDoc, this._targetDoc, doc => this.props.addDocTab(doc, "add:right"), false) : null;
}
+ componentWillUnmount() { LinkDocPreview.TargetDoc = undefined; }
componentDidUpdate() { this.updatePreview(); }
componentDidMount() { this.updatePreview(); }
async updatePreview() {
const linkDoc = this.props.linkDoc;
const linkSrc = this.props.linkSrc;
+ LinkDocPreview.TargetDoc = undefined;
if (this.props.href) {
if (this.props.href.startsWith("https://en.wikipedia.org/wiki/")) {
wiki().page(this.props.href.replace("https://en.wikipedia.org/wiki/", "")).then(page => page.summary().then(action(summary => this._toolTipText = summary.substring(0, 500))));
@@ -59,7 +62,7 @@ export class LinkDocPreview extends React.Component<Props> {
const target = anchor?.annotationOn ? await DocCastAsync(anchor.annotationOn) : anchor;
runInAction(() => {
this._toolTipText = "";
- this._targetDoc = target;
+ LinkDocPreview.TargetDoc = this._targetDoc = target;
if (anchor !== this._targetDoc && anchor && this._targetDoc) {
this._targetDoc._scrollY = NumCast(anchor?.y);
}
@@ -74,8 +77,8 @@ export class LinkDocPreview extends React.Component<Props> {
this.props.addDocTab(Docs.Create.WebDocument(this.props.href, { title: this.props.href, _width: 200, _height: 400, useCors: true }), "add:right");
}
}
- width = () => Math.min(225, NumCast(this._targetDoc?.[WidthSym](), 225));
- height = () => Math.min(225, NumCast(this._targetDoc?.[HeightSym](), 225));
+ width = () => Math.min(225, NumCast(this._targetDoc?.[WidthSym](), 225)) - 16;
+ height = () => Math.min(225, NumCast(this._targetDoc?.[HeightSym](), 225)) - 16
@computed get targetDocView() {
return !this._targetDoc ?
<div style={{
@@ -105,8 +108,8 @@ export class LinkDocPreview extends React.Component<Props> {
ContainingCollectionDoc={undefined}
ContainingCollectionView={undefined}
renderDepth={0}
- PanelWidth={() => this.width() - 16} //Math.min(350, NumCast(target._width, 350))}
- PanelHeight={() => this.height() - 16} //Math.min(250, NumCast(target._height, 250))}
+ PanelWidth={this.width} //Math.min(350, NumCast(target._width, 350))}
+ PanelHeight={this.height} //Math.min(250, NumCast(target._height, 250))}
focus={emptyFunction}
whenActiveChanged={returnFalse}
bringToFront={returnFalse}
@@ -120,7 +123,7 @@ export class LinkDocPreview extends React.Component<Props> {
return <div className="linkDocPreview"
style={{
position: "absolute", left: this.props.location[0],
- top: this.props.location[1], width: this.width(), height: this.height(),
+ top: this.props.location[1], width: this.width() + 16, height: this.height() + 16,
zIndex: 1000,
border: "8px solid white", borderRadius: "7px",
boxShadow: "3px 3px 1.5px grey",
diff --git a/src/client/views/pdf/PDFViewer.tsx b/src/client/views/pdf/PDFViewer.tsx
index 2129eb145..1d3b3d994 100644
--- a/src/client/views/pdf/PDFViewer.tsx
+++ b/src/client/views/pdf/PDFViewer.tsx
@@ -32,6 +32,7 @@ import { PDFMenu } from "./PDFMenu";
import "./PDFViewer.scss";
const pdfjs = require('pdfjs-dist/es5/build/pdf.js');
import React = require("react");
+import { LinkDocPreview } from "../nodes/LinkDocPreview";
const PDFJSViewer = require("pdfjs-dist/web/pdf_viewer");
const pdfjsLib = require("pdfjs-dist");
@@ -167,7 +168,7 @@ export class PDFViewer extends ViewBoxAnnotatableComponent<IViewerProps, PdfDocu
(scrollY) => {
if (scrollY !== undefined) {
(this._showCover || this._showWaiting) && this.setupPdfJsViewer();
- this._mainCont.current && smoothScroll(1000, this._mainCont.current, (this.Document._scrollY || 0));
+ (!LinkDocPreview.TargetDoc) && this._mainCont.current && smoothScroll(1000, this._mainCont.current, (this.Document._scrollY || 0));
setTimeout(() => this.Document._scrollY = undefined, 1000);
}
},