The sibling_id function has a complex if-else, to flatten that
I've split the functionality in three different functions with
one if-else in each one so the code is easier to read.
- Ctrl+PageUp and Ctrl+PageDown to go to the next/previous room of the list
- Ctrl+Shift+PageUp and Ctrl+Shift+PageUp to go to the next/previous room with unread messages
- Ctrl+Home and Ctrl+End to go to the first/last room of the list
- PageUp and PageDown to go up/down in the history
Fixes#49
Previously on both the room list and the message list,
our GtkScrolledWindows would not scroll with our focus.
This meant users that relied on keyboard navigation were
stuck at the top of our room list and the bottom of our
message list.
Now we scroll both lists as focus moves, improving
navigation for keyboard users.
Events are wrapped in a content block like so:
```
"content" : {
"membership" : "invite"
}
```
However we were parsing it as just `"membership" : "invite"`.
Now we properly expect it to be within a content block.
Fixes https://gitlab.gnome.org/GNOME/fractal/issues/456
Previously we passed a String as "filter" in our
PublicRoomsRequest, but we needed to be passing
a Filter object. Somewhere along the way the String
stopped being accepted, breaking search.
Fixes https://gitlab.gnome.org/GNOME/fractal/issues/451
Previously we cached typing_users when we saved our
state before closing, which lead to odd behaviour
when re-opening Fractal where it showed a user as typing
incorrectly.
Now we reset typing_users as we save the room.
Closes https://gitlab.gnome.org/GNOME/fractal/issues/462
When using lighttpd as a reverse proxy empty POSTs get rejected by the
server if they don't have Content-Length set to zero, so some calls like
marking a room as read fail to make it to the homeserver.
fixes: GNOME/fractal#475
Our current margins are a little too big for a mobile screen.
So, we reduce them to 6px when we detect that the app is
folded with HdyLeaflet.
Closes https://gitlab.gnome.org/GNOME/fractal/issues/480
GNOME Builder carries a re-implementation of flatpak-builder.
flatpak-builder assumes that builddir is true for meson, but
Builder does not since it also supports out-of-tree builds.
This helps indicate to Builder that builddir can indeed be used.
Previously we were using a script to grab our sources
automatically. However, this was error-prone and meson
didn't actually understand the output.
Now we declare our sources manually. This helps meson
know when to trigger a build based on what files have
changed.
Instead of putting target/ and in the source
directory, we can tell our cargo script to put both target
and our cargo-home in meson's build directory. This means
that when triggering a rebuild through meson via tooling
like Builder, Fractal will actually rebuild.
Our workaround for getting meson and cargo working together
included a separate 'release' target that replaced
'ninja dist' so that we could vendor dependencies.
Now we use meson's add_dist_script to vendor the
dependencies as part of 'ninja dist', so we no longer need
the 'release' target.
Allows us to get rid of build.rs, which was only used to
compile resources. static_resource.rs is now created by
meson, and the meson path is used for include_bytes!.
Previously we were using the env! macro to determine
build-time variables like version, app ID, and locale dir.
Instead of relying on env vars, we can create a configuration
file with meson and import it.
mnemonics are a tool used for faster keyboard navigation,
and help with accessibility.
This commit adds mnemonics for every entry and button that
either has a label or doesn't have another shortcut.
Adds keyboard and mouse shortcuts for the back action
in the login view. Now users can press back on their
mouse or hit Escape to go back in the login stack.
This is a complete overhaul over the interface for login.
* widgetifies the login view (removes app/connect/login.rs)
* Instead of asking for the identity server, uses .well-known
* No longer assumes a homeserver
Closes#448
Instead of asking for the identity server and homeserver
url for login, we can ask the users to give us a domain
and make a request to .well-known/matrix/client. This
will give us the identity server and the true url for
the homeserver.
See https://matrix.org/docs/spec/client_server/latest#well-known-uri for details
Branches the login flow off from the main window's UI file.
Like the account settings view we can add it to the stack
manually at run-time. This cuts down greatly on the
complexity of the main_window file.
We didn't specify the visibility for participants in direct chats. The default behavior when unspecified is confusing,
and leads to messages sent between the sending of an invite
and the acceptance of it being dropped.
Now we append a state event to our room creation that
sets the room visibility to "invited", meaning users
can see messages from when they were invited.
Closes https://gitlab.gnome.org/GNOME/fractal/issues/327