From da49103a533e92e9b6ad871969011fe6949a3dcd Mon Sep 17 00:00:00 2001 From: "Alex A. Naanou" Date: Thu, 30 Oct 2014 03:27:11 +0300 Subject: [PATCH] found an odd bug, worked around it, need to understand it! Signed-off-by: Alex A. Naanou --- ui (gen4)/ui.js | 9 ++++++++- ui (gen4)/viewer.js | 40 ++++++++++++++++++++++------------------ 2 files changed, 30 insertions(+), 19 deletions(-) diff --git a/ui (gen4)/ui.js b/ui (gen4)/ui.js index 62a7bbbd..91cbc17d 100755 --- a/ui (gen4)/ui.js +++ b/ui (gen4)/ui.js @@ -169,11 +169,18 @@ $(function(){ window.a = testing.setupActions() // setup features... + // XXX I do not full understand it yet, but PartialRibbons must be + // setup BEFORE RibbonAlignToFirst, otherwise the later will break + // on shifting an image to a new ribbon... + // To reproduce: + // - setupe RibbonAlignToFirst first + // - go to top ribbon + // - shift image up + viewer.PartialRibbons.setup(a) viewer.RibbonAlignToOrder.setup(a) //viewer.RibbonAlignToFirst.setup(a) viewer.ShiftAnimation.setup(a) viewer.BoundsIndicators.setup(a) - viewer.PartialRibbons.setup(a) // this publishes all the actions... //module.GLOBAL_KEYBOARD.__proto__ = a diff --git a/ui (gen4)/viewer.js b/ui (gen4)/viewer.js index 5eec87a9..17579572 100755 --- a/ui (gen4)/viewer.js +++ b/ui (gen4)/viewer.js @@ -22,14 +22,10 @@ var reloadAfter = module.reloadAfter = function reloadAfter(transitions){ return function(){ - // prevent animations form adding/removing ribbons... - !transitions && this.ribbons.preventTransitions() - return function(){ // NOTE: this may seem like cheating, but .reload() should // be very efficient, reusing all of the items loaded... this.reload() - !transitions && this.ribbons.restoreTransitions() } } } @@ -528,7 +524,6 @@ actions.Actions(Client, { // align modes... // XXX skip invisible ribbons (???) - // XXX load data chunks... alignByOrder: ['Align ribbons by image order', function(target){ var ribbons = this.ribbons @@ -554,8 +549,6 @@ actions.Actions(Client, { // XXX skip off-screen ribbons... - // XXX see if we need to do some loading... - // center... // XXX is there a 'last' special case here??? var t = data.getImage(gid, r) @@ -899,13 +892,20 @@ module.FeatureProto = { var Feature = module.Feature = function Feature(obj){ - obj.__proto__ = this.FeatureProto + obj.__proto__ = FeatureProto return obj } -// XXX revise... +// XXX I do not fully understand it yet, but PartialRibbons must be +// setup BEFORE RibbonAlignToFirst, otherwise the later will break +// on shifting an image to a new ribbon... +// To reproduce: +// - setupe RibbonAlignToFirst first +// - go to top ribbon +// - shift image up +// The two should be completely independent.... // XXX need to test and tweak with actual images... var PartialRibbons = module.PartialRibbons = Feature({ @@ -947,18 +947,22 @@ module.PartialRibbons = Feature({ // loaded more than we need by threshold... || nl + pl + 1 > s + t){ - // localize transition prevention... // NOTE: we can't get ribbon via target directly here as // the target might not be loaded... - var r = this.ribbons.getRibbon(this.data.getRibbon(target)) + var r_gid = this.data.getRibbon(target) - this.ribbons - .preventTransitions(r) - .updateRibbon( - this.data.getImages(target, s), - this.data.getRibbon(target), - target) - .restoreTransitions(r, true) + // localize transition prevention... + var r = this.ribbons.getRibbon(r_gid) + + if(r.length > 0){ + this.ribbons + .preventTransitions(r) + .updateRibbon( + this.data.getImages(target, s), + r_gid, + target) + .restoreTransitions(r, true) + } } }