From 1da2dfc349100a04f1f0b0f3471e6aa0475d125e Mon Sep 17 00:00:00 2001 From: Akos Kitta Date: Wed, 24 Aug 2022 16:36:54 +0200 Subject: [PATCH] No save dialog prompt if closing untouched sketch. Signed-off-by: Akos Kitta --- .../src/browser/contributions/close.ts | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/arduino-ide-extension/src/browser/contributions/close.ts b/arduino-ide-extension/src/browser/contributions/close.ts index b13ddfda..92026a38 100644 --- a/arduino-ide-extension/src/browser/contributions/close.ts +++ b/arduino-ide-extension/src/browser/contributions/close.ts @@ -8,6 +8,7 @@ import { CommandRegistry, MenuModelRegistry, KeybindingRegistry, + Sketch, URI, } from './contribution'; import { nls } from '@theia/core/lib/common'; @@ -47,12 +48,12 @@ export class Close extends SketchContribution { return { reason: 'temp-sketch', action: () => { - return this.showTempSketchDialog(); + return this.showSaveTempSketchDialog(); }, }; } - private async showTempSketchDialog(): Promise { + private async showSaveTempSketchDialog(): Promise { const sketch = await this.sketchServiceClient.currentSketch(); if (!CurrentSketch.isValid(sketch)) { return true; @@ -61,6 +62,15 @@ export class Close extends SketchContribution { if (!isTemp) { return true; } + + // If non of the sketch files were ever touched, do not prompt the save dialog. (#1274) + const wereTouched = await Promise.all( + Sketch.uris(sketch).map((uri) => this.wasTouched(uri)) + ); + if (wereTouched.every((wasTouched) => !Boolean(wasTouched))) { + return true; + } + const messageBoxResult = await remote.dialog.showMessageBox( remote.getCurrentWindow(), {