Fix issue in previous commit when having multiple windows.
Steps to reproduce:
- enable properties in window A and window B doesn't have them enabled
- switch an image in window B
- the properties would be shown
Co-authored-by: Sophie Herold <sophie@hemio.de>
Added GSettings support to Loupe. Inspiration was taken from Fractal:
LpApplication will contain `gio::Settings` and all code needing them
will reach them as a singleton by calling `g_application_get_default`.
This design makes the settings dependency less explicit than dependency
injection, but allows for shorter code when new settings will be added
across different parts of the application.
A `show-properties` setting is added for remembaring the image property
sidebar state. It's read by LpWindow when the current page changes, and
saved when toggling the sidebar. When no image is being shown, the
sidebar is always hidden, while the setting remains unchanged. The
sidebar state will be restored when a picture is opened.
Closes#147
This got lost with having a custom "accept" signal handler since
the signal uses g_signal_accumulator_first_wins. Fixing this also
works around GTK not properly checking the drops and ending up
in criticals.
Fixes#234
Rust's standard library now provides a drop-in replacement
for `OnceCell`. It requires no API changes from `once_cell`'s
version.
This commit replaces the version from `once_cell` with the
new `std` struct where possible. We still need to use
`once_cell` for properties until
https://github.com/gtk-rs/gtk-rs-core/pull/1113
is merged. We also still need it for Lazy until that lands.
Part-of: <https://gitlab.gnome.org/GNOME/Incubator/loupe/-/merge_requests/241>
Also changing behavior when opening with multiple command line
arguments or when multiple images were selected from other
applications.
Old behavior: Spawn an instance of Loupe for each argument.
New behavior: One Loupe instance containing all arguments.
Closes#195
Uses code that drag and drop already uses. It's kinda ugly because the
file dialog returns a ListModel.
As an added bonus, since the button responds to the action "win.open",
it will also allow open multiple files with the primary menu.
It would be a good idea to change the "Open…" label in the primary menu though.
Closes#191
Usually we want to wait for dimensions to show the window in correct
apsect ration. But especially for large SVGs dimensions are only known pretty late.
Show the image to give UI feedback instead of waiting for dimensions.
Closes#146
Part-of: <https://gitlab.gnome.org/Incubator/loupe/-/merge_requests/209>