From 79a6625613c75ff39df7a43c598b6ddb4eb6b39a Mon Sep 17 00:00:00 2001 From: r-zakarya <82443831+r-zakarya@users.noreply.github.com> Date: Fri, 21 Aug 2026 15:21:10 +0100 Subject: [PATCH] chore(android): make the page say what it measures about the keyboard Two fixes placed by reasoning changed nothing observable, which means the reasoning was wrong somewhere I cannot see from here. This writes the numbers into the log rather than a fleeting message, so they can be read after the fact: the window height, the visible height, and - the one that settles it - what the scroll box shows against what it contains. Equal, and there is nothing to scroll, which would be the whole problem. Temporary. It comes out once the cause is known. --- android-client/web/app.html | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/android-client/web/app.html b/android-client/web/app.html index 6e1a041..4e7d951 100644 --- a/android-client/web/app.html +++ b/android-client/web/app.html @@ -695,11 +695,38 @@ if (window.visualViewport) { var measureKeyboard = function () { var hidden = Math.max(0, Math.round(window.innerHeight - vv.height)); document.documentElement.style.setProperty('--kb', hidden + 'px'); + reportBox('keyboard'); }; vv.addEventListener('resize', measureKeyboard); measureKeyboard(); +} else { + window._noVisualViewport = true; } +// DIAGNOSTIC, temporaire. Deux corrections posees a l'aveugle n'ont rien +// change ; celle-ci dit ce que la page mesure vraiment, dans le journal plutot +// qu'en message fugace, pour qu'on puisse la lire apres coup. +function reportBox(why) { + // PM n'existe pas encore au chargement : cette fonction tourne aussi avant + // lui, et on ne va pas casser la page pour une trace. + // Les trois vues sont TOUTES dans le document - c'est un rail, rien n'est + // masque - donc la vue active se designe par son nom, pas par sa visibilite. + if (!window.PM || !PM.log) return; + var box = document.getElementById(view); + box = box && box.querySelector('.scroll'); + var vh = window.visualViewport ? Math.round(window.visualViewport.height) : -1; + var sc = document.body.className || '(none)'; + if (!box) { PM.log(why + ': no scroll box, body=' + sc); return; } + // clientHeight = ce que la boite montre, scrollHeight = ce qu'elle contient. + // Egaux, il n'y a rien a faire defiler, et c'est TOUT le probleme. + PM.log(why + ': inner ' + window.innerHeight + ' visual ' + vh + + ' | box client ' + box.clientHeight + ' scroll ' + box.scrollHeight + + ' | body=' + sc); +} +document.addEventListener('focusin', function () { + setTimeout(function () { reportBox('focus'); }, 400); +}); + // AUCUN CHAMP D'UNE VUE AU REPOS NE GARDE LE FOCUS. // // Meme origine que le glissement ci-dessus. La touche de validation du clavier