aboutsummaryrefslogtreecommitdiff
path: root/src/client/views/DocumentDecorations.tsx
diff options
context:
space:
mode:
authorbob <bcz@cs.brown.edu>2019-10-16 16:42:37 -0400
committerbob <bcz@cs.brown.edu>2019-10-16 16:42:37 -0400
commit8a3cfa8d6e72c9bfea4b38760e0b138b6525574c (patch)
tree73a7710e48980dc397bef2ef974f5840bb917842 /src/client/views/DocumentDecorations.tsx
parentfb817995eb94727b11324f298d0a30eebda8dcb7 (diff)
a bunch of fixes to layouts to support templates in paticular.
Diffstat (limited to 'src/client/views/DocumentDecorations.tsx')
-rw-r--r--src/client/views/DocumentDecorations.tsx47
1 files changed, 24 insertions, 23 deletions
diff --git a/src/client/views/DocumentDecorations.tsx b/src/client/views/DocumentDecorations.tsx
index 755739a11..2f40ea746 100644
--- a/src/client/views/DocumentDecorations.tsx
+++ b/src/client/views/DocumentDecorations.tsx
@@ -471,47 +471,48 @@ export class DocumentDecorations extends React.Component<{}, { value: string }>
SelectionManager.SelectedDocuments().forEach(element => {
if (dX !== 0 || dY !== 0 || dW !== 0 || dH !== 0) {
let doc = PositionDocument(element.props.Document);
+ let layoutDoc = PositionDocument(element.props.Document.layout instanceof Doc ? element.props.Document.layout : element.props.Document);
let nwidth = doc.nativeWidth || 0;
let nheight = doc.nativeHeight || 0;
- let width = (doc.width || 0);
- let height = (doc.height || (nheight / nwidth * width));
+ let width = (layoutDoc.width || 0);
+ let height = (layoutDoc.height || (nheight / nwidth * width));
let scale = element.props.ScreenToLocalTransform().Scale * element.props.ContentScaling();
let actualdW = Math.max(width + (dW * scale), 20);
let actualdH = Math.max(height + (dH * scale), 20);
- doc.x = (doc.x || 0) + dX * (actualdW - width);
- doc.y = (doc.y || 0) + dY * (actualdH - height);
+ layoutDoc.x = (layoutDoc.x || 0) + dX * (actualdW - width);
+ layoutDoc.y = (layoutDoc.y || 0) + dY * (actualdH - height);
let proto = doc.isTemplate ? doc : Doc.GetProto(element.props.Document); // bcz: 'doc' didn't work here...
- let fixedAspect = e.ctrlKey || (!doc.ignoreAspect && nwidth && nheight);
- if (fixedAspect && e.ctrlKey && doc.ignoreAspect) {
- doc.ignoreAspect = false;
- proto.nativeWidth = nwidth = doc.width || 0;
- proto.nativeHeight = nheight = doc.height || 0;
+ let fixedAspect = e.ctrlKey || (!layoutDoc.ignoreAspect && nwidth && nheight);
+ if (fixedAspect && e.ctrlKey && layoutDoc.ignoreAspect) {
+ layoutDoc.ignoreAspect = false;
+ proto.nativeWidth = nwidth = layoutDoc.width || 0;
+ proto.nativeHeight = nheight = layoutDoc.height || 0;
}
if (fixedAspect && (!nwidth || !nheight)) {
- proto.nativeWidth = nwidth = doc.width || 0;
- proto.nativeHeight = nheight = doc.height || 0;
+ proto.nativeWidth = nwidth = layoutDoc.width || 0;
+ proto.nativeHeight = nheight = layoutDoc.height || 0;
}
- if (nwidth > 0 && nheight > 0 && !BoolCast(doc.ignoreAspect)) {
+ if (nwidth > 0 && nheight > 0 && !layoutDoc.ignoreAspect) {
if (Math.abs(dW) > Math.abs(dH)) {
if (!fixedAspect) {
- Doc.SetInPlace(element.props.Document, "nativeWidth", actualdW / (doc.width || 1) * (doc.nativeWidth || 0), true);
+ Doc.SetInPlace(doc, "nativeWidth", actualdW / (layoutDoc.width || 1) * (layoutDoc.nativeWidth || 0), true);
}
- doc.width = actualdW;
- if (fixedAspect && !doc.fitWidth) doc.height = nheight / nwidth * doc.width;
- else doc.height = actualdH;
+ layoutDoc.width = actualdW;
+ if (fixedAspect && !layoutDoc.fitWidth) layoutDoc.height = nheight / nwidth * layoutDoc.width;
+ else layoutDoc.height = actualdH;
}
else {
if (!fixedAspect) {
- Doc.SetInPlace(element.props.Document, "nativeHeight", actualdH / (doc.height || 1) * (doc.nativeHeight || 0), true);
+ Doc.SetInPlace(doc, "nativeHeight", actualdH / (layoutDoc.height || 1) * (doc.nativeHeight || 0), true);
}
- doc.height = actualdH;
- if (fixedAspect && !doc.fitWidth) doc.width = nwidth / nheight * doc.height;
- else doc.width = actualdW;
+ layoutDoc.height = actualdH;
+ if (fixedAspect && !layoutDoc.fitWidth) layoutDoc.width = nwidth / nheight * layoutDoc.height;
+ else layoutDoc.width = actualdW;
}
} else {
- dW && (doc.width = actualdW);
- dH && (doc.height = actualdH);
- dH && element.props.Document.autoHeight && Doc.SetInPlace(element.props.Document, "autoHeight", false, true);
+ dW && (layoutDoc.width = actualdW);
+ dH && (layoutDoc.height = actualdH);
+ dH && layoutDoc.autoHeight && Doc.SetInPlace(layoutDoc, "autoHeight", false, true);
}
}
});