call gc before focus/blur to remove elements from focus stack that are no longer around

This commit is contained in:
j 2012-01-21 11:30:16 +00:00
parent 05b4d0cf82
commit e51c4aa847
2 changed files with 9 additions and 4 deletions

View file

@ -19,6 +19,7 @@ Ox.Focus = (function() {
(id) -> <u> blur element by id
@*/
blur: function(id) {
Ox.GarbageCollection();
var index = stack.indexOf(id);
if (index > -1 && index == stack.length - 1) {
stack.length == 1
@ -40,6 +41,7 @@ Ox.Focus = (function() {
(id) -> <u> focus element by id
@*/
focus: function(id) {
Ox.GarbageCollection();
var index = stack.indexOf(id);
if (index == -1 || index < stack.length - 1) {
index > -1 && stack.splice(index, 1);
@ -47,7 +49,7 @@ Ox.Focus = (function() {
if (stack.length > 1) {
Ox.UI.elements[stack[stack.length - 2]]
.removeClass('OxFocus')
.triggerEvent('losefocus')
.triggerEvent('losefocus');
}
Ox.UI.elements[id]
.addClass('OxFocus')

View file

@ -3,10 +3,11 @@
Ox.GarbageCollection = (function() {
var that = function() {
collect();
};
collect();
},
timeout;
setInterval(collect, 60000);
collect();
function collect() {
var len = Ox.len(Ox.UI.elements);
@ -19,6 +20,8 @@ Ox.GarbageCollection = (function() {
delete Ox.UI.elements[id];
}
});
timeout && clearTimeout(timeout);
timeout = setTimeout(collect, 60000);
Ox.Log('GC', len, '-->', Ox.len(Ox.UI.elements));
}