Refreshing Save buttons when files were modified outside application

This commit is contained in:
Jindra Petřík
2024-08-02 20:24:04 +02:00
parent cbcc2dc88a
commit 1db54b6e4c
3 changed files with 31 additions and 5 deletions

View File

@@ -18,7 +18,9 @@ package com.jpexs.decompiler.flash.treeitems;
import com.jpexs.decompiler.flash.Bundle;
import com.jpexs.decompiler.flash.OpenableSourceInfo;
import com.jpexs.decompiler.flash.SWF;
import com.jpexs.decompiler.flash.SWFContainerItem;
import com.jpexs.decompiler.flash.abc.ABC;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
@@ -184,4 +186,17 @@ public class OpenableList implements List<Openable>, SWFContainerItem {
}
return false;
}
public void setModified() {
for (Openable openable : this) {
if (openable instanceof SWF) {
SWF swf = (SWF) openable;
swf.setModified(true);
}
if (openable instanceof ABC) {
ABC abc = (ABC) openable;
abc.getSwf().setModified(true);
}
}
}
}

View File

@@ -16,6 +16,10 @@
*/
package com.jpexs.decompiler.flash.gui;
import com.jpexs.decompiler.flash.SWF;
import com.jpexs.decompiler.flash.abc.ABC;
import com.jpexs.decompiler.flash.treeitems.Openable;
import com.jpexs.decompiler.flash.treeitems.OpenableList;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
@@ -150,8 +154,8 @@ public class FilesChangedDialog extends AppDialog {
filesList.setModel(listModel);
}
private void cancelButtonActionPerformed(ActionEvent evt) {
clearList();
private void cancelButtonActionPerformed(ActionEvent evt) {
clearList();
setVisible(false);
}
}

View File

@@ -2364,12 +2364,19 @@ public class Main {
continue;
}
for (OpenableSourceInfo info : sourceInfos) {
final String infoFile = info.getFile();
if (infoFile != null && new File(infoFile).equals(fullPath)) {
for (OpenableSourceInfo info : sourceInfos) {
final String infoFile = info.getFile();
if (infoFile != null && new File(infoFile).equals(fullPath)) {
for (OpenableList list :Main.getMainFrame().getPanel().getSwfs()) {
if (info == list.sourceInfo) {
list.setModified();
}
}
View.execInEventDispatchLater(new Runnable() {
@Override
public void run() {
mainFrame.getPanel().refreshTree();
if (filesChangedDialog == null) {
filesChangedDialog = new FilesChangedDialog(Main.mainFrame.getWindow());
}