Commit Graph

6 Commits

Author SHA1 Message Date
OlegTheSnowman
f7477dc4c3 Remove jump-to-end-on-focus entirely
Two debounce attempts (recent-append recency, then sustained-unfocus
streak) both failed to stop it firing on almost every incoming line
while the toggle was on. Rather than keep chasing GetFocus() polling
noise, removed the whole feature: poll_output_focus, jump_notepad_to_end,
toggle_jump_to_end, the Ctrl+Alt+J accelerator/alias, the polling timer,
the jump_to_end_on_focus variable, and the now-unused GetFocus/
EM_SCROLLCARET Alien bindings. SmartAppendToNotepad (the actual smart-
scroll fix, unrelated to this and confirmed working) is untouched.
Updated the readme to drop the Ctrl+Alt+J entry.
2026-07-11 00:42:54 +03:00
OlegTheSnowman
466be8a544 Fix jump-to-end firing on every line: debounce sustained unfocus, not recency
Debug logging disproved the previous "recent append perturbs GetFocus"
theory - one spurious jump fired 7.67s after the last append. The real
pattern: GetFocus() reports "not focused" for a single poll tick now
and then even while the user never left the window, and that lone blip
was enough for the very next tick to be read as "just switched to the
window," triggering a jump on practically every incoming line.

Now requires 3 consecutive unfocused poll ticks (~0.6s) before the next
focused tick counts as a genuine switch, filtering out single-tick
noise from MUSHclient's own UI thread. Removed the now-unused
last_append_clock tracking from the previous (wrong) fix attempt.
2026-07-11 00:39:44 +03:00
OlegTheSnowman
b95f743bb2 Debounce jump-to-end against append-induced focus perturbation
The tostring() comparison fix wasn't sufficient - jump-to-end was still
firing on nearly every incoming line while jump-to-end-on-focus was on.
AppendToNotepad's own SetSel/ReplaceSel appears to momentarily perturb
GetFocus() around each append, which poll_output_focus was reading as a
genuine "just switched to the window" edge. Now skips the jump if a
SmartAppendToNotepad call happened within the last 0.5s.
2026-07-11 00:33:41 +03:00
OlegTheSnowman
450fdf0fe2 Fix Accelerator function-call bindings and jump-to-end false triggers
Accelerator(key, text) always sends text as a literal typed command -
it only calls a Lua function if a matching <alias> routes it there
(the pattern GagManager already used correctly). Several bindings
added this session skipped that step and were silently sending
gibberish to the MUD instead of running: Ctrl+S (save_state_func) in
CosmicRage.xml, Ctrl+Alt+J (toggle_jump_to_end) in output_functions.xml,
and Alt+Enter (toggle_numpad) in NumpadMovement.xml. Added the missing
aliases for all three.

Separately, poll_output_focus's jump-to-end was firing repeatedly even
while focus never changed: it compared Alien pointer returns with
"==", which is unreliable for Alien's userdata-wrapped pointers (two
separate calls returning the same real HWND don't reliably compare
equal). Switched to comparing tostring() output instead, which is
address-based. Debug log confirmed SmartAppendToNotepad's own
restore logic was correct throughout - this poll was the sole cause
of the "jumps to end when new text arrives" complaint.
2026-07-11 00:28:07 +03:00
OlegTheSnowman
09785a9080 Fix accessible output window, revert Tab/Ctrl+Space, sync readme keys
- output_functions.xml: merge NotepadSmartScroll's Win32/Alien-based
  smart-scroll logic in directly (was a separate plugin). Fixed the
  caret-restore bug: gating the restore on scroll position was wrong
  since the notepad tracks near the bottom during normal reading; now
  gated on whether the caret was literally at the end of the old text.
  Added a jump-to-end-on-focus toggle (Ctrl+Alt+J) with a 0.2s polling
  timer to catch focus landing on the output notepad by any means.
- Reverted the Tab/Ctrl+Space rebinding - removed switch_to_output and
  trigger_word_completion along with their accelerators.
- cosmic rage.MCL: dropped the dangling NotepadSmartScroll.xml include
  (file no longer exists, was reintroduced by an auto-save).
- readme.md: documented the actual current CosmicRage.xml keys (several
  had drifted out of sync - Alt+F12 is now stop-sounds not restart,
  Alt+Delete/Ctrl+S/Ctrl+F1-3/Alt+F3/Alt+Shift+H/F11 were undocumented)
  and added the output_functions.xml accessible-output keybindings,
  which weren't documented at all before.
2026-07-11 00:02:28 +03:00
Draqoken
e888d9dfb9 initial release 2025-07-01 23:28:00 +03:00