Commit graph

327 commits

Author SHA1 Message Date
Bert Münnich 1de5f06f83 Set global markidx whenever a single img is (un)marked
This also sets *markidx* when using the right mouse button in thumbnail mode.
2018-06-09 14:07:13 +02:00
Bert Münnich 5367b75867 (Un)mark thumbnails while holding Button3 down 2018-06-09 13:18:18 +02:00
Bert Münnich 87a1ace8a1 (Un)mark single image through generic function 2018-06-09 13:12:46 +02:00
Bert Münnich a1165df878 Rename variable toggledidx to markidx 2018-06-09 11:57:42 +02:00
Bert Münnich 1e5cc7e382 Fix cg_mark_range after removing images from file list 2018-06-09 11:55:20 +02:00
Bert Münnich cc476be7cc Remove unnecessary special cases in cg_mark_range 2018-06-09 11:52:48 +02:00
Daniel Lublin 6e696ba98c Add mark range function
Sets the marked state of all images ranging from the latest marked/unmarked
image to the current image, to the state of that latest toggled image.
2018-06-09 11:44:47 +02:00
Bert Münnich 09b04d7aef Revise waiting for child processes 2018-02-18 14:51:46 +01:00
Bert Münnich 762420cdf1 Close image-info explicitly 2018-02-18 14:12:41 +01:00
Bert Münnich 4124857137 Skip imlib cache when reloading due to inotify event 2018-02-18 14:12:41 +01:00
Bert Münnich 8017b75de4 Refactoring 2018-01-09 19:37:56 +01:00
Hyleus 6d261b4e7a Fix a potential uninitialized variable 2018-01-09 19:31:36 +01:00
Bert Münnich 8a9e3ea43e Separate bar fields only by spaces 2017-12-07 21:44:59 +01:00
Bert Münnich 30e2356622 Remove obsolete files[].base 2017-12-07 14:16:32 +01:00
Bert Münnich 004fcd5c5b Left bar shows file name as given by user 2017-12-07 14:08:37 +01:00
Squibby eb96c71725 Try to match a fallback font if needed
Fixes #276

Instead of rendering the entire filename at once, Xft will let us do it
character by character. This will allow sxiv to query fontconfig for
a font that can provide any missing codepoints, if needed.

A known issue of this patch is that the "..." dots rendering will not
work properly for very long multibyte filenames. That is because we
cannot easily predict the final width of the rendered filename before
drawing it. I couldn't figure out a clean way to deal with this, so I
ended up just truncating the offending filenames.
2017-12-06 20:39:07 -03:00
Bert Münnich 64b885b6a9 Fix navigating from last to previous image over invalid files 2017-10-26 22:20:39 +02:00
Bert Münnich 2d34c4b9bf Set LC_COLLATE for -r file list sorting
Fixes issue #293.
2017-10-24 21:43:36 +02:00
Bert Münnich 148026007c One header file for type definitions and function declarations 2017-10-16 21:10:35 +02:00
Bert Münnich 8081cbebf3 Improve mouse support
None of the mouse mappings uses a keyboard modifier, making it possible to
access the most basic features by only using the mouse.

Next/previous image with left button depending on cursor position, middle
button for dragging, right button for switching to thumnail mode and wheel for
zooming.

Users can keep the old behaviour by simply not adapting the changes to the
buttons array in config.def.h to their config.h file.
2017-10-06 10:15:43 +02:00
Bert Münnich ee908ca0a1 Simplify cursor reset in image mode
No need to give cursor name. reset_cursor() is now the only place to decide
what cursor to fall back to.
2017-10-05 13:49:11 +02:00
Bert Münnich e310136e02 Mouse drag translates pointer position to image area
This makes mouse panning more direct and faster.
2017-10-04 18:22:43 +02:00
Bert Münnich a20173a42d Detect all file overwrites in autoreload_inotify
mv(1) inside the same filesystem was not detected.

Supporting this case made it necessary to always watch the directory. Turns out
the logic and state keeping between arl_setup() and arl_handle() is easier,
when using different watch descriptors for the file and the directory and not
using a oneshot descriptor for the file.

Requiring an absolute canonical path for arl_setup() simplifies dir and base
name splitting. No need for dirname(3) and basename(3) anymore.
2017-05-17 20:20:39 +02:00
Bert Münnich 3724d3fc17 Revised autoreload interface
Make the header only contain the public interface and nothing from the
implementation. All functions get a handle to their self object, like the img_
and tns_ and win_ functions. All necessary data (file path) is also passed as
an argument, so that no extern redeclarations are needed.

