From 62fe751973cd124fa7f0c8876827d22af2c10386 Mon Sep 17 00:00:00 2001 From: "Alex A. Naanou" Date: Fri, 13 Sep 2013 23:13:16 +0400 Subject: [PATCH] fixed crop bug -- turned out to be a dependency leak in getGIDBefore(...) that got the current ribbon form DOM, implicitly requering DOM and data to be in sync which is conceptually wrong... Signed-off-by: Alex A. Naanou --- ui/base.js | 1 + ui/data.js | 19 +++++++++++++++++-- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/ui/base.js b/ui/base.js index 1f76fdd6..e3368dd5 100755 --- a/ui/base.js +++ b/ui/base.js @@ -132,6 +132,7 @@ function getRibbon(image){ } +// XXX make this not depend on DOM... a-la getImageBefore vs. getGIDBefore // NOTE: elem is optional and if given can be an image or a ribbon... function getRibbonIndex(elem){ if(elem == null){ diff --git a/ui/data.js b/ui/data.js index 8bd910c1..f4bcef87 100755 --- a/ui/data.js +++ b/ui/data.js @@ -521,14 +521,29 @@ function normalizePath(url, base, mode){ } +// like getRibbonIndex but get the index only via DATA... +function getDataRibbonIndex(gid, data){ + gid = gid == null ? getImageGID() : gid + data = data == null ? DATA : data + + for(var i=0; i < data.ribbons.length; i++){ + if(data.ribbons[i].indexOf(gid) >= 0){ + return i + } + } + return -1 +} + // Same as getImageBefore(...), but uses gids and searches in DATA... // // NOTE: this uses it's own predicate... function getGIDBefore(gid, ribbon, search, data){ gid = gid == null ? getImageGID() : gid - ribbon = ribbon == null ? getRibbonIndex() : ribbon - search = search == null ? binSearch : search data = data == null ? DATA : data + // XXX get a ribbon without getting into DOM... + // ...dependency leek... + ribbon = ribbon == null ? getDataRibbonIndex(gid, data) : ribbon + search = search == null ? binSearch : search //search = search == null ? match2(linSearch, binSearch) : search ribbon = data.ribbons[ribbon] var order = data.order