aboutsummaryrefslogtreecommitdiff
path: root/src/client/util
diff options
context:
space:
mode:
authorbobzel <zzzman@gmail.com>2023-11-18 23:47:13 -0500
committerbobzel <zzzman@gmail.com>2023-11-18 23:47:13 -0500
commit2b0e4ccc096998eb1d727f2e85ea8c1a63b27e08 (patch)
tree1d5bc81e4cf74b20b599a5069c3448a2de4784fb /src/client/util
parent1b568af6b2725b9eed6f591bfce193d39d5804de (diff)
fixed ctrl-drag for expressions, maps, fform doc selections. fixed using shift to add Doc to a selection and also when bounding box already covers the doc to add. fixed dragging maximize button to start goldenlayout drag properly. fixed typing character to group,etc a multiselection when a text doc has input focus. fixed using clusters. add Shift-U to ungroup alternate group style. multi-select blurs() all active inputs. shift-selecting a multi-selected Doc, deselects it.
Diffstat (limited to 'src/client/util')
-rw-r--r--src/client/util/DragManager.ts4
-rw-r--r--src/client/util/SelectionManager.ts13
-rw-r--r--src/client/util/SnappingManager.ts14
3 files changed, 20 insertions, 11 deletions
diff --git a/src/client/util/DragManager.ts b/src/client/util/DragManager.ts
index e59e847c2..f928a1bf9 100644
--- a/src/client/util/DragManager.ts
+++ b/src/client/util/DragManager.ts
@@ -57,7 +57,7 @@ export function SetupDrag(_reference: React.RefObject<HTMLElement>, docFunc: ()
export namespace DragManager {
let dragDiv: HTMLDivElement;
let dragLabel: HTMLDivElement;
- export let StartWindowDrag: Opt<(e: { pageX: number; pageY: number }, dragDocs: Doc[], finishDrag?: (aborted: boolean) => void) => void>;
+ export let StartWindowDrag: Opt<(e: { pageX: number; pageY: number }, dragDocs: Doc[], finishDrag?: (aborted: boolean) => void) => boolean>;
export let CompleteWindowDrag: Opt<(aborted: boolean) => void>;
export function Root() {
@@ -490,7 +490,7 @@ export namespace DragManager {
if (dragData instanceof DocumentDragData) {
dragData.userDropAction = e.ctrlKey && e.altKey ? 'copy' : e.ctrlKey ? 'embed' : dragData.defaultDropAction;
}
- if (((e.target as any)?.className === 'lm_tabs' || (e.target as any)?.className === 'lm_header' || e?.shiftKey) && dragData.draggedDocuments.length === 1) {
+ if (((e.target as any)?.className === 'lm_tabs' || (e.target as any)?.className === 'lm_header') && dragData.draggedDocuments.length === 1) {
if (!startWindowDragTimer) {
startWindowDragTimer = setTimeout(async () => {
startWindowDragTimer = undefined;
diff --git a/src/client/util/SelectionManager.ts b/src/client/util/SelectionManager.ts
index fcf705ac0..e864458d8 100644
--- a/src/client/util/SelectionManager.ts
+++ b/src/client/util/SelectionManager.ts
@@ -21,18 +21,13 @@ export namespace SelectionManager {
manager.SelectedSchemaDocument = doc;
}
@action
- SelectView(docView: DocumentView, ctrlPressed: boolean): void {
- // if doc is not in SelectedDocuments, add it
+ SelectView(docView: DocumentView, extendSelection: boolean): void {
if (!docView.SELECTED) {
- if (!ctrlPressed) this.DeselectAll();
+ if (!extendSelection) this.DeselectAll();
manager.SelectedViews.push(docView);
- } else if (!ctrlPressed && (manager.SelectedViews.length > 1 || manager.SelectedSchemaDocument)) {
- manager.SelectedViews.filter(dv => dv !== docView).forEach(dv => dv.props.whenChildContentsActiveChanged(false));
- manager.SelectedSchemaDocument = undefined;
- manager.SelectedViews.length = 0;
+ docView.SELECTED = true;
+ docView.props.whenChildContentsActiveChanged(true);
}
- docView.SELECTED = true;
- docView.props.whenChildContentsActiveChanged(true);
}
@action
DeselectView(docView?: DocumentView): void {
diff --git a/src/client/util/SnappingManager.ts b/src/client/util/SnappingManager.ts
index c0cd94067..fce43eef6 100644
--- a/src/client/util/SnappingManager.ts
+++ b/src/client/util/SnappingManager.ts
@@ -3,6 +3,8 @@ import { Doc } from '../../fields/Doc';
export namespace SnappingManager {
class Manager {
+ @observable ShiftKey = false;
+ @observable CtrlKey = false;
@observable IsDragging: boolean = false;
@observable IsResizing: Doc | undefined;
@observable CanEmbed: boolean = false;
@@ -33,6 +35,12 @@ export namespace SnappingManager {
return manager.vertSnapLines;
}
+ export function SetShiftKey(down: boolean) {
+ runInAction(() => (manager.ShiftKey = down));
+ }
+ export function SetCtrlKey(down: boolean) {
+ runInAction(() => (manager.CtrlKey = down));
+ }
export function SetIsDragging(dragging: boolean) {
runInAction(() => (manager.IsDragging = dragging));
}
@@ -42,6 +50,12 @@ export namespace SnappingManager {
export function SetCanEmbed(canEmbed: boolean) {
runInAction(() => (manager.CanEmbed = canEmbed));
}
+ export function GetShiftKey() {
+ return manager.ShiftKey;
+ }
+ export function GetCtrlKey() {
+ return manager.CtrlKey;
+ }
export function GetIsDragging() {
return manager.IsDragging;
}