aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorbobzel <zzzman@gmail.com>2022-04-29 17:38:06 -0400
committerbobzel <zzzman@gmail.com>2022-04-29 17:38:06 -0400
commit55a5322fffc09bde04ef8b466e19b701bad2762b (patch)
treed39e55336405bd4d79bd26b150ba5caf052d6fef /src
parenta6aec8759298fba41b486a973796662056f47da0 (diff)
added 'enter' to toggle iconify. fixed webBox deiconify to render webpage. updated colors in minimap to match icon colors.
Diffstat (limited to 'src')
-rw-r--r--src/client/views/DocumentDecorations.tsx11
-rw-r--r--src/client/views/GlobalKeyHandler.ts4
-rw-r--r--src/client/views/collections/TabDocView.tsx17
-rw-r--r--src/client/views/nodes/WebBox.tsx8
4 files changed, 28 insertions, 12 deletions
diff --git a/src/client/views/DocumentDecorations.tsx b/src/client/views/DocumentDecorations.tsx
index 1feb643df..fb8cfbc15 100644
--- a/src/client/views/DocumentDecorations.tsx
+++ b/src/client/views/DocumentDecorations.tsx
@@ -146,14 +146,15 @@ export class DocumentDecorations extends React.Component<{ PanelWidth: number, P
_deleteAfterIconify = false;
_iconifyBatch: UndoManager.Batch | undefined;
- onCloseClick = (force = false) => {
+ onCloseClick = (forceDeleteOrIconify: boolean | undefined) => {
if (this.canDelete) {
const views = SelectionManager.Views().slice().filter(v => v);
- this._deleteAfterIconify = force || this._iconifyBatch ? true : false;
+ if (forceDeleteOrIconify === false && this._iconifyBatch) return;
+ this._deleteAfterIconify = forceDeleteOrIconify || this._iconifyBatch ? true : false;
if (!this._iconifyBatch) {
this._iconifyBatch = UndoManager.StartBatch("iconifying");
} else {
- force = false; // can't force immediate close in the middle of iconifying -- have to wait until iconifying completes
+ forceDeleteOrIconify = false; // can't force immediate close in the middle of iconifying -- have to wait until iconifying completes
}
var iconifyingCount = views.length;
const finished = action((force?: boolean) => {
@@ -166,7 +167,7 @@ export class DocumentDecorations extends React.Component<{ PanelWidth: number, P
this._iconifyBatch = undefined;
}
});
- if (force) finished(force);
+ if (forceDeleteOrIconify) finished(forceDeleteOrIconify);
else if (!this._deleteAfterIconify) views.forEach(dv => dv.iconify(finished));
}
}
@@ -531,7 +532,7 @@ export class DocumentDecorations extends React.Component<{ PanelWidth: number, P
left: bounds.x - this._resizeBorderWidth / 2,
top: bounds.y - this._resizeBorderWidth / 2 - this._titleHeight,
}}>
- {!canDelete ? <div /> : topBtn("close", this.hasIcons ? "times" : "window-maximize", undefined, e => this.onCloseClick(this.hasIcons), "Close")}
+ {!canDelete ? <div /> : topBtn("close", this.hasIcons ? "times" : "window-maximize", undefined, e => this.onCloseClick(this.hasIcons ? true : undefined), "Close")}
{titleArea}
{!canOpen ? (null) : topBtn("open", "external-link-alt", this.onMaximizeDown, undefined, "Open in Tab (ctrl: as alias, shift: in new collection)")}
{hideResizers ? (null) :
diff --git a/src/client/views/GlobalKeyHandler.ts b/src/client/views/GlobalKeyHandler.ts
index 6120c4c9e..914802041 100644
--- a/src/client/views/GlobalKeyHandler.ts
+++ b/src/client/views/GlobalKeyHandler.ts
@@ -139,6 +139,10 @@ export class KeyManager {
window.getSelection()?.empty();
document.body.focus();
break;
+ case "enter": {
+ DocumentDecorations.Instance.onCloseClick(false);
+ break;
+ }
case "delete":
case "backspace":
if (document.activeElement?.tagName !== "INPUT" && document.activeElement?.tagName !== "TEXTAREA") {
diff --git a/src/client/views/collections/TabDocView.tsx b/src/client/views/collections/TabDocView.tsx
index 8e45ec3b3..78b125e07 100644
--- a/src/client/views/collections/TabDocView.tsx
+++ b/src/client/views/collections/TabDocView.tsx
@@ -443,9 +443,20 @@ export class TabMinimapView extends React.Component<TabMinimapViewProps> {
default: return DefaultStyleProvider(doc, props, property);
case StyleProp.PointerEvents: return "none";
case StyleProp.DocContents:
- const background = doc.type === DocumentType.PDF ? "red" : doc.type === DocumentType.IMG ? "blue" : doc.type === DocumentType.RTF ? "orange" :
- doc.type === DocumentType.VID ? "purple" : doc.type === DocumentType.WEB ? "yellow" : doc.type === DocumentType.MAP ? "blue" : "gray";
- return doc.type === DocumentType.COL ?
+ const background = ((type: DocumentType) => {
+ switch (type) {
+ case DocumentType.PDF: return "pink";
+ case DocumentType.AUDIO: return "lightgreen";
+ case DocumentType.WEB: return "brown";
+ case DocumentType.IMG: return "blue";
+ case DocumentType.MAP: return "orange";
+ case DocumentType.VID: return "purple";
+ case DocumentType.RTF: return "yellow";
+ case DocumentType.COL: return undefined;
+ default: return "gray";
+ }
+ })(doc.type as DocumentType);
+ return !background ?
undefined :
<div style={{ width: doc[WidthSym](), height: doc[HeightSym](), position: "absolute", display: "block", background }} />;
}
diff --git a/src/client/views/nodes/WebBox.tsx b/src/client/views/nodes/WebBox.tsx
index 5a39123b9..5c72417cc 100644
--- a/src/client/views/nodes/WebBox.tsx
+++ b/src/client/views/nodes/WebBox.tsx
@@ -158,7 +158,7 @@ export class WebBox extends ViewBoxAnnotatableComponent<ViewBoxAnnotatableProps
});
}
}
- });
+ }, { fireImmediately: this.props.isSelected() });
this._disposers.autoHeight = reaction(() => this.layoutDoc._autoHeight,
autoHeight => {
@@ -202,10 +202,10 @@ export class WebBox extends ViewBoxAnnotatableComponent<ViewBoxAnnotatableProps
);
quickScroll = false;
}
- componentWillUnmount() {
+ @action componentWillUnmount() {
Object.values(this._disposers).forEach(disposer => disposer?.());
- this._iframe?.removeEventListener('wheel', this.iframeWheel, true);
- this._iframe?.contentDocument?.removeEventListener("pointerup", this.iframeUp);
+ // this._iframe?.removeEventListener('wheel', this.iframeWheel, true);
+ // this._iframe?.contentDocument?.removeEventListener("pointerup", this.iframeUp);
}
@action