Commit graph

632 commits

Author SHA1 Message Date
Sophie Herold
2112f87168 properties_view: Show ICC profile or CICP
Closes #510
2026-07-20 21:42:45 +02:00
Sophie Herold
c7223f6f69 properties_view: Use physical size and resolution
Replace the API that got removed from glycin
2026-07-09 22:54:04 +02:00
Sophie Herold
52bd4bf25c src: Update copyright info 2026-06-29 13:34:19 +02:00
Sophie Herold
4adf22c4e5 properties: Add creator, rights, lens, software 2026-06-25 22:14:38 +02:00
Sophie Herold
05edeb1418 cargo: Update to glycin 4.0.0-alpha 2026-06-25 21:22:23 +02:00
Sophie Herold
e25473ab3b edit_window: Don't show saving overlay after error 2026-06-24 21:03:18 +02:00
Sophie Herold
eee2b415d2 image/loading: Adjust frame timing by accrued delay
This should fix animations systematically slowing down.
2026-06-23 22:57:17 +02:00
Sophie Herold
ea449046b8 edit_window: Don't quit if close_request saving fails
Part-of: <https://gitlab.gnome.org/GNOME/loupe/-/merge_requests/576>
2026-06-22 19:07:41 +00:00
Sophie Herold
da60453335 edit_window: Let the save changes text make sense
Part-of: <https://gitlab.gnome.org/GNOME/loupe/-/merge_requests/576>
2026-06-22 19:07:41 +00:00
Sophie Herold
6b4d057167 Trigger save dialog via close_request
This simplifies the code and fixes that unsaved changes were only saved
for the active window and dropped for all others.

Part-of: <https://gitlab.gnome.org/GNOME/loupe/-/merge_requests/576>
2026-06-22 19:07:41 +00:00
Sophie Herold
aa4bdbb114 application: Remove random println
Part-of: <https://gitlab.gnome.org/GNOME/loupe/-/merge_requests/576>
2026-06-22 19:07:40 +00:00
Sophie Herold
6ffa11fbc1 application: Remove redudant present() for dialog
Part-of: <https://gitlab.gnome.org/GNOME/loupe/-/merge_requests/576>
2026-06-22 19:07:40 +00:00
Abhinandan Thakur
eb4e5c469a Changed the logic of app.quit accelerator, introduced a dialog in it.
Also made functions such is_save_senstive() and save_overwrite()
publicly accessible for logic building.

Part-of: <https://gitlab.gnome.org/GNOME/loupe/-/merge_requests/576>
2026-06-22 19:07:40 +00:00
Abhinandan Thakur
f2d4fa6e0d Save-Dialog: Added a Save Dialog for Ctrl+Q Unsaved Changes
Changed the logic of app.quit accelerator, introduced a dialog in it.
Also made functions such is_save_senstive() and save_overwrite()
publicly accessible for logic building.

Fixes: #537
Part-of: <https://gitlab.gnome.org/GNOME/loupe/-/merge_requests/576>
2026-06-22 19:07:40 +00:00
Sophie Herold
c3410943b8 window: Move Ctrl+C (copy) handler here
Closes #583
2026-04-27 13:32:19 +02:00
Sophie Herold
19e0fd7c6e Update copyright comments 2026-02-27 21:03:02 +01:00
Sophie Herold
26963b88a2 main: Log to stderr and with line numbers 2026-02-27 16:52:21 +01:00
Sophie Herold
5ba6cb0954 cargo: Update deps and bump version 2026-02-27 16:50:18 +01:00
Maximiliano Sandoval
d922a033ec edit_window: Remove i==1 branch for ngettext
A message catalog can have at most a single string with a given msgid,
in this case having a branch with gettext and another with ngettext
would result in two strings with " (Edited)" as their msgid.

This can be checked via:

$ meson compile loupe-pot
INFO: autodetecting backend as ninja
INFO: calculating backend command to run: /usr/bin/ninja loupe-pot
[0/1] Running external command loupe-pot
/usr/bin/xgettext: warning: msgid ' (Edited)' is used without plural and with plural.
                            src/widgets/edit_window.rs:197: Here is the occurrence without plural.
                            src/widgets/edit_window.rs:200: Here is the occurrence with plural.
                            Workaround: If the msgid is a sentence, change the wording of the sentence; otherwise, use contexts for disambiguation.

Part-of: <https://gitlab.gnome.org/GNOME/loupe/-/merge_requests/578>
2026-01-29 23:14:58 +00:00
Sophie Herold
8972c5efb9 code: Use chained if-let's 2026-01-29 23:59:58 +01:00
Sophie Herold
f806bbd484 cargo: Update deps 2026-01-29 23:59:58 +01:00
Sophie Herold
67a233f777 cargo: Update to gtk-rs 0.22/0.11 2026-01-29 23:59:54 +01:00
Sophie Herold
d82c92a516 window: Remove unused shortcuts-dialog shortcut 2026-01-29 23:09:32 +01:00
Abhinandan Thakur
a50212f741 shortcuts-dialog: Port to AdwShortcutsDialog
Changed help-overlay.ui to add adwaita shortcuts dialog and loaded that
xml in window.rs also incremented libadwaita version.

