mirror of
https://github.com/sparrowwallet/sparrow.git
synced 2024-12-24 12:46:45 +00:00
make search wallet dialog non-modal, close any non-modal dialogs on application closing
This commit is contained in:
parent
fe7dba6d83
commit
d3752a856b
2 changed files with 37 additions and 9 deletions
|
@ -219,6 +219,8 @@ public class AppController implements Initializable {
|
|||
|
||||
private Timeline statusTimeline;
|
||||
|
||||
private SearchWalletDialog searchWalletDialog;
|
||||
|
||||
private SendToManyDialog sendToManyDialog;
|
||||
|
||||
private DownloadVerifierDialog downloadVerifierDialog;
|
||||
|
@ -280,6 +282,15 @@ public class AppController implements Initializable {
|
|||
void initializeView() {
|
||||
setPlatformApplicationMenu();
|
||||
|
||||
rootStack.getScene().getWindow().setOnHiding(windowEvent -> {
|
||||
if(searchWalletDialog != null && searchWalletDialog.isShowing()) {
|
||||
searchWalletDialog.close();
|
||||
}
|
||||
if(sendToManyDialog != null && sendToManyDialog.isShowing()) {
|
||||
sendToManyDialog.close();
|
||||
}
|
||||
});
|
||||
|
||||
rootStack.setOnDragOver(event -> {
|
||||
if(event.getGestureSource() != rootStack && event.getDragboard().hasFiles()) {
|
||||
event.acceptTransferModes(TransferMode.LINK);
|
||||
|
@ -1419,7 +1430,6 @@ public class AppController implements Initializable {
|
|||
}
|
||||
|
||||
sendToManyDialog = new SendToManyDialog(bitcoinUnit);
|
||||
sendToManyDialog.initOwner(rootStack.getScene().getWindow());
|
||||
sendToManyDialog.initModality(Modality.NONE);
|
||||
Optional<List<Payment>> optPayments = sendToManyDialog.showAndWait();
|
||||
sendToManyDialog = null;
|
||||
|
@ -1605,14 +1615,28 @@ public class AppController implements Initializable {
|
|||
}
|
||||
|
||||
private void searchWallets(List<WalletForm> walletForms) {
|
||||
SearchWalletDialog searchWalletDialog = new SearchWalletDialog(walletForms);
|
||||
searchWalletDialog.initOwner(rootStack.getScene().getWindow());
|
||||
Optional<Entry> optEntry = searchWalletDialog.showAndWait();
|
||||
if(optEntry.isPresent()) {
|
||||
Entry entry = optEntry.get();
|
||||
EventManager.get().post(new FunctionActionEvent(entry.getWalletFunction(), entry.getWallet()));
|
||||
Platform.runLater(() -> EventManager.get().post(new SelectEntryEvent(entry)));
|
||||
if(searchWalletDialog != null) {
|
||||
if(!searchWalletDialog.getWalletForms().equals(walletForms)) {
|
||||
searchWalletDialog.close();
|
||||
} else {
|
||||
Stage stage = (Stage)searchWalletDialog.getDialogPane().getScene().getWindow();
|
||||
stage.setAlwaysOnTop(true);
|
||||
stage.setAlwaysOnTop(false);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
Platform.runLater(() -> {
|
||||
searchWalletDialog = new SearchWalletDialog(walletForms);
|
||||
searchWalletDialog.initModality(Modality.NONE);
|
||||
Optional<Entry> optEntry = searchWalletDialog.showAndWait();
|
||||
if(optEntry.isPresent()) {
|
||||
Entry entry = optEntry.get();
|
||||
EventManager.get().post(new FunctionActionEvent(entry.getWalletFunction(), entry.getWallet()));
|
||||
Platform.runLater(() -> EventManager.get().post(new SelectEntryEvent(entry)));
|
||||
}
|
||||
searchWalletDialog = null;
|
||||
});
|
||||
}
|
||||
|
||||
public void showAllWalletsSummary(ActionEvent event) {
|
||||
|
|
|
@ -156,6 +156,10 @@ public class SearchWalletDialog extends Dialog<Entry> {
|
|||
Platform.runLater(search::requestFocus);
|
||||
}
|
||||
|
||||
public List<WalletForm> getWalletForms() {
|
||||
return walletForms;
|
||||
}
|
||||
|
||||
private void searchWallets(String searchPhrase) {
|
||||
Set<Entry> matchingEntries = new LinkedHashSet<>();
|
||||
|
||||
|
@ -276,7 +280,7 @@ public class SearchWalletDialog extends Dialog<Entry> {
|
|||
return false;
|
||||
}
|
||||
|
||||
public String removeOccurrences(String inputString, Collection<String> stringsToRemove) {
|
||||
private String removeOccurrences(String inputString, Collection<String> stringsToRemove) {
|
||||
for(String str : stringsToRemove) {
|
||||
inputString = inputString.replaceAll("(?i)" + str, "");
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue