diff --git a/application.tsx b/application.tsx index e2ea352..077291f 100644 --- a/application.tsx +++ b/application.tsx @@ -37,6 +37,7 @@ interface ApplicationState { sortedFlamechart: Flamechart | null sortedFlamechartRenderer: FlamechartRenderer | null sortOrder: SortOrder + dragActive: boolean loading: boolean error: boolean } @@ -230,6 +231,7 @@ export class Application extends ReloadableComponent<{}, ApplicationState> { // Start out at a loading state if we know that we'll immediately be fetching a profile to // view. loading: this.hashParams.profileURL != null, + dragActive: false, error: false, profile: null, flamechart: null, @@ -366,6 +368,7 @@ export class Application extends ReloadableComponent<{}, ApplicationState> { } onDrop = (ev: DragEvent) => { + this.setState({dragActive: false}) ev.preventDefault() const firstItem = ev.dataTransfer.items[0] @@ -387,6 +390,12 @@ export class Application extends ReloadableComponent<{}, ApplicationState> { } onDragOver = (ev: DragEvent) => { + this.setState({dragActive: true}) + ev.preventDefault() + } + + onDragLeave = (ev: DragEvent) => { + this.setState({dragActive: false}) ev.preventDefault() } @@ -544,29 +553,38 @@ export class Application extends ReloadableComponent<{}, ApplicationState> { sortOrder, loading, error, + dragActive, } = this.state const flamechartToView = sortOrder == SortOrder.CHRONO ? flamechart : sortedFlamechart const flamechartRendererToUse = sortOrder == SortOrder.CHRONO ? flamechartRenderer : sortedFlamechartRenderer return ( -