diff --git a/lib/ac-api/src/main/java/com/webcodepro/applecommander/storage/physical/ByteArrayImageLayout.java b/lib/ac-api/src/main/java/com/webcodepro/applecommander/storage/physical/ByteArrayImageLayout.java index cdc7898..6ff48df 100644 --- a/lib/ac-api/src/main/java/com/webcodepro/applecommander/storage/physical/ByteArrayImageLayout.java +++ b/lib/ac-api/src/main/java/com/webcodepro/applecommander/storage/physical/ByteArrayImageLayout.java @@ -41,6 +41,7 @@ public class ByteArrayImageLayout { */ public ByteArrayImageLayout(byte[] diskImage) { setDiskImage(diskImage); + changed = false; // setDiskImage by default sets to true but we don't want that } /** diff --git a/lib/ac-swt-common/src/main/java/com/webcodepro/applecommander/ui/swt/DiskWindow.java b/lib/ac-swt-common/src/main/java/com/webcodepro/applecommander/ui/swt/DiskWindow.java index 2af894a..9f1fb89 100644 --- a/lib/ac-swt-common/src/main/java/com/webcodepro/applecommander/ui/swt/DiskWindow.java +++ b/lib/ac-swt-common/src/main/java/com/webcodepro/applecommander/ui/swt/DiskWindow.java @@ -19,6 +19,7 @@ */ package com.webcodepro.applecommander.ui.swt; +import com.webcodepro.applecommander.ui.swt.util.SwtUtil; import org.eclipse.swt.SWT; import org.eclipse.swt.custom.CTabFolder; import org.eclipse.swt.events.DisposeEvent; @@ -74,6 +75,13 @@ public class DiskWindow { dispose(event); } }); + shell.addListener(SWT.Close, (event) -> { + if (disks[0].hasChanged()) { + int button = SwtUtil.showYesNoDialog(shell, "Are you sure?", + "The disk has been modified. Are you certain you want to quit?"); + event.doit = button == SWT.YES; + } + }); CTabFolder tabFolder = new CTabFolder(shell, SWT.BOTTOM); new DiskExplorerTab(tabFolder, disks, imageManager, this);