AdwBreakpoint automatically resets properties when the breakpoint
conditions no longer apply. This means we don't need to manually
create a breakpoint for the sidebar at widths greater than 590px,
as libadwaita already does that for us.
This commit removes the extra breakpoint.
Part-of: <https://gitlab.gnome.org/GNOME/Incubator/loupe/-/merge_requests/228>
Some extra quotes were left in the UI file. Thankfully because
these were fully closed, they weren't causing any issues. Still,
they don't need to be there.
This commit removes the extra quotes.
Part-of: <https://gitlab.gnome.org/GNOME/Incubator/loupe/-/merge_requests/228>
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
It did not work before because the spinner page did
not take up the complete stack.
Also hiding the spinner when animating out of it
since it can be pretty dominant. Especially, since
it's usually not really shown before but the animation
starts emediately instead.
Closes#153
Part-of: <https://gitlab.gnome.org/Incubator/loupe/-/merge_requests/205>
Our help documents are unfinished, and we shouldn't ship
unfinished documentation in our initial release.
We can revert this commit when we're ready to write the
documents properly.
Part-of: <https://gitlab.gnome.org/Incubator/loupe/-/merge_requests/156>
By setting the Main Menu button as primary,
the F10 key is automatically assigned to this button.
Setting a shortcut with GtkShortcutController is no longer necessary.
This adds proper support for a lot of image formats including SVGs.
It will be the basis for many features to come. The technical core
is an asynchronous renderer that can arrange textures in smaller tiles
which might be generated on demand.
Closes#34, #40, #41, #49
Basis for fixing the following issues #7, #27, #36, #43, #68, #71
Currently Loupe leaks expressions created in-code. This
is because expressions need to be unwatched in order to be
dropped. Since we'd need to hold a reference to the watch
ourselves and unwatch them in dispose, our code would
become more cumbersome if we were to try to handle this properly.
This commit moves the expressions on LpPropertiesView to the
UI file, as GTK handles cleaning up the expressions it creates,
without any extra consideration on the app side.
Propagating the height resulted in new window dimensions not
fitting to images.
Use ScrolledWindow instead of PreferencesPage to have
control over propagate-natural-height.
Use IndexSet to allow direct access by Path and also allow
an arbitrary ordering that was not possible with Vec. Also
add monitoring of file changes in the directory.
Use a custom LpSlidingView instead of AdwCarousel because
Carousel was never designed for this job and suffered of
bugs. LpSlidingView does not support swiping gestures yet
since they currently don't work yet anyways #24.
Use a new algorithm to fill the LpSlidingView that is
stateless and covers all potential changes in the directory.
This not only fixes bugs but would also work with changed
sorting orders.
This also adds build time template XML validation since it
was useful for the refactoring #46.
Closes#9, #11, #30, #33, #42
Tried to make things more stateless and RefCell usage for robust
- Use object properties to control the action enabled/disabled
- Borrow model RefCell for only one line or use .replace()
- Don't pass models around and borrow as short as possible instead
Fixes#20