Changeset e22230e in Klonkt


Ignore:
Timestamp:
06/19/2026 12:38:30 PM (3 months ago)
Author:
roboburr <roboburr@…>
Branches:
main
Children:
de21a3b
Parents:
f3f43df
Message:

fix(editor): remove 350ms scroll guard + always type fullscreen on touch

  • keepScroll: removed the 350ms scroll trap (itself caused a visible jump); now only sync + 1 frame restore, and nothing at all in fullscreen (page is locked there → field may scroll to caret).
  • Auto-fullscreen on touch now also on beforeinput + pointerup (not just focus), so you can't accidentally type without fullscreen after leaving it.

Co-Authored-By: Claude <noreply@…>

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/views/pages/post-edit.ejs

    rf3f43df re22230e  
    10961096  }
    10971097  function keepScroll(fn) {
     1098    // In fullscreen staat de pagina vast (body overflow:hidden) en mag het veld
     1099    // gewoon naar de caret scrollen — geen pagina-sprong mogelijk, dus niets fixen.
     1100    const frame = document.querySelector('.pe-editor-frame');
     1101    if (frame && frame.classList.contains('pe-fs')) { fn(); return; }
    10981102    const wx = window.scrollX, wy = window.scrollY;
    10991103    const anc = scrollableAncestors(editor).map(function (n) { return [n, n.scrollTop, n.scrollLeft]; });
     
    11041108    fn();
    11051109    restore();
    1106     // Mobiel Chrome scrollt de caret ASYNCHROON in beeld (ná meerdere frames), ook
    1107     // bij een lege caret. Vang élke scroll de eerstvolgende ~350 ms af en zet 'm
    1108     // terug; daarna mag de gebruiker weer vrij scrollen.
    1109     const onScroll = function () { restore(); };
    1110     window.addEventListener('scroll', onScroll, true);
    1111     setTimeout(function () { window.removeEventListener('scroll', onScroll, true); }, 350);
     1110    requestAnimationFrame(restore);
    11121111  }
    11131112  function execCmd(cmd, arg) {
     
    12591258
    12601259  // Op mobiel/tablet (touch-apparaat = pointer:coarse) gebeurt typen ALTIJD
    1261   // fullscreen: zodra het schrijfveld focus krijgt, gaan we automatisch fullscreen.
    1262   // Eruit kan met de knop (⤡) of Escape; tik je weer in het veld → opnieuw fullscreen.
     1260  // fullscreen. We gaan fullscreen zowel bij focus ALS bij de eerste invoer
     1261  // (beforeinput) — zo kun je ook na het verlaten van fullscreen niet per ongeluk
     1262  // zonder fullscreen doortypen. Eruit kan met de knop (⤡) of Escape.
    12631263  var isTouch = window.matchMedia && window.matchMedia('(pointer: coarse)').matches;
    12641264  if (isTouch) {
    1265     editor.addEventListener('focus', function () {
     1265    var enterFs = function () {
    12661266      if (editorFrame && !editorFrame.classList.contains('pe-fs')) toggleFullscreen();
    1267     });
     1267    };
     1268    editor.addEventListener('focus', enterFs);
     1269    editor.addEventListener('beforeinput', enterFs);
     1270    editor.addEventListener('pointerup', enterFs);
    12681271  }
    12691272
Note: See TracChangeset for help on using the changeset viewer.