Triggerstring tips dissapear after some time
mslonik opened this issue · comments
No idea why and when it happens 🙁. Only some hipothesis which require code clean-up.
There must be something wrong with the algorithm:
- It's not possible to display shorter ListBoxes (Control) each time user enters new characters of triggerstring.
- As a consequence each time user enters new character, the new GUI is created (old is distroyed). This could on a long run cause some issues.
H1: Check GUI creation / destroy process, catch errors (if possible).
3. Each time new GUI is created, new set of dynamic hotkeys are created.
4. As a consequence plenty new dynamic hotkeys are created. Each time GUI is destroyed they are not.
On 2022-02-20: reworked code. No way to catch errors from GUI creation.
H2: Change that algorithm. Created hotkeys per class (AutoHotkey GUI) instead of just specific GUI.
Checked on 2022-02-20. Class or GUI Hwnd, it's not relevant.
H3: Check as many operations in F_OneChar as possible. Log as many as possible.
H4: Create automatic tester: SendLevel, InputLevel.
2022-02-20: partly done (experiment is successful). Quite tedieous task to finish it.
H5: Tooltips cause dead of thread. Switch off tooltips and give it a try.
Switched off tooltips on 2022-02-20.
No. This is not the case. Statement based on Log.
H6: Change CoordMode.
CoordMode changed to Screen on 2022-02-20.
Didn't help. Statement based on Log.
H7: Sound of tooltips or any other sound.
Switched off on 2022-02-21.
No, this is not thecase. Statement based on Log.
H8: Move ~Backspace processing from Hotkey section to InputHook section.
Accomplished on 2022-02-21.
It didn't help. Statement based on Log.
H9: Add Critical statement for InputHook function used to process Backspace events.
Accomplished on 2022-02-22.
It didn't help. Statement based on Log.
H10: Restart InputHook upon each hostring issue.
Fixed in 70ca645
The core of a problem: if size of InputHook buffer is not explicite declared, its size is limited to 1037 characters (or close to this limit). So the buffer overrun have to handled properly. Other option: to apply L0. This is what I did.