aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorbob <bcz@cs.brown.edu>2019-02-19 16:35:39 -0500
committerbob <bcz@cs.brown.edu>2019-02-19 16:35:39 -0500
commit735a70382c6f17060aa06fe08640924cba7f52a9 (patch)
tree5286a0ad7d21754aeab8000449ac61fbd010497d /src
parentb3c5cbe54eee7d234c2c3924ad018b95efd72243 (diff)
fixed Dock View to avoid locking state
Diffstat (limited to 'src')
-rw-r--r--src/client/views/collections/CollectionDockingView.tsx23
1 files changed, 10 insertions, 13 deletions
diff --git a/src/client/views/collections/CollectionDockingView.tsx b/src/client/views/collections/CollectionDockingView.tsx
index abba0a6ae..9c396e412 100644
--- a/src/client/views/collections/CollectionDockingView.tsx
+++ b/src/client/views/collections/CollectionDockingView.tsx
@@ -43,8 +43,7 @@ export class CollectionDockingView extends CollectionViewBase {
private _containerRef = React.createRef<HTMLDivElement>();
private _makeFullScreen: boolean = false;
private _maximizedStack: any = null;
- private _pointerIsDown = false; // used to defer updating the document's layout state Data
- private _deferredLayoutChange = ""; // the last deferred state change made that needs to be flushed on pointer up
+ private _forceRecreate: boolean = false;
constructor(props: CollectionViewProps) {
super(props);
@@ -99,6 +98,7 @@ export class CollectionDockingView extends CollectionViewBase {
if (this._goldenLayout.root.contentItems[0].isRow) {
this._goldenLayout.root.contentItems[0].addChild(newContentItem);
+ collayout.callDownwards('setSize');
}
else {
var collayout = this._goldenLayout.root.contentItems[0];
@@ -112,6 +112,7 @@ export class CollectionDockingView extends CollectionViewBase {
newContentItem.config["width"] = 50;
collayout.parent.callDownwards('setSize');
}
+ this._forceRecreate = true;
}
setupGoldenLayout() {
@@ -120,9 +121,12 @@ export class CollectionDockingView extends CollectionViewBase {
if (!this._goldenLayout)
this._goldenLayout = new GoldenLayout(JSON.parse(config));
else {
+ if (!this._forceRecreate && JSON.stringify(this._goldenLayout.toConfig()) == JSON.stringify(JSON.parse(config)))
+ return;
this._goldenLayout.destroy();
this._goldenLayout = new GoldenLayout(JSON.parse(config));
}
+ this._forceRecreate = false;
this._goldenLayout.on('tabCreated', this.tabCreated);
this._goldenLayout.on('stackCreated', this.stackCreated);
this._goldenLayout.registerComponent('DocumentFrameRenderer', DockedFrameRenderer);
@@ -152,14 +156,7 @@ export class CollectionDockingView extends CollectionViewBase {
}
@action
- onPointerUp = (e: PointerEvent): void => {
- window.removeEventListener("pointerup", this.onPointerUp)
- this._pointerIsDown = false;
- }
- @action
onPointerDown = (e: React.PointerEvent): void => {
- window.addEventListener("pointerup", this.onPointerUp)
- this._pointerIsDown = true;
if (e.button === 2 && this.active) {
e.stopPropagation();
e.preventDefault();
@@ -171,10 +168,10 @@ export class CollectionDockingView extends CollectionViewBase {
}
stateChanged = () => {
- if (!this._pointerIsDown) {
- var json = JSON.stringify(this._goldenLayout.toConfig());
- this.props.Document.SetText(KeyStore.Data, json)
- }
+ // if (!this._pointerIsDown) {
+ var json = JSON.stringify(this._goldenLayout.toConfig());
+ this.props.Document.SetText(KeyStore.Data, json)
+ //}
}
tabCreated = (tab: any) => {