Fixes #521
2026-01-29 23:05:14 +01:00
Sophie Herold
5702f2343d code: Update copyright 2026-01-02 16:25:56 +01:00
Sophie Herold
32a4d0f0aa image/zoom: Allow 50% zoom via menu for 16px images
Zoom out for 16px or smaller images is usually blocked. But allow it for
zoom menu as we allow 50% via zoom menu in other situations where it is
blocked otherwise. Also, this is probably much less complex
implementation wise.

Closes #544
2025-12-23 23:09:39 +01:00
pieterd
f34f9dd988 Constrain minimum zoom level 2025-12-23 22:39:37 +01:00
Sophie Herold
2102b44528 image_view: Limit zoom value digits
Only allow 4 integer digits and 2 decimal digits. That's what's actually respected by the input at max.

Closes #557
2025-12-22 16:11:13 +01:00
Sophie Herold
a761eb5b2d image/zoom: Zoom >=1 no best fit for ExactVolatile
The best-fit calculation would consider levels >=1 for best-fit. This
seems fundamentally wrong since that should be reserved for LargeFit.

This caused zoom-in to fail since best-fit was considered instead. But
that best-fit was computed with BestFit mode since the mode changed in
between in zoom_to_full.

Fixes #556
2025-12-22 14:14:38 +01:00
Sophie Herold
73c921b042 image/zoom: Improve tracing messages 2025-12-22 14:11:59 +01:00
Sophie Herold
7151cf5d1d image_page: Specific error for file loading
Give a specific error message if loading the source file fails.

Closes #487
2025-12-22 01:40:44 +01:00
Sophie Herold
b9668c7262 image: Unify error handling in one type 2025-12-22 01:40:44 +01:00
Sophie Herold
36ba0edc04 Update copyright comments 2025-12-19 00:06:29 +01:00
Sophie Herold
e9389a3a18 clippy: Fix warnings 2025-12-19 00:04:27 +01:00
Sophie Herold
4d6d771ab4 Use tracing for logging 2025-12-18 23:15:46 +01:00
Sophie Herold
f255af9f6a image/zoom: Keep best-fit zoom in gesture
Don't change the zoom in configure best fit if currently in gesture.
2025-12-10 22:19:37 +01:00
Sophie Herold
83b2c7cae1 util/root: Add window_show_error() to avoid unwrap
Fixes #553
2025-12-09 22:07:30 +01:00
Sophie Herold
cfd33fa2dd util/root: Add window_inspect() to avoid unwraps 2025-12-09 21:55:07 +01:00
Sophie Herold
7b45009eed util/root: Use specific function to show toasts 2025-12-09 15:55:30 +01:00
Sophie Herold
3e69dc4c6f util/root: Log source location of call without root 2025-12-09 14:55:14 +01:00
Sophie Herold
4ec8c8b1cb image_window: Simplify gestures 2025-12-08 16:15:13 +01:00
Sophie Herold
f2dbee5ef8 image_view: Make space for always on scrollbars
Increase the margin of the overlay if scrollbars are set to always
visible.

Fixes #528
2025-12-04 21:33:19 +01:00
Alexandros Kosiaris
d930323da9 Don't force UTC on naive datetime structs
Why:
When a camera ships EXIF information that lacks any type of
offset and/or timezone information, any kind of information that
would help make a decision regarding the timezone is absent.
Forcing UTC means that most users of such cameras will end up
with datetimes reported that have nothing to do with the ones
they expect. The only assumption that holds some water, is to
assume that the picture was taken in the same timezone as the
device running Loupe and hope that's true. If it is not, it is
undetectable programmatically, and the user will have to mentally
compensate for it

What:
Switch from using from_unix_local() and parsing the timestamp of
the naive datetime as UTC to using from_local() and passing the
arguments needed
2025-12-04 15:37:07 +01:00
Mukul Joshi
48e27739f5 Print preview: Revert to previous width on disabling of fill space
Saves the width prior to applying fill space. This saved width is reapplied when fill space is disabled directly through the toggle.

Fill space may be disabled indirectly (by changing the width/height). In those cases, the saved width is discarded.

Fixes #297
2025-12-04 15:16:16 +01:00
sid
80fb07db03 Add edit function to project summary
Fixes: https://gitlab.gnome.org/GNOME/loupe/-/issues/469
2025-12-04 06:26:57 +01:00
Sophie Herold
4439499cda code: Reformat with Rust 2024 edition 2025-12-04 06:17:55 +01:00
Sophie Herold
2a8a13fd01 cargo: Update deps 2025-12-04 06:17:55 +01:00
Sophie Herold
def2e8966f decoder: Fix clippy warning 2025-12-04 06:17:55 +01:00
Sophie Herold
71351a0c03 file_model: Improve sort key performance
Don't query for the actual GFile in the list, because we already have
the information from the iterator. Cache the other path segments since
they are likely to be repeated.

On a local SMB share folder with 10,000 images and 4 path segments, this
reduces the loading time from 30 seconds to 1 second.

Fixes #534
2025-12-04 00:10:06 +01:00
Sophie Herold
3b11b0534e metadata: Drop unreliable mime-type
Only use a reliable mime-type. This requires that we load images earlier
in the pipe.

This also fixes warnings about mime types not being available on network
drives like SMB.

Fixes #513
Issue #534
2025-12-03 22:41:24 +01:00