Commit Graph

441 Commits

Author SHA1 Message Date
c55500f51a Support dragging the view
It would also be possible to handle this through press/motion/release
event handlers, though GtkGestureDrag is more convenient for hacking in
support for dragging to widgets not supporting GtkScrollable (yet).

There may be some undesired interactions lurking, besides the jarring
movements when dragging native GdkWindows (these are a pain).
2022-07-15 14:00:31 +02:00
1fee920902 Make the browser scroll with touchpad on Wayland
And generally clear up scroll handling.
2022-07-15 07:35:33 +02:00
c6096d05b5 Discard the inner sidebar's size request
It used to create a hole when there weren't enough bookmarks
to fill that space.
2022-07-14 12:47:35 +02:00
07aa11d78d Use GPatternSpec rather than fnmatch()
Fixing a portability issue on Windows, where we still aim to use
the shared-mime-info database.
2022-07-14 10:08:15 +02:00
de27dce09c Add a context menu to breadcrumbs 2022-07-04 20:44:48 +02:00
a1b2225750 Move the browser's popup menu to its own file 2022-07-04 20:44:47 +02:00
b87a109d61 Decode bitmap thumbnails through LibRaw as well 2022-06-10 22:47:00 +02:00
81145064de Generate TIFF structs/enums from a text file
This is to make the tables much easier to maintain.
2022-06-10 02:18:14 +02:00
60a8ee7a80 Build tools with Meson as well 2022-06-10 02:08:56 +02:00
84f8c9436f Downscale embedded thumbnails within minions
Otherwise the UI would become unresponsive during loading.
2022-06-08 02:51:55 +02:00
a8f7532abd Employ embedded thumbnail extraction
And store all direct thumbnailer output in the browser's cache--
low-quality thumbnails will always be regenerated, as is desired,
and we'll reload faster on devices where we don't store thumbnails.

This change improves latency at the cost of overall efficiency,
seeing as images with thumbnails will be spent cycles on twice.

Keeping this out-of-process avoids undesired lock-ups.
Moreover, embedded thumbnails can be fairly expensive to decode.
2022-06-08 02:51:54 +02:00
8dfbd0dee2 Add a command line option to extract thumbnails
Only use LibRaw for now, which probably has the most impact
using the least amount of effort.
2022-06-08 02:51:54 +02:00
930744e165 Add flags to the serialization protocol
It still needs no versioning, as it's not really used by anyone.

An alternative method of passing a "low-quality" flag would be
perusing fiv_thumbnail_key_lq from fiv-thumbnail.c, which would
create a circular dependency, unless fiv_io_{de,}serialize*()
were moved to fiv-thumbnail.c.
2022-06-08 02:51:54 +02:00
4ca8825e02 Clean up
Use gchar when memory is allocated through GLib.
2022-06-05 13:30:53 +02:00
024b5117b4 Get rid of our spng dependency
Thumbnails can be properly loaded using Wuffs now.
2022-06-04 23:14:15 +02:00
ac6b606ccc Bump Wuffs, support partial PNGs through it 2022-06-04 19:19:16 +02:00
8bba456b14 Cache thumbnails across reloads
This will speed up sort changes, as well as simple reloads,
at the cost of an extra hash map from URIs to Cairo surface references.

It seems unnecessary to provide an explicit option to flush this cache,
as it may be cleared by changing either the directory or the current
thumbnail size.
2022-06-04 16:37:25 +02:00
bb97445a96 Attach mtime to the browser's rescaled thumbnails 2022-06-04 16:37:25 +02:00
e2adac72cc Use the model's mtime for validating thumbnails
Saves a syscall, generalizes fiv_thumbnail_lookup(),
wastes a tiny bit of memory per entry.
2022-06-04 16:37:25 +02:00
3ddb0cf205 Expose the mtime of the model's entries 2022-06-04 14:50:56 +02:00
efc13db66e Plug two memory leaks 2022-06-04 01:28:44 +02:00
b6315482b7 Fix sort changes taking way too much time
All thumbnails were reloaded five times on each change.

