Skip to content

Commit

Permalink
Existing object is preserved when a change occurs
Browse files Browse the repository at this point in the history
  • Loading branch information
slusarz committed Jun 5, 2014
1 parent a7b9c0a commit d3e1097
Showing 1 changed file with 34 additions and 22 deletions.
56 changes: 34 additions & 22 deletions imp/js/dimpbase.js
Expand Up @@ -3306,9 +3306,7 @@ var DimpBase = {
}

if (r.c) {
r.c.each(function(m) {
this.flist.createMbox(m, true);
}, this);
r.c.each(this.flist.changeMbox.bind(this.flist));
}

if (r.a && !r.noexpand) {
Expand Down Expand Up @@ -3429,7 +3427,7 @@ var DimpBase = {

_toggleSubFolder: function(base, mode, noeffect, noexpand)
{
var loadMboxes, toggleIcon,
var loadMboxes,
collapse = [], expand = [], subs = [],
need = $H();

Expand Down Expand Up @@ -3474,12 +3472,6 @@ var DimpBase = {
}
}

toggleIcon = function(m)
{
m = this.flist.getMbox(m);
m.expand(!m.expand());
}.bind(this);

loadMboxes = function(m, e)
{
var ed;
Expand All @@ -3495,12 +3487,11 @@ var DimpBase = {
mboxes: [ m.value() ]
}, true);

m = this.flist.getMbox(m.value());
this.setMboxLabel(m);

/* Need to update sizing since it is calculated at instantiation
* before the submailbox DIV contained anything. */
ed = this.flist.getMbox(m.value()).subElement().getDimensions();
ed = m.subElement().getDimensions();
e.options.scaleMode = {
originalHeight: ed.height,
originalWidth: ed.width
Expand All @@ -3525,15 +3516,17 @@ var DimpBase = {

if (noeffect && !need.get(mbox.value())) {
s.toggle();
toggleIcon(mbox);
mbox.expand(!mbox.expand());
} else {
Effect.toggle(s, 'blind', {
beforeStart: function(e) {
if (need.get(mbox.value())) {
loadMboxes(mbox, e);
}
},
afterFinish: toggleIcon.curry(mbox.value()),
afterFinish: function() {
mbox.expand(!mbox.expand());
},
duration: noeffect ? 0 : 0.2,
queue: {
limit: 1,
Expand Down Expand Up @@ -4083,9 +4076,19 @@ var IMP_Flist = Class.create({
delete this.mboxes[m];
},

createMbox: function(ob, force)
changeMbox: function(ob)
{
if (this.mboxes[ob.m]) {
this.mboxes[ob.m].build(this, ob);
this.mboxes[ob.m].element().fire('IMP_Flist:create');
} else {
this.createMbox(ob);
}
},

createMbox: function(ob)
{
if (force || !this.mboxes[ob.m]) {
if (!this.mboxes[ob.m]) {
this.mboxes[ob.m] = new IMP_Flist_Mbox(this, ob);
this.mboxes[ob.m].element().fire('IMP_Flist:create');
}
Expand Down Expand Up @@ -4131,8 +4134,18 @@ var IMP_Flist_Mbox = Class.create({
// For format of the ob object, see IMP_Queue#_ftreeElt().
initialize: function(flist, ob)
{
var div, f_node, ll, mbox, parent_c, parent_e, title, tmp,
cname = 'imp-sidebar-container';
this.build(flist, ob);
},

build: function(flist, ob)
{
var div, f_node, ll, old_elt, parent_c, parent_e, title, tmp,
cname = 'imp-sidebar-container',
mbox = flist.getMbox(ob.m);

if (mbox) {
old_elt = mbox.element();
}

// Extra fields: dummy, elt, fixed, unseen
this.data = ob;
Expand Down Expand Up @@ -4183,10 +4196,9 @@ var IMP_Flist_Mbox = Class.create({
.insert(new Element('DIV', { className: 'horde-subnavi-point' })
.insert(new Element('A').insert(this.label())));

mbox = flist.getMbox(ob.m);
if (mbox) {
mbox.element().fire('IMP_Flist:delete');
mbox.element().replace(this.data.elt);
if (old_elt) {
old_elt.fire('IMP_Flist:delete');
old_elt.replace(this.data.elt);
} else {
if (ob.s) {
parent_e = $('imp-specialmboxes');
Expand Down

0 comments on commit d3e1097

Please sign in to comment.