aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/client/views/GestureOverlay.tsx15
-rw-r--r--src/client/views/collections/CollectionStackingView.tsx2
2 files changed, 9 insertions, 8 deletions
diff --git a/src/client/views/GestureOverlay.tsx b/src/client/views/GestureOverlay.tsx
index 18743e850..ffa089af1 100644
--- a/src/client/views/GestureOverlay.tsx
+++ b/src/client/views/GestureOverlay.tsx
@@ -655,7 +655,7 @@ export class GestureOverlay extends Touchable {
this._points = [];
}
//get out of ink mode after each stroke=
- if (!CollectionFreeFormViewChrome.Instance._keepMode) {
+ if (CollectionFreeFormViewChrome.Instance && !CollectionFreeFormViewChrome.Instance?._keepMode) {
Doc.SetSelectedTool(InkTool.None);
CollectionFreeFormViewChrome.Instance._selected = CollectionFreeFormViewChrome.Instance._shapesNum;
SetActiveArrowStart("none");
@@ -839,14 +839,15 @@ export class GestureOverlay extends Touchable {
) || false;
}
- getBounds = (stroke: InkData) => {
- const xs = stroke.map(p => p.X);
- const ys = stroke.map(p => p.Y);
+ getBounds = (stroke: InkData, pad?: boolean) => {
+ const padding = pad ? [-20000, 20000] : [];
+ const xs = [...padding, ...stroke.map(p => p.X)];
+ const ys = [...padding, ...stroke.map(p => p.Y)];
const right = Math.max(...xs);
const left = Math.min(...xs);
const bottom = Math.max(...ys);
const top = Math.min(...ys);
- return { right: right, left: left, bottom: bottom, top: top, width: right - left, height: bottom - top };
+ return { right, left, bottom, top, width: right - left, height: bottom - top };
}
@computed get svgBounds() {
@@ -856,7 +857,7 @@ export class GestureOverlay extends Touchable {
@computed get elements() {
const width = Number(ActiveInkWidth());
const rect = this._overlayRef.current?.getBoundingClientRect();
- const B = this.svgBounds;
+ const B = { left: -20000, right: 20000, top: -20000, bottom: 20000, width: 40000, height: 40000 }; //this.getBounds(this._points, true);
B.left = B.left - width / 2;
B.right = B.right + width / 2;
B.top = B.top - width / 2 - (rect?.y || 0);
@@ -867,7 +868,7 @@ export class GestureOverlay extends Touchable {
this.props.children,
this._palette,
[this._strokes.map((l, i) => {
- const b = this.getBounds(l);
+ const b = { left: -20000, right: 20000, top: -20000, bottom: 20000, width: 40000, height: 40000 };//this.getBounds(l, true);
return <svg key={i} width={b.width} height={b.height} style={{ transform: `translate(${b.left}px, ${b.top}px)`, pointerEvents: "none", position: "absolute", zIndex: 30000, overflow: "visible" }}>
{InteractionUtils.CreatePolyline(l, b.left, b.top, ActiveInkColor(), width, width,
ActiveInkBezierApprox(), ActiveFillColor(), ActiveArrowStart(), ActiveArrowEnd(),
diff --git a/src/client/views/collections/CollectionStackingView.tsx b/src/client/views/collections/CollectionStackingView.tsx
index b62fde4c8..2fedca711 100644
--- a/src/client/views/collections/CollectionStackingView.tsx
+++ b/src/client/views/collections/CollectionStackingView.tsx
@@ -283,7 +283,7 @@ export class CollectionStackingView extends CollectionSubView<StackingDocument,
this._docXfs.map((cd, i) => {
const pos = cd.dxf().inverse().transformPoint(-2 * this.gridGap, -2 * this.gridGap);
const pos1 = cd.dxf().inverse().transformPoint(cd.width(), cd.height());
- if (where[0] > pos[0] && where[0] < pos1[0] && where[1] > pos[1] && where[1] < pos1[1]) {
+ if (where[0] > pos[0] && where[0] < pos1[0] && where[1] > pos[1] && (i === this._docXfs.length - 1 || where[1] < pos1[1])) {
targInd = i;
const axis = this.Document._viewType === CollectionViewType.Masonry ? 0 : 1;
plusOne = where[axis] > (pos[axis] + pos1[axis]) / 2 ? 1 : 0;