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