GTK+/GObject's behaviour doesn't make a lot of sense, but such is life.
2022-06-02 11:46:16 +02:00
51ea785d83 Bump spng wrap 2022-04-20 03:03:30 +02:00
5c34a6846a Fix loading huge JPEGs
They fell back to gdk-pixbuf, then misrendered in the thumbnailer,
and crashed the program when loaded directly.

The second best we can do is scale them down, right after tiling,
which is a complex feature to add.
2022-03-09 18:04:36 +01:00
da507edd05 Prevent thumbnailing from disrupting mouse clicks 2022-02-24 21:52:25 +01:00
580b68789b Turn the browser into a DnD source
The destination does all the work of handling file operations.

Also, add some missing logic for horizontal scrolling.
2022-02-22 15:44:38 +01:00
31f9feab7b Use the X-GNOME-FullName desktop file key 2022-02-21 22:29:14 +01:00
41bd25e711 Avoid g_app_info_should_show() in context menus
We were hiding our own JPEG cropper.
2022-02-21 21:49:44 +01:00
d9435c988c Clean up 2022-02-21 21:20:16 +01:00
919a55c90b Try to thumbnail everything we can 2022-02-21 00:02:15 +01:00
68bb695054 Clean up 2022-02-20 21:29:34 +01:00
04ec292caf Make thumbnailers pass back raw images 2022-02-20 21:14:33 +01:00
a28fbf25bc Implement wide thumbnail cache invalidation 2022-02-20 15:44:42 +01:00
6c748439ed Use natural sort order
This is exposed in GLib through collate key construction.
2022-02-20 12:07:41 +01:00
fbf26a7d66 Show application icons in context menu items 2022-02-20 12:07:40 +01:00
1a8c461af2 Simplify sidebar DnD 2022-02-19 23:13:35 +01:00
2a73e46315 fiv-jpegcrop: avoid negatively sized crop regions 2022-02-19 23:04:12 +01:00
a68a73cf5c Don't mention gdk-pixbuf as a direct dependency
It's a similar case to Cairo.
2022-02-19 22:02:22 +01:00
433ede4bf1 Add a lossless JPEG cropper
This is more of an MVP, as metadata probably need adjustments.
2022-02-19 20:48:38 +01:00
3ae8be8348 Add a TODO comment
WebP can't save all JPEGs, because WEBP_MAX_DIMENSION is only 16383.
2022-02-18 19:54:05 +01:00
5d019e20b5 Make the view a drop target 2022-02-17 10:57:05 +01:00
03d1798e23 Add a missing header file include 2022-02-14 06:55:37 +01:00
ef2544868d Open items on mouse button release, not press
At least the left and middle mouse buttons seem to behave similarly
in other programs and systems.

Context menus are opened on button release on Windows and with some
GTK+ widgets (popovers in GtkPlacesSidebar).
2022-02-14 02:10:25 +01:00
0857a04a3a Scroll to selection when returning from the viewer 2022-02-13 13:18:36 +01:00
4302ec71f2 Make changing the browser zoom launch thumbnailers 2022-02-13 13:18:36 +01:00
ee5f63e50b Adjust keyboard shortcuts 2022-01-26 04:44:00 +01:00
6e26dc13b4 Only show the info bar when appropriate
The late, global gtk_widget_show_all() made it always start visible,
in particular when the program was launched directly on an image file,
and not in browsing mode.
2022-01-25 06:15:05 +01:00
5c725d1968 Fix some user guide formatting 2022-01-25 05:59:05 +01:00
ee71fb0dd0 Start a basic user guide
Move some information out there from the README.
2022-01-25 05:54:00 +01:00
381e5f57c7 Add TGA to the list of supported media types 2022-01-25 05:16:31 +01:00