aboutsummaryrefslogtreecommitdiff
path: root/src/client/views/DocumentDecorations.tsx
diff options
context:
space:
mode:
authorBob Zeleznik <zzzman@gmail.com>2019-04-20 00:03:47 -0400
committerBob Zeleznik <zzzman@gmail.com>2019-04-20 00:03:47 -0400
commitc6bcea414a7ab89a5aab11fc6b44886066f38f0d (patch)
tree4abf1c301b6ce7c39912e51ef3d979cd2260aeea /src/client/views/DocumentDecorations.tsx
parent425ea0bacbb40312c5f722f27bf0ca93fe0b17b3 (diff)
fixed some layout bugs
Diffstat (limited to 'src/client/views/DocumentDecorations.tsx')
-rw-r--r--src/client/views/DocumentDecorations.tsx54
1 files changed, 26 insertions, 28 deletions
diff --git a/src/client/views/DocumentDecorations.tsx b/src/client/views/DocumentDecorations.tsx
index 1f5078c85..e68c4fe0f 100644
--- a/src/client/views/DocumentDecorations.tsx
+++ b/src/client/views/DocumentDecorations.tsx
@@ -198,28 +198,15 @@ export class DocumentDecorations extends React.Component<{}, { value: string }>
@action
onMinimizeMove = (e: PointerEvent): void => {
e.stopPropagation();
- let dx = e.pageX - this._downX;
- let dy = e.pageY - this._downY;
- if (Math.abs(dx) > 4 || Math.abs(dy) > 4) {
+ let moved = Math.abs(e.pageX - this._downX) > 4 || Math.abs(e.pageY - this._downY) > 4;
+ if (moved) {
this._iconifying = true;
- let xf = SelectionManager.SelectedDocuments()[0].props.ScreenToLocalTransform().scale(SelectionManager.SelectedDocuments()[0].props.ContentScaling()).inverse().transformPoint(0, 0);
- let dx = e.pageX - xf[0];
- let dy = e.pageY - xf[1];
- this._minimizedX = e.clientX;
- this._minimizedY = e.clientY;
- if (Math.abs(dx) < 20 && Math.abs(dy) < 20) {
- this._minimizedX = xf[0];
- this._minimizedY = xf[1];
- }
- SelectionManager.SelectedDocuments().map(dv => {
- let minDoc = dv.props.Document.Get(KeyStore.MinimizedDoc);
- if (minDoc instanceof Document) {
- let where = (dv.props.ScreenToLocalTransform()).scale(dv.props.ContentScaling()).transformPoint(this._minimizedX, this._minimizedY);
- let minDocument = minDoc as Document;
- minDocument.SetNumber(KeyStore.X, where[0] + dv.props.Document.GetNumber(KeyStore.X, 0));
- minDocument.SetNumber(KeyStore.Y, where[1] + dv.props.Document.GetNumber(KeyStore.Y, 0));
- }
- });
+ let selDoc = SelectionManager.SelectedDocuments()[0];
+ let xf = selDoc.props.ScreenToLocalTransform().scale(selDoc.props.ContentScaling()).inverse().transformPoint(0, 0);
+ let snapped = Math.abs(e.pageX - xf[0]) < 20 && Math.abs(e.pageY - xf[1]) < 20;
+ this._minimizedX = snapped ? xf[0] + 12 : e.clientX;
+ this._minimizedY = snapped ? xf[1] + 12 : e.clientY;
+ this.moveMinDocs();
}
}
@action
@@ -228,16 +215,27 @@ export class DocumentDecorations extends React.Component<{}, { value: string }>
if (e.button === 0) {
let dx = e.clientX - this._downX;
let dy = e.clientY - this._downY;
- if (Math.abs(dx) < 4 && Math.abs(dy) < 4 && !this._iconifying) {
- SelectionManager.SelectedDocuments().map(dv => dv.minimize());
- SelectionManager.DeselectAll();
- } else {
- this._minimizedX = this._minimizedY = 0;
- }
+ let tapped = Math.abs(dx) < 4 && Math.abs(dy) < 4 && !this._iconifying;
document.removeEventListener("pointermove", this.onMinimizeMove);
document.removeEventListener("pointerup", this.onMinimizeUp);
+ Promise.all(SelectionManager.SelectedDocuments().map(async selDoc => await selDoc.minimize())).then(() => {
+ !tapped && this.moveMinDocs();
+ this._minimizedX = this._minimizedY = 0;
+ });
+ this._iconifying = false;
}
- this._iconifying = false;
+ }
+ moveMinDocs() {
+ SelectionManager.SelectedDocuments().map(selDoc => {
+ let minDoc = selDoc.props.Document.Get(KeyStore.MinimizedDoc);
+ if (minDoc instanceof Document) {
+ let zoom = selDoc.props.Document.GetNumber(KeyStore.Zoom, 1);
+ let where = (selDoc.props.ScreenToLocalTransform()).scale(selDoc.props.ContentScaling()).scale(1 / zoom).
+ transformPoint(this._minimizedX - 12, this._minimizedY - 12);
+ minDoc.SetNumber(KeyStore.X, where[0] + selDoc.props.Document.GetNumber(KeyStore.X, 0));
+ minDoc.SetNumber(KeyStore.Y, where[1] + selDoc.props.Document.GetNumber(KeyStore.Y, 0));
+ }
+ });
}
onPointerDown = (e: React.PointerEvent): void => {