diff --git a/src/vs/workbench/browser/parts/editor/media/sidebyside.css b/src/vs/workbench/browser/parts/editor/media/sidebyside.css index 5a018fd4084..a5364281c05 100644 --- a/src/vs/workbench/browser/parts/editor/media/sidebyside.css +++ b/src/vs/workbench/browser/parts/editor/media/sidebyside.css @@ -11,6 +11,19 @@ background-color: #252526; } +.vs .monaco-workbench .editor > .content.dropfeedback { + background-color: #DDECFF; +} + +.vs-dark .monaco-workbench .editor > .content.dropfeedback { + background-color: #383B3D; +} + +.hc-black .monaco-workbench .editor > .content.dropfeedback { + background: none !important; + border: 2px dashed #f38518; +} + .vs .monaco-workbench .editor > .content.dragged { border-left: 1px solid #E7E7E7; border-right: 1px solid #E7E7E7; diff --git a/src/vs/workbench/browser/parts/editor/sideBySideEditorControl.ts b/src/vs/workbench/browser/parts/editor/sideBySideEditorControl.ts index 9b751e1daa2..23866339f12 100644 --- a/src/vs/workbench/browser/parts/editor/sideBySideEditorControl.ts +++ b/src/vs/workbench/browser/parts/editor/sideBySideEditorControl.ts @@ -760,15 +760,31 @@ export class SideBySideEditorControl implements ISideBySideEditorControl, IVerti private enableDropTarget(node: HTMLElement): void { // Let a dropped file open inside Code (only if dropped over editor area) - node.addEventListener(DOM.EventType.DROP, (e: DragEvent) => { + this.toDispose.push(DOM.addDisposableListener(node, DOM.EventType.DROP, (e: DragEvent) => { DOM.EventHelper.stop(e); + DOM.removeClass(node, 'dropfeedback'); const droppedResources = extractResources(e).filter(r => r.scheme === 'file' || r.scheme === 'untitled'); if (droppedResources.length) { window.focus(); // make sure this window has focus so that the open call reaches the right window! this.openFromDrop(droppedResources, e.toElement).done(null, errors.onUnexpectedError); } - }); + })); + + // Drag over + this.toDispose.push(DOM.addDisposableListener(node, DOM.EventType.DRAG_OVER, (e: DragEvent) => { + DOM.addClass(node, 'dropfeedback'); + })); + + // Drag leave + this.toDispose.push(DOM.addDisposableListener(node, DOM.EventType.DRAG_LEAVE, (e: DragEvent) => { + DOM.removeClass(node, 'dropfeedback'); + })); + + // Drag end + this.toDispose.push(DOM.addDisposableListener(node, DOM.EventType.DRAG_END, (e: DragEvent) => { + DOM.removeClass(node, 'dropfeedback'); + })); } private openFromDrop(resources: URI[], target: HTMLElement): TPromise { diff --git a/src/vs/workbench/browser/workbench.ts b/src/vs/workbench/browser/workbench.ts index fd4259566f4..ec7e2128491 100644 --- a/src/vs/workbench/browser/workbench.ts +++ b/src/vs/workbench/browser/workbench.ts @@ -676,10 +676,11 @@ export class Workbench implements IPartService { // We update the editorpart class to indicate if an editor is opened or not // through a delay to accomodate for fast editor switching + const editorContainer = this.editorPart.getContainer(); if (visibleEditors === 0) { - this.editorBackgroundDelayer.trigger(() => this.editorPart.getContainer().addClass('empty')); + this.editorBackgroundDelayer.trigger(() => editorContainer.addClass('empty')); } else { - this.editorBackgroundDelayer.trigger(() => this.editorPart.getContainer().removeClass('empty')); + this.editorBackgroundDelayer.trigger(() => editorContainer.removeClass('empty')); } }