1* Changes between versions   -*- mode:indented-text; mode:outline-minor -*-
2
3This file (NEWS) documents the significant changes between all
4versions of xzgv, with the newest changes first.
5
6
7* Changes in xzgv 0.9.x
8
9** Other changes
10
11xzgv now uses GTK 2, with gdk-pixbuf as the image rendering back-end.
12imlib1 is no longer supported. Gamma, brightness and contrast control
13are no longer supported.
14
15** New features
16
17Add “zoom panorama”, which stretches to fit the most proportional
18dimension.
19
20
21* Changes in xzgv 0.8
22
23** New features
24
25Added support for the Exif orientation tag (Exif in this context is a
26form of JPEG). If you enable the "Use Exif Orientation" option in the
27viewer (or `exif-orient' config/option), it'll compensate for the
28(e.g.) digital camera's orientation when viewing, so pictures taken
29with the camera side-on will display the way you would probably want
30them to. However, since this differs from how most *other* programs
31will see the files - which are, after all, carefully constructed to be
32compatible with JFIF/JPEG files - and has the potential to be
33extremely confusing if you don't know exactly what's going on, it's
34not enabled by default. Thanks to Fraser Wright for suggesting this
35feature.
36
37
38** Bugfixes
39
40Broken GIFs could overrun a buffer previously - fixed.
41
42Added call to gtk_set_locale() which should hopefully avoid problems
43when GTK+'s default font is set to something which isn't
44ASCII-friendly. Thanks to Alexander Pohoyda for this one.
45
46Fixed JPEG segfault bug on files which were corrupted after the image
47itself. Thanks to Aaron Brick for spotting this one.
48
49Fixed long-standing bug with interpolation, which could have resulted
50in segfaults (though it's hard to say if it ever actually did).
51
52Stopped selector getting permanently hidden if two middle-button
53presses were too close together. Thanks to José Luis González González
54for spotting this.
55
56No longer sets background colour to black for mono PNG files, where
57this may cause problems. This change was ported from zgv; thanks to
58Morten Bo Johansen for spotting it there.
59
60
61** Other changes
62
63Added 9/0 keys as yet another way of doing file untag/tag. These are
64last-ditch alternatives for keyboards where -/= don't make sense (some
65non-US/UK keyboards), and where keypad -/+ aren't easily accessible
66(e.g. laptops). Thanks to Balázs Szabó for inspiring this one.
67
68
69* Changes in xzgv 0.7
70
71** New features
72
73Now adapts rendering method for big images. When the number of pixels
74in the image exceeds the value set by image-bigness-threshold (as set
75in config file or on command-line, defaulting to 2 million pixels),
76it's drawn piece-by-piece on demand rather than all-at-once. The
77all-at-once behaviour is worth keeping around for smaller images, as
78it gives much nicer scrolling - but for big images it's just
79impractical, hence this feature.
80
81Added a builtin TIFF reader (libtiff-based); TIFFs should be read more
82quickly now.
83
84Also uses builtin JPEG reader (libjpeg-based) for all JPEG reading now
85(not just thumbnails), which is a tiny bit faster. A new command-line
86and config file option `careful-jpeg' lets you enable `fancy
87upsampling', the disabling of which is why Imlib's reader was
88previously faster. (I wouldn't have chosen this as the default if I'd
89known, but enabling it means a 10% slowdown. :-/)
90
91Added support for PRF (ported from zgv), which is basically a kind of
92extrapolated version of my old mrf format - unlike mrf, PRF supports
93greyscale and colour. Thanks to Brian Raiter for both devising the
94format, and writing the reference implementation readprf.c is heavily
95based on.
96
97Recursive thumbnail update no longer reads all thumbnails before doing
98updates - it now only bothers to read visible thumbnails. This makes
99the `fast-recursive-update' option rather less useful, as it's nearly
100that fast already. :-)
101
102Added choice of timestamps to use when sorting in time/date order -
103you can now choose between mtime (default), ctime, and atime. You can
104switch with alt-shift-m/c/a, or from the selector menu's
105Directory/Time & Date Type submenu, or with `sort-timestamp-type'
106option (on command-line or in config file). Thanks for Wolfram Kleff
107for suggesting this.
108
109You can now move to the next/previous tagged file with `/' and `?'
110respectively (or equivalent menu options). When used in the viewer,
111this also views the file.
112
113Toggling all tags is now possible, with Alt-o or Tagging/Toggle All.
114
115Added `delete-single-prompt' option (on command-line and in config
116file) so you can disable the confirmation prompt when deleting a file,
117rather like zgv's `nodelprompt'. Thanks to Martin Bialasinski for
118suggesting this.
119
120Added help menus. Currently just runs info on the relevant node -
121pretty crude, but better than nothing. :-)
122
123Keyboard navigation additions - you can now use shifted cursor keys as
124an alternative means of paging up/down/left/right in the viewer, and
125^u/^v/^a/^e are supported as alternatives to Page Up/Page Down and
126Home/End in both the selector and the viewer.
127
128Any `Menu' key you might have can now be used to show the
129selector/viewer menus, just as right-clicking or pressing F10 does.
130
131
132** Bugfixes
133
134A fix for certain unusual GIFs (with an abnormally large code size -
135larger than even non-LZW GIFs need), which previously caused xzgv to
136segfault. Thanks to Lenart Janos (in particular), Josip Rodin, Chris
137Lawrence, and Andy Mortimer for all helping with this in one way or
138another.
139
140Changed make install's `install -m' invocations to do plain install
141and change permissions after (with chmod). Thanks to Steven Bankowitz
142for reminding me of `-m' being a problem on things like Solaris.
143
144Replaced make install's ifeq/ifneq with shell equivalent, which turns
145out to be sufficient (if uglier). This should avoid the need to use
146GNU make. Thanks to Frank Pohl for spotting this problem.
147
148Previously, the GIF/PNG/mrf file readers failed to notice the problem
149images larger than 32767 in either dimension would cause (by being
150bigger than an X window can handle), leading to a segfault - they now
151give an error.
152
153Fixed bug where (while thumbnails were being loaded) doing things like
154holding down space to storm through N images got it very confused
155indeed.
156
157Concerted attempt to nail all the remaining recursion problems
158(essentially, it could previously get confused if you told it to do
159certain things twice, and it saw the second request while dealing with
160the first). Not perfect though, as the protections are
161independent (do a mirror and flip at about the same time, and it'll
162mess up), so this needs a better fix eventually.
163
164Previously, when you scaled down as far as it would go, it would never
165let you scale down again in the same way, due to breaking an
166anti-recursion measure. Fixed that.
167
168`-lz' was missing from src/Makefile. I usually got away with this, but
169it did break in some cases (perhaps with Imlib 1.9.10?). Thanks to
170Gabor Z. Papp for pointing this out.
171
172The alternative up/down movement keys in the selector (j and k) should
173now work the same way cursor up/down do.
174
175Focus is now returned to selector when changing dir, making the
176past-position action clearer when using the mouse (i.e. if you go down
177into a dir and then back up, the keyboard cursor will show which dir
178you just left). Previously, if you'd viewed an image before changing
179dir with the mouse, focus would have remained on the image.
180
181Now does cursor past-position save/restore `around' recursive update.
182
183As must be traditional by now, I found a bug almost immediately after
184the (0.6) release. :-) Previously you could still toggle thin-rows
185while running in the `xzgv file(s)' way, which was silly and made
186things look strange (but was otherwise harmless).
187
188Fixed redraw-related position problem. (In 0.6, try going to the end
189of the selector's list, pressing `v', then pressing `v' again - the
190row positioning is slightly wrong.)
191
192
193** Other changes
194
195Rendering (and fallback file-reading) is now indirected through the
196new backend.c, which should now be the only part of xzgv dependent on
197Imlib 1.x (well, apart from src/Makefile). This should make it easier
198to switch backends, or to support multiple backends. I've also added
199most of a gdk-pixbuf backend, but I've not been too impressed with the
200performance, and there are some inconvenient omissions which explain
201the current, uh, `partialness'. :-)
202
203Now makes sure a page of thumbnails is visible even when doing
204non-recursive update - previously doing such an update before all
205thumbnails had been read in would show blank spots during the update
206(unlike the now-usual xzgv behaviour of loading onscreen thumbnails
207asap). This only seems to slow it down fractionally (by about 0.5% in
208a large dir full of small files in thin-rows mode), so I think it's
209worth it to get the consistency.
210
211Various changes to the selector and viewer menus, in an attempt to
212tidy things up a bit.
213
214`make install' permissions are now Debian-ish, i.e. explicitly marked
215as writeable by root (rather than implicitly so ;-)), and all
216world-readable.
217
218No longer includes the version number in the window title.
219
220
221* Changes in xzgv 0.6
222
223** New features
224
225Added gamma support, but as with brightness/contrast this is only
226available from the keyboard for now. (This works just like it does in
227zgv, though I added it to xzgv first.) The basic idea is to ignore the
228rather unworkable image/screen gamma distinction, and just use a
229relative gamma with fast shortcuts for common cases. So pressing `1'
230gives a gamma adjustment of 1.0 (i.e. no adjustment), `2' gives 2.2
231(for e.g. viewing linear-gamma files on an average PC monitor), `3'
232gives 1/2.2 (~0.45, for e.g. viewing 2.2-gamma files on a linear-gamma
233display), and `4' reverts to any `--gamma' setting (or 1.0 if none was
234set). You can also use alt-comma and alt-dot for more precise control
235of gamma adjustment. Note that gamma is deliberately *not* reset by
236the brightness/contrast resetting keys.
237
238You can now change the sorting order from the command-line with
239`-o'/`--sort-order' (and from a config file similarly).
240
241
242** Bugfixes
243
244Added my own PNG reader (well, libpng interface :-)), ported from zgv.
245This avoids a couple of Imlib problems - notably, greyscale PNGs are
246now read correctly.
247
248If you omitted the arg to an option in a config file, it would
249segfault. Fixed that, and applied brown paper bag as appropriate. :-)
250It would also previously get stuck in an infinite loop if given a
251bogus geometry arg, and it assumed $HOME was set - both fixed.
252
253GIF reader was previously broken for interlaced GIFs with less than 4
254lines; this broke the heap, leading to difficult-to-pin-down
255segfaults. No longer. :-)
256
257Various portability fixes - thanks to Steven Bankowitz, Juergen Salk,
258and Norio Suzuki for letting me know how 0.5 did on various non-Linux
259systems. I hope xzgv will now compile and run ok on *BSD, Solaris, and
260HP-UX, though there are probably still issues with installation in
261some cases.
262
263Before, when you used decoupled scaling and then rotated a picture, it
264messed up when resetting things for the next picture. Fixed that.
265
266Now copes with copy/move when started as `xzgv file(s)'. It's not
267perfect, in that the selector isn't updated (so after a move things
268can be confusing), but at least it's usable.
269
270When rescanning the directory (in the control-r sense :-)), the
271keyboard cursor now tries to stay at the same place in dir list, for
272consistency with zgv and because it's just nicer. Thanks to Philippe
273Marzouk for spotting this one.
274
275The file details dialog now works fully even when started with `xzgv
276file(s)' (previously the details from any thumbnail were missing).
277
278
279** Other changes
280
281Made icon a bit less indistinct. :-)
282
283
284* Changes in xzgv 0.5
285
286** New features
287
288Massively reduced *apparent* thumbnail load time, by making it jump
289around to whichever part of the directory you're currently looking at.
290(It does eventually fill in any gaps, even if you maliciously keep
291moving around in an attempt to put it off. Not that I had fun testing
292this, or anything. :-)) It's debatable whether this counts as a new
293feature or not, but what the heck...
294
295Clicking on the viewer now moves to the next image. Dragging the
296picture around still works - any mouse movement at all during the
297click, and the picture gets dragged instead. (If you want/need to
298disable this for some reason, you can do so with `click-for-next off'
299in ~/.xzgvrc.) Thanks to Paul E. Johnson for this idea.
300
301Decoupled (axis-specific) scaling, which lets you scale both axes of
302the picture independently. Thanks to Steven Flintham for suggesting
303this. The way this works is analogous to how the `normal' scaling
304works, but hard to explain briefly - you'll have to check the
305`Scaling' section of the info file or man page.
306
307
308** Bugfixes
309
310Fixed a significant memory leak, though you probably wouldn't have
311noticed it unless you did a recursive thumbnail update on a fairly
312well-populated hierarchy. I have a feeling this fix *may* break older
313GTK+ versions; if changing directory segfaults, you need to upgrade.
314:-) It's known to work on at least GTK+ >=1.2.6.
315
316Fixed the MMX stuff, which is now enabled by default again.
317
318Previously, if you had auto-hide and zoom turned on, then turned off
319auto-hide, the picture wasn't rezoomed when the selector was shown -
320fixed that.
321
322Fixed recursion problems in scaling. Thanks to Steven Flintham (again)
323for reminding me about this.
324
325Added preliminary check when reading files from command-line, to get
326rid of (at least in most cases) the window-open-then-close ugliness
327you used to get before a `no files' error message.
328
329Previously, jumping from a large dir to a large dir (or even to a
330small dir, sometimes) could result in the redrawing of the main window
331being noticeably delayed after the dir-change window being destroyed -
332fixed that (mostly).
333
334
335** Other changes
336
337Added short option `-r' for zoom-reduce-only. It's a useful enough
338option that it's worth having a shortcut. :-)
339
340It's now slightly easier to install the info file/man page in an
341FHS-friendly PREFIX/share (e.g. /usr/share/man/man1). However, the
342traditional locations are still the default, as I suspect e.g.
343/usr/local/share/man/man1 is much less widely accepted than
344/usr/local/man/man1. If you're installing in /usr, though,
345uncommenting the SHARE_INFIX line may be a good idea.
346
347Selector rows have been made 2 pixels taller, to allow room for the
348outline cursor to go either side of the thumbnail rather than
349potentially XORing over it. In addition to being a little more
350aesthetically pleasing :-), this works around what seems to be a GTK+
351bug (as of 1.2.7 at least), where scrolling with the cursor keys can
352leave part of the XOR'd cursor outline stuck on the thumbnail (I
353suspect the pixmap is being drawn at the wrong time).
354
355
356* Changes in xzgv 0.4
357
358** New features
359
360Added brightness/contrast, which works in just the same way as in zgv.
361No mouse equivalent yet though, as I'm having some difficulty thinking
362of a reasonable way to do it. (I may even end up (ab)using a modal
363dialog for it, which would be *odd* but may be the least unreasonable
364approach given the way xzgv works in general.) I'd ended up putting it
365off for a while to ponder this, but in the end decided to get it done
366and add the mousey version later.
367
368Added file rename. The key it's on is heavily suboptimal (^n), but all
369the good ones were taken. :-) Menu-wise it's ok though.
370
371You can now use j/k for down/up in the selector, as vi-like
372alternatives to the cursor keys.
373
374
375** Bugfixes
376
377Fixed the problem with toggling zoom off and on quickly, where
378scrollbars were disabled but an unzoomed image was shown instead of a
379zoomed one.
380
381Now avoids the nasty `shear' effect you got when updating thumbnails
382and it needed to scroll the window before updating a thumbnail.
383
384
385** Other changes
386
387I've (temporarily, I hope) disabled the MMX stuff by default; some
388people were having trouble compiling with that enabled. You can still
389enable it by editing config.mk.
390
391Renamed `Exit viewer' menu item to `Exit to Selector', which should
392make the meaning less ambiguous.
393
39415/16-bit dithering can now be toggled with shift-f, by analogy with
395zgv's `fakecols' toggle.
396
397
398* Changes in xzgv 0.3
399
400** New features
401
402Added file copy/move. These work like zgv - copy/move tagged files if
403any tagged, otherwise copy/move the file the cursor is on. (Being
404zgv-like also means they stop if they run across an existing file,
405which can be a little annoying but is probably safest.)
406
407Scaling can now scale the image *down* as well as up. That is, you can
408make the image smaller more controllably than you can by using zoom
409mode. I thought I'd add this as, given the way Imlib works, it comes
410very cheaply indeed. However, it tends to only be useful (i.e. be any
411advantage over zoom mode) on big images, where you might want to scale
412down a bit rather than a lot. One thing I should point out - if you've
413got used to doing e.g. shift-d lots to get back to 1:1, you'll just
414have to learn about the `n' (= Scaling/Normal) key... :-)
415
416You can now set the selector's initial/default width with
417`--selector-width' (or config file setting).
418
419You can now use `-k' or `--skip-parent' (or config file entry) to skip
420the (keyboard) cursor past `..' on the directory xzgv starts on. This
421can be useful when you want to immediately use space to `page' through
422a dir. Thanks to Steven Flintham for this idea.
423
424New `invert-logo' config file option, flips the colours in the logo to
425look less awful on dark GTK+ themes. :-)
426
427
428** Bugfixes
429
430The idle_zoom_resize() idle func is now default priority rather than
431resize priority. This fixes a problem where zoom mode resizes were one
432resize behind (!) - thanks to Steven Flintham for pointing this out.
433
434Various things which implicitly turned off zoom mode (basically
435scaling and `normal') didn't reenable scrollbars afterwards; fixed
436that.
437
438Added getopt.[ch] and getopt1.c from glibc, so things should hopefully
439still work on a libc which lacks getopt_long().
440
441Fixed a couple of spurious blank lines in man page.
442
443
444** Other changes
445
446Added MMX-aware version of scaling with interpolation code (using a
447bundled copy of Hank Dietz/Randy Fisher's libmmx). According to my
448tests, it's `only' about 35% faster, but it feels like more. :-)
449(Don't worry, it's easily disabled at compile time, it's clueful about
450when it uses it even when it's enabled, etc. - I haven't broken
451anything.)
452
453Removed mention of the forfree.at email address, which seems to be
454b0rken :-(, and replaced with my actual current address.
455
456Created an `AUTHORS' file (which just points at the main docs, I'm
457sure a duplicate copy would get out of date :-)).
458
459
460* Changes in xzgv 0.2
461
462** New features
463
464Generation of thumbnails is *much* faster. This is partly due to
465inclusion of the JPEG speedup code contributed to zgv (way back when)
466by Costa Sapuntzakis, and partly due to a generic adaptation of that
467approach I've added which is now used for all other files. xzgv should
468now generate thumbnails at a similar speed to xv overall - it's a bit
469faster on JPEGs, but a bit slower on other files.
470
471Added recursive thumbnail update. One problem with this is that it
472reads all existing thumbnails in a dir before updating (like xv, IIRC)
473to try and avoid having a really ugly selector during the update :-),
474though you can disable this with `--fast-recursive-update' or an
475equivalent config file line.
476
477Added `-g'/`--geometry' option (and config file setting), which lets
478you set the xzgv window's geometry in the usual X fashion. As an
479extension, all positions/sizes can be given as percentages of the
480screen size, e.g. `92%x85%'.
481
482Now has tagging - `-' untags, `=' tags, and with Alt (Meta) they
483untag/tag all. As for the mouse, ctrl-click tags/untags, and there's
484now a File menu which has items for tag/untag, and tag/untag all. From
485the viewer, you can tag (though not untag) with ctrl-space, which tags
486the current file then moves to the next image. One problem with
487tagging is that, at the moment, only the new `-T' (or `--show-tagged')
488option takes any notice of whether a file is tagged or not. :-) Copy,
489move, and (multi-file) delete should be added `soon', possibly with
490slideshows after that.
491
492`File details' popup (on `:', `;', and Selector menu, File, Details)
493shows size, date/time, etc. of the file under the keyboard cursor, or
494the file right-clicked on when the selector's menu was popped up.
495(This is also how the tag/untag menu items work, though in that case
496using ctrl-click is obviously more convenient.)
497
498Added file delete with confirmation (on ctrl-d and Selector menu,
499File, Delete). The way the file to delete is selected is the same as
500for `file details'.
501
502There's now a reduce-only option for zoom mode, meaning you can have
503xzgv fit big pictures to the window without having tiny icons etc.
504balloon up and look horrible. It's not the default, but you can enable
505it with Alt-r or the viewer options menu's "When Zooming Reduce Only"
506toggle or `--zoom-reduce-only' or equivalent config file setting.
507Thanks to Steven Flintham and Robert Braddock for this idea.
508
509Middle-clicking on the viewer now toggles the selector rather than
510always acting like Exit viewer. Thanks to Steven Flintham for
511suggesting this.
512
513`go to dir' dialog. (Only text-entry for now (!), but I'll probably
514extend it at some point.) On shift-g, and Directory/Change.
515
516You can now `close' a file (clear the viewer). On ctrl-w, and
517File/Close.
518
519Added a way to rescan a directory (ctrl-r, Directory/Rescan).
520
521You can now set whether to use 15/16-bit dithering or not independent
522of Imlib's default setting. The option is Options/Dither in 15 &
52316-bit on the viewer menu, and can also be set by --dither-hicol or
524equivalent config file setting.
525
526
527** Bugfixes
528
529It previously segfaulted on files less than 4 bytes long due to a
530typo. Um, whoops... :-}
531
532Previously it would hang on some corrupt GIFs. The fix for this
533reflects the one in zgv 5.0, and thanks go to Andy Mortimer for the
534fix (to zgv, but it (currently) applies to xzgv too).
535
536Fixed problem where xzgv's moving the focused row `by hand' sometimes
537messed up the display. And similarly, when the selector lost focus due
538to selecting a picture, it previously didn't undraw the focused row.
539
540It now copes with being started in an unreadable dir, and avoids
541selecting files/dirs it doesn't have sufficient permissions for.
542
543Pixmaps for dirs and thumbnailless pics are now shaped, rather than
544having an ugly white background.
545
546Fixed bug where, if you enabled zoom on a picture of nearly the same
547shape as the viewer window, it left the scrollbars on.
548
549Esc now exits an error dialog (making it consistent with the other ones).
550
551It no longer keeps saying "Reading file..." on the statusbar if a file
552couldn't be read.
553
554
555** Other changes
556
557Thumbnail updates now make sure any row a thumbnail is being updated
558for is visible, making the update look more like it does in zgv - as
559well as making it rather more clear what's going on. :-)
560
561Bothered giving it a half-decent logo. :-) Also has a similar icon.
562
563Replaced the directory/file-without-thumbnail icons with nicer ones.
564They're loosely based on gmc's `dir-close.xpm', which I think Tuomas
565Kuosmanen was responsible for (judging from the change log). Thanks
566also to Steven Flintham for pointing out that the old icons were
567pretty crap. :-)
568
569Changed Sort Order menu items to be `Sort by Name' etc. under new
570`Directory' menu to accomodate `Change' and `Rescan'.
571
572Error dialogs look a bit better.
573
574Install targets now use `mkinstalldirs' (from texinfo) to make paths
575to installation dirs first. It seems the FHS guarantees little if
576anything about /usr/local, so this is basically required rather than
577merely being a good idea.
578
579
580* Changes in xzgv 0.1
581
582** New features
583
584Everything. :-)
585