diff --git a/android-client/web/app.html b/android-client/web/app.html
index 92e2730..c1018b8 100644
--- a/android-client/web/app.html
+++ b/android-client/web/app.html
@@ -613,6 +613,13 @@ var PM = {
setDebug: function (on) {
document.getElementById('btnWriteTest').hidden = !on;
},
+ /// Sort du mode edition sans rien demander a Delphi. Sert aux refus
+ /// immediats : l'editeur y restait ouvert, boutons desactives, et Cancel
+ /// lui-meme ne repondait plus.
+ editDone: function () {
+ if (lastDetail) renderDetail(lastDetail);
+ },
+
showUnlock: function () {
document.body.classList.remove('on-list', 'on-detail', 'searching');
view = 'unlock';
diff --git a/mainApk.pas b/mainApk.pas
index 9ee6fb5..ddb1aba 100644
--- a/mainApk.pas
+++ b/mainApk.pas
@@ -557,15 +557,25 @@ procedure TForm8.SaveEntryPassword(const ANewValue: string);
var
LUuid, LTitle: string;
begin
- if FBusy then Exit;
+ // CHAQUE REFUS REND LA MAIN A LA PAGE. Ces gardes se contentaient d'un
+ // message : l'editeur restait ouvert avec ses boutons desactives, donc
+ // Cancel lui-meme ne repondait plus - un cul-de-sac dont rien ne sortait.
+ if FBusy then
+ begin
+ WebCall('PM.toast("Busy - wait for the current operation")');
+ WebCall('PM.editDone()');
+ Exit;
+ end;
if FCurrent.Uuid = '' then
begin
WebCall('PM.toast("This entry has no uuid - cannot be updated")');
+ WebCall('PM.editDone()');
Exit;
end;
if FSyncPwd = '' then
begin
WebCall('PM.toast("Sync password missing - open the vault first")');
+ WebCall('PM.editDone()');
Exit;
end;
LUuid := FCurrent.Uuid;