Make arl_setup_dir() private, it's not called outside the module.

Make arl_handle() return true if the file has changed, so that the reloading of
the file can be done by the caller.
2017-05-17 20:07:32 +02:00
Max Voit edb117e3bd Add autoreload support by inotify (and dummy backend nop) 2017-05-17 15:52:40 +02:00
Bert Münnich 1fb3ec576c Properly quit when window gets closed; fixes issue #27 2017-05-17 15:51:47 +02:00
Jakub Wilk c313edc0ad Fix typo 2017-02-15 20:20:41 +01:00
Bert Münnich 5c607ad495 Pass given file names to key-handler instead of real paths
Misbehaving command lines in the key-handler that rewrite the given files and
thus replace symbolic links instead of their targets shall call realpath(1).

Fixes issue #205 and reverts commit 92e3b578.
2017-01-07 14:44:33 +01:00
Bert Münnich ff2ce99bf7 Merge djhejna/floatdelay 2016-12-01 21:18:41 +01:00
Bert Münnich 9a85dd41d8 Ignore button and key events while key-handler is running
Related to issue #253, which originally asked for a non-blocking key-handler.
2016-11-30 20:48:32 +01:00
Don Hejna 27bbaab976 Support for DELAY as a floating point number including less than 1
second while maintaining backward compatibiitiy with integer
arguments.
2016-11-27 20:36:23 -08:00
Paride Legovini 86dc6860f9 Allow opening directories non-recursively 2016-09-28 19:27:48 +02:00
Bert Münnich c280129cef Use Xft for font loading and text drawing 2016-08-06 15:27:58 +02:00
Bert Münnich aabc2bddbd Provide image width and height to image-info script; fixes issue #159 2016-08-06 12:22:47 +02:00
Bert Münnich d3a70a285d Revised error handling
- Functions warn() and die() replaced by GNU-like error(3) function
- Register cleanup() with atexit(3)
- Functions called by cleanup() are marked with CLEANUP and are not allowed to
  call exit(3)
2015-10-28 23:03:37 +01:00
Bert Münnich 851e4288c1 Prefix safe allocation functions with 'e' instead of 's_' 2015-10-28 22:29:01 +01:00
Bert Münnich b096cbd536 Removed unnecessary buffer size constants 2015-10-28 22:23:28 +01:00
Bert Münnich 9a7e97cd89 Use XSI realpath(3) 2015-10-28 21:52:41 +01:00
Bert Münnich 66c3c55759 Use POSIX.1-2008 getline(3) 2015-10-28 21:50:17 +01:00
Bert Münnich e574a6d0dd Removed feature test macro definitions from source files 2015-10-28 21:37:45 +01:00
Bert Münnich e0e96977b3 Removed overcautious parameter checks 2015-10-28 21:01:24 +01:00
Bert Münnich a3838c1984 Always run image-info script after key-handler in image mode; fixes issue #213 2015-08-19 21:29:39 +02:00
Bert Münnich 92e3b57816 Pass real paths to key handler instead of the paths provided by the user
Programs called by the key handler might replace symlinks instead of their
targets.
2015-01-18 11:28:21 +01:00
Bert Münnich 47af0dd7b5 Cache out of view thumbnails in the background 2015-01-04 21:24:43 +01:00
Bert Münnich 9b9294bae6 Use bit-field for boolean flags in fileinfo struct 2015-01-04 21:24:43 +01:00
Bert Münnich 6216bf6c2d Ignore SIGPIPE, caused by key handler exiting before all files got printed, fixes issue #188 2014-12-01 14:03:49 +01:00
Bert Münnich 216ad81b59 Pass file paths to key handler via stdin; fixes issue #187 2014-11-27 22:37:20 +01:00
Bert Münnich 51854c6148 Fixed leakage of pipe descriptors in case of failing fork 2014-11-27 22:25:27 +01:00
Bert Münnich 93e2a757d4 Do not print could-not-open-warnings for files found by directory traversal 2014-10-24 11:14:01 +02:00
Bert Münnich c33f2ad355 Corrected & refactored handling of window bar content...
Old snprintf calls could have overflowed the buffers.
2014-10-01 22:35:22 +02:00
Bert Münnich 8db3191f04 Fixed segfault on image removal with uninitialized thumbnails; fixes issue #177 2014-10-01 20:25:36 +02:00
Bert Münnich ddd028eb3e Unified file count variable for image & thumbnail mode 2014-09-30 21:54:17 +02:00
Bert Münnich b2dbd2fed3 Changed image mark in thumbnail view to small rectangle 2014-09-27 22:05:21 +02:00
Bert Münnich 5fce009b73 Refactored main loop; properly fixes startup issue 2014-09-26 22:47:28 +02:00
Bert Münnich c1e084357c Fixed startup in thumbnail mode with floating window 2014-09-26 20:45:15 +02:00
Bert Münnich eaa269b6cb Revised thumbnail loading...
- Only load the thumbnails that are currently visible in the window
- Unload thumbnails that are leaving the visible area
- Much less memory needed, but scrolling is now slower
- This also unintentionally fixes issue #86
2014-09-26 10:31:03 +02:00
Bert Münnich 52e56c8924 Fixed segfault caused by image removal in thumbnail mode 2014-09-11 22:22:51 +02:00
Bert Münnich 2fbc21a205 Simplified img_frame_animate 2014-09-01 20:41:33 +02:00
Bert Münnich f478385d59 Corrected i_alternate, fixes issue #171 2014-08-29 20:16:24 +02:00
Markus Elfring 0f6cb93a09 Bug #165: Deletion of unnecessary null pointer checks
The function "free" performs input parameter validation.
http://pubs.opengroup.org/onlinepubs/9699919799/functions/free.html

