diff --git a/ui/TODO.otl b/ui/TODO.otl index 377003a7..43744eb4 100755 --- a/ui/TODO.otl +++ b/ui/TODO.otl @@ -117,6 +117,28 @@ Roadmap | | Appears to be the same symptoms as the las worker bug (export)... | ...i.e. workers running but not being removed from pool... + [_] BUG: prev/next ribbon in single image view after long jump is wrong... + | to reproduce: + | - ribbon counts: + | - current: ~146 + | - target: ~108 + | - Home + | - Enter (to single image mode) + | - End + | - Up/Down + | + | expected: + | - loaded image is above current... + | + | result: + | - loaded image is somewhere in the middle... + | + | reason: + | we are not updating invisible ribbons... + | + | projected solution: + | load adjacent ribbons on long jumps or when they reach end... + | use showImage to load the correct image... [_] BUG: close button does not work on stalled progress bars... [_] BUG: chrome 32 / nw 0.9.1: flicker on preview swap... | an image get's repainted black and only then the new preview diff --git a/ui/modes.js b/ui/modes.js index 53ff0952..0fa1f605 100755 --- a/ui/modes.js +++ b/ui/modes.js @@ -169,6 +169,10 @@ var toggleSingleImageMode = createCSSClassToggler( // TODO transitions... // TODO a real setup UI (instead of prompt) +// +// XXX avoid using globals: +// _pre_slideshow_marks_view +// _slideshow_timer var toggleSlideShowMode = createCSSClassToggler( '.viewer', '.slideshow-mode', @@ -176,6 +180,9 @@ var toggleSlideShowMode = createCSSClassToggler( if(action == 'on'){ updateStatus('Slideshow...').show() + // XXX hackish... + _pre_slideshow_marks_view = toggleMarksView('?') + // interval from user... //var interval = prompt('Slideshow interval (sec):', SLIDESHOW_INTERVAL/1000) formDialog($('.viewer'), 'Slideshow', { @@ -216,6 +223,8 @@ var toggleSlideShowMode = createCSSClassToggler( hideOverlay($('.viewer')) toggleSingleImageMode('on') + toggleMarksView('off') + _slideshow_timer = setInterval(function(){ var cur = getImage() // advance the image... @@ -227,6 +236,8 @@ var toggleSlideShowMode = createCSSClassToggler( SLIDESHOW_DIRECTION == 'next' ? firstImage() : lastImage() } else { toggleSlideShowMode('off') + toggleMarksView(window._pre_slideshow_marks_view == null ? 'on' + : window._pre_slideshow_marks_view) return } } @@ -238,11 +249,15 @@ var toggleSlideShowMode = createCSSClassToggler( // user cancelled... .fail(function(){ toggleSlideShowMode('off') + toggleMarksView(window._pre_slideshow_marks_view == null ? 'on' + : window._pre_slideshow_marks_view) }) } else { window._slideshow_timer != null && clearInterval(_slideshow_timer) showStatus('Slideshow: canceled.') + toggleMarksView(window._pre_slideshow_marks_view == null ? 'on' + : window._pre_slideshow_marks_view) hideOverlay($('.viewer')) } })