aboutsummaryrefslogtreecommitdiff
path: root/src/client/util/SelectionManager.ts
diff options
context:
space:
mode:
authoranika-ahluwalia <anika.ahluwalia@gmail.com>2020-07-23 11:08:54 -0500
committeranika-ahluwalia <anika.ahluwalia@gmail.com>2020-07-23 11:08:54 -0500
commit831fbc76ec1c6e9829da547cdef791ac087677d9 (patch)
treeecb041fa6c0468bf75310f922396a93e235a15b0 /src/client/util/SelectionManager.ts
parent66bcfb6364ca5d8b4a0fd26139966ea9d6c12f87 (diff)
moved right panel into mainview
Diffstat (limited to 'src/client/util/SelectionManager.ts')
-rw-r--r--src/client/util/SelectionManager.ts24
1 files changed, 24 insertions, 0 deletions
diff --git a/src/client/util/SelectionManager.ts b/src/client/util/SelectionManager.ts
index 9a968aeda..6fb758eac 100644
--- a/src/client/util/SelectionManager.ts
+++ b/src/client/util/SelectionManager.ts
@@ -12,9 +12,14 @@ export namespace SelectionManager {
@observable IsDragging: boolean = false;
SelectedDocuments: ObservableMap<DocumentView, boolean> = new ObservableMap();
+
+ @observable public lastSelection: DocumentView | undefined;
+
@action
SelectDoc(docView: DocumentView, ctrlPressed: boolean): void {
+ this.lastSelection = docView;
+
// if doc is not in SelectedDocuments, add it
if (!manager.SelectedDocuments.get(docView)) {
if (!ctrlPressed) {
@@ -33,6 +38,15 @@ export namespace SelectionManager {
}
@action
DeselectDoc(docView: DocumentView): void {
+
+ if (this.lastSelection === docView) {
+ const list = Array.from(manager.SelectedDocuments.keys());
+ if (list.length > 0) {
+ this.lastSelection = list[list.length - 1];
+ } else {
+ this.lastSelection = undefined;
+ }
+ }
if (manager.SelectedDocuments.get(docView)) {
manager.SelectedDocuments.delete(docView);
docView.props.whenActiveChanged(false);
@@ -41,10 +55,16 @@ export namespace SelectionManager {
}
@action
DeselectAll(): void {
+ this.lastSelection = undefined;
Array.from(manager.SelectedDocuments.keys()).map(dv => dv.props.whenActiveChanged(false));
manager.SelectedDocuments.clear();
Doc.UserDoc().activeSelection = new List<Doc>([]);
}
+
+ @action
+ getLast(): DocumentView | undefined {
+ return this.lastSelection;
+ }
}
const manager = new Manager();
@@ -56,6 +76,10 @@ export namespace SelectionManager {
manager.SelectDoc(docView, ctrlPressed);
}
+ export function LastSelection(): DocumentView | undefined {
+ return manager.getLast();
+ }
+
// computed functions, such as used in IsSelected generate errors if they're called outside of a
// reaction context. Specifying the context with 'outsideReaction' allows an efficiency feature
// to avoid unnecessary mobx invalidations when running inside a reaction.