It is therefore not needed to check a passed pointer before this function call.
A corresponding update suggestion was generated by the software "Coccinelle"
from the following semantic patch approach.
http://coccinelle.lip6.fr/

@Remove_unnecessary_pointer_checks1@
expression x;
@@
-if (x != \(0 \| NULL\))
    free(x);

@Remove_unnecessary_pointer_checks2@
expression x;
@@
-if (x != \(0 \| NULL\)) {
    free(x);
    x = \(0 \| NULL\);
-}

@Remove_unnecessary_pointer_checks3@
expression a, b;
@@
-if (a != \(0 \| NULL\) && b != \(0 \| NULL\))
+if (a)
    free(b);

@Remove_unnecessary_pointer_checks4@
expression a, b;
@@
-if (a != \(0 \| NULL\) && b != \(0 \| NULL\)) {
+if (a) {
    free(b);
    b = \(0 \| NULL\);
 }

Signed-off-by: Markus Elfring <elfring@users.sourceforge.net>
2014-08-22 19:24:08 +02:00
Bert Münnich fe3a1e326f Further simplified thumbnail marks 2014-08-18 12:45:32 +02:00
Bert Münnich 50652f63d9 Full redraw when removing files during thumbnail reloading; fixes issue #164 2014-08-17 16:31:16 +02:00
Bert Münnich e49d38d6f9 Fixed wrong thumbnail-to-file mappings caused by file deletions 2014-08-16 22:21:51 +02:00
Bert Münnich e267dc7793 Pass marked files to external key handler in thumbnail mode; fixes issue #135 2014-08-16 21:49:46 +02:00
Bert Münnich 284be74927 Count number of marked files 2014-08-16 21:49:46 +02:00
Bert Münnich 5b01c15176 Unified file index variable for image & thumbnail mode 2014-08-16 21:49:45 +02:00
Bert Münnich 61f61cae5f Generalized thumbnail loading, allows easier reloading of thumbnails later on 2014-08-16 21:48:52 +02:00
Bert Münnich bb6721549b Overhauled window drawing, yet again; fixes issue #155
- Buffer for window content is bigger than the window, minimizes artifacts
  when window is resized
- Back to using XSetWindowBackgroundPixmap() instead of XCopyArea(),
  no need to handle exposure events; X server can show gray background directly
  after resize event before sxiv redraws the window contents
2014-07-28 20:36:32 +02:00
Bert Münnich 9c92de8584 Added support for multiple commands per key/button mapping; elegant fix for issue #150 2014-07-23 23:41:23 +02:00
Bert Münnich 06164c29b7 Revised command structure and key and mouse button mappings 2014-07-23 21:50:31 +02:00
Bert Münnich 5d0679b855 Show key handler status in bar while it is running 2014-06-15 14:15:48 +02:00
Miroslav Koskar 4cbc7346ff Timeout initial redraw 2014-05-24 10:07:14 +02:00
Bert Münnich 6d7acac3d1 Use real path of all files internally, requires _XOPEN_SOURCE>=500, fixes issue #137 2014-03-17 20:01:53 +01:00
Bert Münnich 653a6ee83b Warn once when external key combo is used and key-handler not installed 2014-02-18 21:10:44 +01:00
Bert Münnich e2fa49ecfe Unified X atom initialization 2014-02-02 14:36:10 +01:00
Bert Münnich f6510b0a04 Merged pull request #129 2014-01-31 13:21:23 +01:00
András Mohari 54d7b7f20f Use a prefix key to execute the key handler
The default prefix key is C-x, and can be changed in config.def.h. The
first key pressed after the prefix key will be passed the external key
handler, unless the key is Escape, which is used to cancel the prefix.
2014-01-31 14:17:52 +01:00
Bert Münnich ed69b483ed Double click on thumbnail to open image 2014-01-11 22:52:37 +01:00
Bert Münnich 304fd382db Adhere to XDG Base Directory Specification; fixes issue #124 2014-01-11 22:47:41 +01:00
Bert Münnich 48954a163a Allow config.h to use multimedia keys (XF86_XK_*); fixes issue #123 2014-01-09 20:38:46 +01:00
Bert Münnich e82397db15 Fixed handling of overloaded key mappings
Issue described here:
https://bbs.archlinux.org/viewtopic.php?pid=1117294#p1117294
2014-01-08 22:58:34 +01:00
Bert Münnich 9632dd88b9 Fixup for 9574150 2014-01-08 21:14:01 +01:00
Bert Münnich 9574150f2d Check file modification time after key handler 2014-01-08 20:31:50 +01:00
Bert Münnich cd34aa2a6b Fixed slideshow delay corruption after GIF animation 2014-01-08 20:31:07 +01:00
Bert Münnich 6a0fa2507c Slideshow mode is back, in a simplified version 2014-01-04 19:07:15 +01:00
Bert Münnich f2e0c492bd Moved external shell commands into exec/key-handler script
Gets called on all unset key mappings. Arguments are: key combo and
current file. Thanks to Francesco Orsenigo (xarvh) for the idea.
2014-01-02 23:19:31 +01:00
Bert Münnich b2eae528ed Proper support for Ctrl/Shift/Alt modifiers in key & mouse mappings 2014-01-02 14:13:08 +01:00
Bastien Dejean 4780ec5463 Close info file descriptor after reading 2013-11-17 12:54:55 +01:00
Bert Münnich cc479ca5ac Fixed segfault when removing first image from file list, fixes issue #112 2013-11-16 20:19:55 +01:00
Bert Münnich 50f9ad14de Refactored remote changes 2013-11-14 17:06:20 +01:00
Bert Münnich 2737fc8b81 Merge remote-tracking branch 'ariand/gamma' 2013-11-14 14:47:36 +01:00
Bert Münnich 38bc23405d Highlight edges of marked images in thumbnail mode 2013-11-14 14:37:08 +01:00
András Mohari 0353e6eea2 Add support for changing the gamma value 2013-11-13 20:54:09 +01:00
Bert Münnich 450c1ed9b5 Fixed inconsistencies in navigation when removing invalid files 2013-10-21 21:57:21 +02:00
Bert Münnich 7d878bd16d Added file marks; fixes issue #94
- Command it_toggle_image_mark (bound to 'm') toggles mark of current
  image
- Command it_navigate_marked (bound to 'N'/'P') can be used to go to
  the next/previous marked image
- When option -o is given, all marked files get printed
2013-08-10 21:18:53 +02:00
Bert Münnich 98972e98f9 Fixed segfault caused by FD_ISSET() on negative fd
Reported by Kris Siwiec
2013-04-02 19:32:59 +02:00
Bert Münnich 6f05e77728 New options: -[io], read/write files from/to stdin/out
Fixes issue #84
2013-03-19 21:14:58 +01:00
Bert Münnich 825c52c33f Made bar fields more distinguishable 2013-03-19 21:14:58 +01:00
Bert Münnich 38ecea3b4d Polished info script execution 2013-03-19 21:14:56 +01:00
Bert Münnich 30802cec0f Spawn info script & update bar contents only when needed 2013-03-19 21:14:32 +01:00