diff options
| author | James Hu <51237606+jameshu111@users.noreply.github.com> | 2023-07-06 11:21:48 -0400 | 
|---|---|---|
| committer | James Hu <51237606+jameshu111@users.noreply.github.com> | 2023-07-06 11:21:48 -0400 | 
| commit | 5379662bdc9279e43d35166ce8bafe042d0d7fb6 (patch) | |
| tree | 53d474435e772d0652b7ac321224b21c89dbcaad /src/client/views/pdf/PDFViewer.tsx | |
| parent | abeda176df59157f3194dd86966725f6193997c6 (diff) | |
| parent | e4ad92e7300ee7844a514379c8a01d0f01cb3a59 (diff) | |
Merge branch 'master' into james-azure-image
Diffstat (limited to 'src/client/views/pdf/PDFViewer.tsx')
| -rw-r--r-- | src/client/views/pdf/PDFViewer.tsx | 29 | 
1 files changed, 15 insertions, 14 deletions
diff --git a/src/client/views/pdf/PDFViewer.tsx b/src/client/views/pdf/PDFViewer.tsx index dd202418b..0fd93868a 100644 --- a/src/client/views/pdf/PDFViewer.tsx +++ b/src/client/views/pdf/PDFViewer.tsx @@ -483,16 +483,17 @@ export class PDFViewer extends React.Component<IViewerProps> {          }      }; -    pointerEvents = () => (this.props.isContentActive() && this.props.pointerEvents?.() !== 'none' && !MarqueeOptionsMenu.Instance.isShown() ? 'all' : SnappingManager.GetIsDragging() ? undefined : 'none'); +    pointerEvents = () => +        this.props.isContentActive() && !MarqueeOptionsMenu.Instance.isShown() +            ? 'all' // +            : 'none';      @computed get annotationLayer() { +        const inlineAnnos = this.inlineTextAnnotations.sort((a, b) => NumCast(a.y) - NumCast(b.y)).filter(anno => !anno.hidden);          return (              <div className="pdfViewerDash-annotationLayer" style={{ height: Doc.NativeHeight(this.props.Document), transform: `scale(${NumCast(this.props.layoutDoc._freeform_scale, 1)})` }} ref={this._annotationLayer}> -                {this.inlineTextAnnotations -                    .sort((a, b) => NumCast(a.y) - NumCast(b.y)) -                    .filter(anno => !anno.hidden) -                    .map(anno => ( -                        <Annotation {...this.props} fieldKey={this.props.fieldKey + '_annotations'} pointerEvents={this.pointerEvents} showInfo={this.showInfo} dataDoc={this.props.dataDoc} anno={anno} key={`${anno[Id]}-annotation`} /> -                    ))} +                {inlineAnnos.map(anno => ( +                    <Annotation {...this.props} fieldKey={this.props.fieldKey + '_annotations'} pointerEvents={this.pointerEvents} showInfo={this.showInfo} dataDoc={this.props.dataDoc} anno={anno} key={`${anno[Id]}-annotation`} /> +                ))}              </div>          );      } @@ -514,10 +515,10 @@ export class PDFViewer extends React.Component<IViewerProps> {      panelWidth = () => this.props.PanelWidth() / (this.props.NativeDimScaling?.() || 1);      panelHeight = () => this.props.PanelHeight() / (this.props.NativeDimScaling?.() || 1);      transparentFilter = () => [...this.props.childFilters(), Utils.IsTransparentFilter()]; -    opaqueFilter = () => [...this.props.childFilters(), Utils.noDragsDocFilter, ...(DragManager.docsBeingDragged.length ? [] : [Utils.IsOpaqueFilter()])]; +    opaqueFilter = () => [...this.props.childFilters(), Utils.noDragsDocFilter, ...(DragManager.docsBeingDragged.length && this.props.isContentActive() ? [] : [Utils.IsOpaqueFilter()])];      childStyleProvider = (doc: Doc | undefined, props: Opt<DocumentViewProps>, property: string): any => {          if (doc instanceof Doc && property === StyleProp.PointerEvents) { -            if (this.inlineTextAnnotations.includes(doc)) return 'none'; +            if (this.inlineTextAnnotations.includes(doc) || this.props.isContentActive() === false) return 'none';              return 'all';          }          return this.props.styleProvider?.(doc, props, property); @@ -536,8 +537,8 @@ export class PDFViewer extends React.Component<IViewerProps> {                  NativeWidth={returnZero}                  NativeHeight={returnZero}                  setContentView={emptyFunction} // override setContentView to do nothing -                pointerEvents={SnappingManager.GetIsDragging() ? returnAll : returnNone} // freeform view doesn't get events unless something is being dragged onto it. -                childPointerEvents="all" // but freeform children need to get events to allow text editing, etc +                pointerEvents={SnappingManager.GetIsDragging() && this.props.isContentActive() ? returnAll : returnNone} // freeform view doesn't get events unless something is being dragged onto it. +                childPointerEvents={this.props.isContentActive() !== false ? 'all' : 'none'} // but freeform children need to get events to allow text editing, etc                  renderDepth={this.props.renderDepth + 1}                  isAnnotationOverlay={true}                  fieldKey={this.props.fieldKey + '_annotations'} @@ -549,7 +550,6 @@ export class PDFViewer extends React.Component<IViewerProps> {                  ScreenToLocalTransform={this.overlayTransform}                  isAnyChildContentActive={returnFalse}                  isAnnotationOverlayScrollable={true} -                dropAction="embed"                  childFilters={childFilters}                  select={emptyFunction}                  bringToFront={emptyFunction} @@ -558,14 +558,15 @@ export class PDFViewer extends React.Component<IViewerProps> {          </div>      );      @computed get overlayTransparentAnnotations() { -        return this.renderAnnotations(this.transparentFilter, 'multiply', DragManager.docsBeingDragged.length ? 'none' : undefined); +        const transparentChildren = DocUtils.FilterDocs(DocListCast(this.props.dataDoc[this.props.fieldKey + '_annotations']), this.transparentFilter(), []); +        return !transparentChildren.length ? null : this.renderAnnotations(this.transparentFilter, 'multiply', DragManager.docsBeingDragged.length && this.props.isContentActive() ? 'none' : undefined);      }      @computed get overlayOpaqueAnnotations() {          return this.renderAnnotations(this.opaqueFilter, this.allAnnotations.some(anno => anno.mixBlendMode) ? 'hard-light' : undefined);      }      @computed get overlayLayer() {          return ( -            <div style={{ pointerEvents: SnappingManager.GetIsDragging() ? 'all' : 'none' }}> +            <div style={{ pointerEvents: this.props.isContentActive() && SnappingManager.GetIsDragging() ? 'all' : 'none' }}>                  {this.overlayTransparentAnnotations}                  {this.overlayOpaqueAnnotations}              </div>  | 
