This is a bad place to display a huge error because it is a repeating
query. And also this is the first thing people see when opening the app
for the first time and it is a bad impression.
By Linux convention for GUI software, Ctrl+Q is quit.
By general chat app convention, Ctrl+K is filter.
Some keybindings have been changed to make space for these:
Reply is now Ctrl+R
Remove is now Ctrl+Shift+R
"Previous message" is now Ctrl+I
I did not want to alter the defaults more than this.
But ideally, you would want "Previous message" and "Next message"
adjacent, so it makes sense to swap Ctrl+U and Ctrl+J as well.
Moment has different default directories and is controlled by
different environment variables. On first startup, Moment
detects Mirage directories and offers to copy them.
It doesn't make sense to migrate logins without migrating encryption
keys, so this is now included in migration. Themes are migrated as well.
Only offer migration is only if both config and data directory are able to be
migrated.
By default, TapHandler is used for all input types. GlobalTapHandlers
was blocking finger touch events from reaching the underlying elements,
breaking the app for mobile devices with a touch screen.
Sending screenshots of error popups is an easy way to leak information.
But if the popup is transparent, that makes it so much easier.
For the sake of privacy, error popups should be opaque.
I just spent half an hour debugging why some setting didn't work for me.
It was because I was putting it in Chat instead of Keys.Chat. This is
very confusing when you're making your own partial config override file.
I've added comments to the classes with identical names to hopefully
make this less confusing.
* Key to jump to latest/oldest unread #186
Latest/oldest unread/highlight.
Default bindings match the bindings for previous/next unread/highlight.
Allows the user to read messages in the order of receiving them.
Or the opposite order, to stay on top of things.
* Clean up code
Use let instead of var, and proper indentation
* Fix case for some variables in RoomList.qml
Some variables were using snake_case instead of camelCase like usually
done in QML code (note that the model items come from python)
Co-authored-by: miruka <miruka@disroot.org>
People modify animationDuration because they want a snappy client.
But it also affects a few things that do not contribute to that
and should remain constant speed:
- Busy indicator
- Progress bar animation
- Ping indicator in AddAccount ServerBrowser
- Image rotation button cooldown
When we are invisible and restart the client, set ourself to invisible,
not offline, and correctly keep the status message that should be set
whenever we get back to a visible online.
- Up to 5 previously set status are now shown under the field
for quick access; the history is shared between accounts
- When focusing the field, the text gets auto-selected since most of the
time we want to set a totally different status, not edit the current one
- Typing in the field will autosuggest any matching history entry
- Keyboard focus now skips the "apply" button, since we can just hit
enter in the field