77 lines
2.5 KiB
JavaScript
77 lines
2.5 KiB
JavaScript
|
/*
|
||
|
* This file is part of Toolkit.
|
||
|
*
|
||
|
* Toolkit is free software; you can redistribute it and/or
|
||
|
* modify it under the terms of the GNU General Public
|
||
|
* License as published by the Free Software Foundation; either
|
||
|
* version 3 of the License, or (at your option) any later version.
|
||
|
*
|
||
|
* Toolkit is distributed in the hope that it will be useful,
|
||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||
|
* Lesser General Public License for more details.
|
||
|
*
|
||
|
* You should have received a copy of the GNU General
|
||
|
* Public License along with this program; if not, write to the
|
||
|
* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||
|
* Boston, MA 02110-1301 USA
|
||
|
*/
|
||
|
"use strict";
|
||
|
(function(w, TK){
|
||
|
function visibility_change() {
|
||
|
if (document.hidden) {
|
||
|
this.disable_draw();
|
||
|
} else {
|
||
|
this.enable_draw();
|
||
|
}
|
||
|
}
|
||
|
function resized() {
|
||
|
if (!this.resize_event) {
|
||
|
this.resize_event = true;
|
||
|
this.trigger_resize();
|
||
|
}
|
||
|
}
|
||
|
/**
|
||
|
* TK.Root is used to force a resize on all its child widgets
|
||
|
* as soon as the browser window is resized. It also toggles drawing
|
||
|
* of its children depending on the state of visibility of the
|
||
|
* browser tab or browser window.
|
||
|
*
|
||
|
* @extends TK.Container
|
||
|
*
|
||
|
* @class TK.Root
|
||
|
*/
|
||
|
TK.Root = TK.class({
|
||
|
Extends: TK.Container,
|
||
|
_class: "Root",
|
||
|
_options: Object.create(TK.Container.prototype._options),
|
||
|
static_events: {
|
||
|
initialized: function () {
|
||
|
window.addEventListener("resize", this._resize_cb);
|
||
|
document.addEventListener("visibilitychange", this._visibility_cb, false);
|
||
|
this.enable_draw();
|
||
|
},
|
||
|
destroy: function() {
|
||
|
window.removeEventListener("resize", this._resize_cb);
|
||
|
document.removeEventListener("visibilitychange", this._visibility_cb)
|
||
|
this._resize_cb = this._visibility_cb = null;
|
||
|
},
|
||
|
redraw: function() {
|
||
|
if (this.resize_event)
|
||
|
this.resize_event = false;
|
||
|
},
|
||
|
},
|
||
|
initialize: function (options) {
|
||
|
TK.Container.prototype.initialize.call(this, options);
|
||
|
/**
|
||
|
* @member {HTMLDivElement} TK.Root#element - The main DIV container.
|
||
|
* Has class <code>toolkit-root</code>.
|
||
|
*/
|
||
|
TK.add_class(this.element, "toolkit-root");
|
||
|
this._resize_cb = resized.bind(this);
|
||
|
this._visibility_cb = visibility_change.bind(this);
|
||
|
this.resize_event = false;
|
||
|
},
|
||
|
});
|
||
|
})(this, this.TK);
|