diff --git a/android-client/web/app.html b/android-client/web/app.html
index 4131559..ef6398e 100644
--- a/android-client/web/app.html
+++ b/android-client/web/app.html
@@ -790,6 +790,26 @@ document.addEventListener('mousedown', function (ev) {
if (a && (a.tagName === 'INPUT' || a.tagName === 'TEXTAREA')) ev.preventDefault();
}, true);
+// ET ON LE REND UNE FOIS LE CLIC PASSE.
+//
+// Garder le focus au mousedown fait atteindre la cible du premier coup, mais
+// laisse le clavier ouvert : apres "Open vault" il restait dresse par-dessus la
+// liste. Les deux moities vont ensemble - on retient le focus le temps de
+// l'appui, on le lache des que l'action est partie.
+//
+// SAUF SI LE BOUTON AGIT SUR LE CHAMP LUI-MEME : un oeil qui devoile, une
+// fleche qui deroule. Ceux-la vivent dans la meme rangee que le champ, et
+// replier le clavier apres eux obligerait a le rouvrir pour continuer a taper.
+document.addEventListener('click', function (ev) {
+ var b = ev.target.closest('button');
+ if (!b) return;
+ var a = document.activeElement;
+ if (!a || (a.tagName !== 'INPUT' && a.tagName !== 'TEXTAREA')) return;
+ var row = a.closest('.in-wrap, .field');
+ if (row && row.contains(b)) return;
+ a.blur();
+});
+
function esc(s) {
return String(s == null ? '' : s).replace(/[&<>"]/g, function (c) {
return { '&': '&', '<': '<', '>': '>', '"': '"' }[c];