summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMorten Sorvig <msorvig@trolltech.com>2009-08-06 06:10:48 +0200
committerMorten Sorvig <msorvig@trolltech.com>2009-08-06 06:10:48 +0200
commit4746918d1c201259351ced410329edb50d7f4cce (patch)
treeb367066ff6a06ac2fa38783dd207c1137187c045 /src
parentf2f99012d62802a8cbd0200788efdf8d3479bbed (diff)
Delay showing image-based elements until the image has been downloaded
Diffstat (limited to 'src')
-rw-r--r--src/eventhandler.js31
1 files changed, 27 insertions, 4 deletions
diff --git a/src/eventhandler.js b/src/eventhandler.js
index e4e3b0c..c4102b5 100644
--- a/src/eventhandler.js
+++ b/src/eventhandler.js
@@ -19,13 +19,15 @@ function createWidgetElement(pointer)
element.id = this.elmentId(pointer);
element["pointer"] = pointer;
element.className = "divWidget";
- element.style.visibility = "visible";
+ element.imageLoaded = false;
+ hideElement(element);
document.body.appendChild(element);
dojo.connect(element, 'onmousedown', this, sendMousePressed);
dojo.connect(element, 'onmouseup', this, sendMouseReleased);
dojo.connect(element, 'ondblclick', this, sendMouseDoubleClick);
dojo.connect(element, 'onkeypress', this, sendKeyPress);
+ dojo.connect(element, 'onload', this, imageLoaded);
return element;
}
@@ -97,6 +99,28 @@ function createElement(widgetType, id)
return element;
}
+function showElement(element)
+{
+ // delay showing of generic widgets until the image has ben loaded,
+ if (element.className == "divWidget") {
+ if (element.imageLoaded)
+ element.style.visibility = "visible";
+ } else {
+ element.style.visibility = "visible";
+ }
+}
+
+function hideElement(element)
+{
+ element.style.visibility = "hidden";
+}
+
+function imageLoaded(event)
+{
+ event.target.imageLoaded = true;
+ event.target.style.visibility = "visible";
+}
+
function updateText(element, text)
{
// console.log("update text" + text + " " + element.nodeName);
@@ -194,7 +218,6 @@ function eventHandler(text)
var source = this.jsonUrl + JSON.stringify({ "type" : "img", "id" : widget, "rand" : Math.random()});
element.src = source;
- element.style.visibility = "visible";
} else if (type == "geometry") {
console.log("geometry x " + event.x + " y " + event.y + " w " + event.w + " h " + event.h);
this.moveElement(element, event.x, event.y)
@@ -208,9 +231,9 @@ function eventHandler(text)
}
} else if (type == "hide") {
- element.style.visibility = "hidden";
+ hideElement(element);
} else if (type == "show") {
- element.style.visibility = "visible";
+ showElement(element);
} else if (type == "parentChange") {
// alert("parentChange");
var parentPointer = array[key].parent;