Save ui position only once.

I noticed that Chrome deletes empty localStorage keys when closing it.
Dragging the QR to the bottom right would save empty top/right keys, resulting in its position reset
when restarting the browser.
This commit is contained in:
Nicolas Stepien 2011-09-17 22:17:05 +02:00
parent e9343bff56
commit 716c34aa7c
2 changed files with 22 additions and 21 deletions

View File

@ -199,23 +199,25 @@
}; };
ui = { ui = {
dialog: function(id, position, html) { dialog: function(id, position, html) {
var el, left, top, _ref, _ref2; var el, left, saved, top;
el = d.createElement('div'); el = d.createElement('div');
el.className = 'reply dialog'; el.className = 'reply dialog';
el.innerHTML = html; el.innerHTML = html;
el.id = id; el.id = id;
left = position.left, top = position.top; if (saved = localStorage["" + NAMESPACE + id + ".position"]) {
left = (_ref = localStorage["" + NAMESPACE + id + "Left"]) != null ? _ref : left; el.style.cssText = saved;
top = (_ref2 = localStorage["" + NAMESPACE + id + "Top"]) != null ? _ref2 : top;
if (left) {
el.style.left = left;
} else { } else {
el.style.right = 0; left = position.left, top = position.top;
} if (left) {
if (top) { el.style.left = left;
el.style.top = top; } else {
} else { el.style.right = 0;
el.style.bottom = 0; }
if (top) {
el.style.top = top;
} else {
el.style.bottom = 0;
}
} }
el.querySelector('div.move').addEventListener('mousedown', ui.dragstart, false); el.querySelector('div.move').addEventListener('mousedown', ui.dragstart, false);
return el; return el;
@ -259,8 +261,7 @@
var el, id; var el, id;
el = ui.el; el = ui.el;
id = el.id; id = el.id;
localStorage["" + NAMESPACE + id + "Left"] = el.style.left; localStorage["" + NAMESPACE + id + ".position"] = el.style.cssText;
localStorage["" + NAMESPACE + id + "Top"] = el.style.top;
d.removeEventListener('mousemove', ui.drag, false); d.removeEventListener('mousemove', ui.drag, false);
return d.removeEventListener('mouseup', ui.dragend, false); return d.removeEventListener('mouseup', ui.dragend, false);
}, },

View File

@ -126,11 +126,12 @@ ui =
el.className = 'reply dialog' el.className = 'reply dialog'
el.innerHTML = html el.innerHTML = html
el.id = id el.id = id
{left, top} = position if saved = localStorage["#{NAMESPACE}#{id}.position"]
left = localStorage["#{NAMESPACE}#{id}Left"] ? left el.style.cssText = saved
top = localStorage["#{NAMESPACE}#{id}Top"] ? top else
if left then el.style.left = left else el.style.right = 0 {left, top} = position
if top then el.style.top = top else el.style.bottom = 0 if left then el.style.left = left else el.style.right = 0
if top then el.style.top = top else el.style.bottom = 0
el.querySelector('div.move').addEventListener 'mousedown', ui.dragstart, false el.querySelector('div.move').addEventListener 'mousedown', ui.dragstart, false
el el
dragstart: (e) -> dragstart: (e) ->
@ -170,8 +171,7 @@ ui =
#a = (b = c.b, c).a; #a = (b = c.b, c).a;
{el} = ui {el} = ui
{id} = el {id} = el
localStorage["#{NAMESPACE}#{id}Left"] = el.style.left localStorage["#{NAMESPACE}#{id}.position"] = el.style.cssText
localStorage["#{NAMESPACE}#{id}Top"] = el.style.top
d.removeEventListener 'mousemove', ui.drag, false d.removeEventListener 'mousemove', ui.drag, false
d.removeEventListener 'mouseup', ui.dragend, false d.removeEventListener 'mouseup', ui.dragend, false
hover: (e) -> hover: (e) ->