Instead of hiding the chat window immediately when the game enters a
"cutscene" condition, wait until the vanilla chat would've been hidden.
This prevents hiding and unhiding during auto-skipped cutscenes.
- Avoids overriding modifiers after leaving a vanilla text box. This
would prevent you from holding e.g. Ctrl between multiple vanilla text
boxes.
- Reworks linkshell rotation code to fix issues with LS number gaps
causing linkshell rotation to not function.
- Adds new setting "Enable inactivity hide during battle" (default:
true) which determines whether autohide should apply during battle
(thanks @aurieh)
- Adds new setting "Chat channels considered for activity" which allows
customizing which channels incoming messages must match to "bump" the
inactivity timer
- Adds new per-tab setting "Unhide the chat window on activity" to
configure whether it will be considered for "bumping" the inactivity
timer when receiving messages that match the new channel filter. Note
that the foreground tab is currently always considered.
- Extends autohide code to apply to poped-out tabs as well. Each popout
window has its own inactivity timer, but focusing the main window will
restore all popped out windows.
Co-authored-by: Auri <me@aurieh.me>
Prevents switching channels to a non-existent linkshell index (for both
regular linkshells and cross-world linkshells). ExtraChat linkshells are
already validated separately.
Prevents ChatLogWindow Draw failures from causing ChatTwo to grab input
focus each frame if the exception occurs during an Activate event.
Adds two configurable hotkeys (plus the required code infrastructure to
handle configurable hotkeys) for cycling the active chat tab forward by
one and backwards by one.
After not receiving a message for X seconds (configurable) in the
current tab or any tab with unread mode enabled, the chat will be
hidden. Focus can be returned with return or slash as usual.
Having input focus or hovering the mouse over the chat window "bumps"
it every frame.
Also fixes a bug that prevented focus from being restored to tabs with
input disabled. The chat window will be brought back but the activated
event won't be fully processed.
Co-authored-by: Auri <me@aurieh.me>