- Allow using invisible mode on servers not supporting presence, to
make use of the prevention of sending typing notifications and read
marker updates
- For servers not supporting presence, display the account's presence
orb in the left pane with half opacity
- Indicate in the presence orb tooltip when the presence we set hasn't
yet been noticed by the server/the server doesn't support presence
- When reconnecting after being offline, if the server doesn't indicate
we have a status message [set from another client], restore any
previous message we had set in the current client
- Show our status message striked out when we're invisible or offline to
indicate that it isn't being broadcasted
- Some code style cleanups
- Try to handle cases where we set a presence, but receive a new
presence event for our account before the server takes notice of that
new presence we want, which probably resulted in the "account keeps
switching between online and unavailable every few sec" glitch
- Instead of opening a popup for every single error that occurs,
combine them into an unique one
- Increase the maximum width, make those tracebacks readable
Helps users new to Matrix in knowing what to click, as the direct chat
option explicitely creates a 1-to-1 experience, while "create room"
(now "create group") could be also be used as such but asks for more
details and wouldn't mark the room as direct.
The content of the tabs still say "room" as that is the correct general
term for anything that contains one or more user.
Rather than toggling display of the tooltip.
Since the tooltip will show up on hover too, the user might quickly
hover then click on the button only to see the tooltip immediatly
disappear.
Closing the tooltip can still be done by moving the cursor away from the
button, or tapping on it/anywhere else.
When declining an invite, the popup now offers a checkbox to also add
the sender to the account data m.ignored_user_list event.
This will hide any further invite or message from that user in syncs,
and also immediatly remove the ones we currently have.
As a side-effect, the long-time bug that caused forgotten rooms to
immediatly reappear due to received a "<user> left" event has been
fixed.
If there was only one entry (the current page) in the page history,
showPrevious() would just reload that page and not return false like
supposed to when no history movement was done.
When forgetting a room in those circumstances, this would also prevent
the switch to the "secret default page" and just leave the user on a
loading spinner for a room that didn't exist anymore.
Rather than leaving the room as soon as the button is clicked.
This offers the option of also forgetting that room, and will allow
checking a future "ignore inviter" too.
For rooms in the room list, when the last message displayed under the
room name is a reply, change the
"In reply to @foo:example.org: original message... ⏎" text shown
before the actual reply content to just "↩ foo: ".
This lets the user preview the actual interesting part of the message,
instead of a long "In reply to" that takes all the available width.
AddChat and AccountSettings:
- When clicking the cancel button, if there's no previous back to go
back to, focus the main pane instead of doing nothing
AccountSettings:
- Always enable the cancel button, not just when the form has been
modified
AddChat, AccountSettings, ServerBrowser:
- Pressing escape will do the same thing as clicking the cancel button
In "mobile mode" where main pane is hidden due to application's width:
- Show a back button in the tab bar of the AccountSettings and
AddChat pages
- Show a back button in the address field (opposite to the "next
button") of the ServerBrowser, unless there are no accounts added yet
(application first run) and the main pane would be empty
For a message that was a reply to another, and that that started with
a "> ..." quote, the quote wasn't getting highlighted due to regex not
accounting for cases where one is preceded by a </mx-reply> closing tag.
Example, if a room list item subtitle was ">a \n >b", only ">a" was
wrapped with the "quote" class and colored appropriatly due to <a> being
wrapped in a <span> and the regex failing on that
Go to the corresponding account settings instead of trying to focus the
first room of the target account if there is one.
This makes the behavior consistent across expanded and collapsed
accounts, and with the Keys.Account.(previous/next) keybinds that
were changed to work in this way in commit
4f4bc90faa.
Instantiator is better suited to the task: Repeater is specially
made to load visual components, and that forced us to wrap the
HShortcuts inside empty Items.
On startup, there will be one page in the history, not zero.
Disable history navigation in such cases where the current page will
just get selected again.
* Add keys for back and forward through history
Move through history of visited rooms without altering it.
Ctrl+H and Ctrl+Y by default.
Deviating from history while in the middle of it
causes a part of history to be discarded.
* Change default history binding to Ctrl+H and Ctrl+Shift+H
* Rename functions and settings
`earlier_page` and `later_page` is consistent naming with `last_page`
* Add option to wrap history
If you press `later_page` while at index 0 (newest), you loop to the end
of recorded history (oldest). If you press `earlier_page` while at at
the end of history (oldest), you loop back to the top (newest).
This can be disabled.
* Add showNthFromHistory
Grouped duplicated code into a new funcion.
* Minor formatting changes
* Move wrap_history setting from to General section
The Keys section is purely for keybindings; this setting should also be
able to control history navigation not done by keyboard such as extra
mouse button bindings.
* Change default bind for later_page and clear_all
Ctrl+H and Ctrl+L are a more intuitive pair than Ctrl+H and Ctrl+Shift+H.
Meanwhile, clear_all does not need the accessible binding Ctrl+L.
Co-authored-by: miruka <miruka@disroot.org>
* Add keybinding for quit
* Reorder default settings
The related keybindings are now located closer together.
quit is not commented by default, but instead has an empty list.
* No need for braces for a single instruction
e.g. if someone posts a message containing
"https://matrix.to/#/@foo:example.org", that link will be turned into a
properly colored "@foo:example.org".
Add these characters to the regex allowed list for URL /paths:
non-latin word characters, : ! $ * + ^ @
This also fixes the parsing of matrix.to URLs in messages.
If the application was compiled with QRC (i.e. CONFIG+=dev), a theme
setting that wasn't one of the default theme would fail to be read.
Originally commit cf463f24786566c5ec04a6823e9917975ba2b265,
accidentally thrown out before release
Use a throwaway nio client to make ourself an aiohttp session with proxy
support, that way we don't have to depend on aiohttp and aiohttp-socks
libraries
When the currently shown page is the chat of a certain room,
prevent that room from moving around in the left pane due to new
messages/activity or unread/highlight counters change.
When the user switches to another page/room, the previously held lock is
released and that room completes all the moves it would have done if it
wasn't locked.
This makes navigating a room list with lots of activity easier, and
prevent annoyances like clicking on a room with unread messages and
having it immediatly fly down the list (possibly out of scroll view).
This reverts commit 39f159f0a3.
Causes problems when message delegates are reordered, with the
transition animations randomly stopping in the middle and leaving
delegates at odd positions.
Because of course sound isn't just gonna work on linux and
especially flatpak. Make sure to not spawn an error popup every time
we try to play a notification. Maybe use mpv in the future for
SFX playback (when we'll have a media player implemented),
since it has support for all these backends out of the box.
This happened when we got a message from an account-room pair
where the full member list hadn't been loaded yet, i.e. the user had
never focused the room since starting the client
Alt+M: toggle "mute all notifications except highlights"
Alt+Shift+M: toggle "mute all notifications"
The Keys.Rooms.(previous/next)_highlight keybinds, previously bound to
Alt+(Shift+)M (stood for "mention") now defaults to Alt+(Shift+)H.
The NotificationLevel enum and notificationLevel property had to be
moved from Window to UI due to QML having a global "Window" object that
causes conflicts when trying to access the enum as
"Window.NotificationLevel" from UI.qml.