[pve-devel] [PATCH manager 1/4] ext6migrate: update Ext.ux.IFrame code in Toolkit.js
Dominik Csapak
d.csapak at proxmox.com
Fri Feb 26 15:33:43 CET 2016
update to current code from framework
makes it working again
Signed-off-by: Dominik Csapak <d.csapak at proxmox.com>
---
www/manager6/Toolkit.js | 65 ++++++++++++++++++++++++++++++-------------------
1 file changed, 40 insertions(+), 25 deletions(-)
diff --git a/www/manager6/Toolkit.js b/www/manager6/Toolkit.js
index 351cd8b..881e43a 100644
--- a/www/manager6/Toolkit.js
+++ b/www/manager6/Toolkit.js
@@ -122,22 +122,14 @@ Ext.define('Ext.ux.IFrame', {
src: 'about:blank',
renderTpl: [
- '<iframe src="{src}" name="{frameName}" width="100%" height="100%" frameborder="0"></iframe>'
+ '<iframe src="{src}" id="{id}-iframeEl" data-ref="iframeEl" name="{frameName}" width="100%" height="100%" frameborder="0"></iframe>'
],
+ childEls: ['iframeEl'],
initComponent: function () {
this.callParent();
- this.frameName = this.frameName || this.id + '-frame';
-
- this.addEvents(
- 'beforeload',
- 'load'
- );
-
- Ext.apply(this.renderSelectors, {
- iframeEl: 'iframe'
- });
+ this.frameName = this.frameName || this.id + '-frame';
},
initEvents : function() {
@@ -190,9 +182,9 @@ Ext.define('Ext.ux.IFrame', {
if (this.rendered) {
try {
- doc = this.getDoc();
+ doc = this.getDoc();
if (doc) {
- Ext.EventManager.removeAll(doc);
+ Ext.get(doc).un(this._docListeners);
if (destroying) {
for (prop in doc) {
if (doc.hasOwnProperty && doc.hasOwnProperty(prop)) {
@@ -212,32 +204,32 @@ Ext.define('Ext.ux.IFrame', {
if (doc) {
try {
- Ext.EventManager.removeAll(doc);
-
// These events need to be relayed from the inner document (where they stop
// bubbling) up to the outer document. This has to be done at the DOM level so
// the event reaches listeners on elements like the document body. The effected
// mechanisms that depend on this bubbling behavior are listed to the right
// of the event.
- Ext.EventManager.on(doc, {
- mousedown: fn, // menu dismisal (MenuManager) and Window onMouseDown (toFront)
- mousemove: fn, // window resize drag detection
- mouseup: fn, // window resize termination
- click: fn, // not sure, but just to be safe
- dblclick: fn, // not sure again
- scope: me
- });
+ Ext.get(doc).on(
+ me._docListeners = {
+ mousedown: fn, // menu dismisal (MenuManager) and Window onMouseDown (toFront)
+ mousemove: fn, // window resize drag detection
+ mouseup: fn, // window resize termination
+ click: fn, // not sure, but just to be safe
+ dblclick: fn, // not sure again
+ scope: me
+ }
+ );
} catch(e) {
// cannot do this xss
}
// We need to be sure we remove all our events from the iframe on unload or we're going to LEAK!
- Ext.EventManager.on(this.getWin(), 'beforeunload', me.cleanupListeners, me);
+ Ext.get(this.getWin()).on('beforeunload', me.cleanupListeners, me);
this.el.unmask();
this.fireEvent('load', this);
- } else if(me.src && me.src != '') {
+ } else if (me.src) {
this.el.unmask();
this.fireEvent('error', this);
@@ -246,6 +238,29 @@ Ext.define('Ext.ux.IFrame', {
},
+ onRelayedEvent: function (event) {
+ // relay event from the iframe's document to the document that owns the iframe...
+
+ var iframeEl = this.iframeEl,
+
+ // Get the left-based iframe position
+ iframeXY = iframeEl.getTrueXY(),
+ originalEventXY = event.getXY(),
+
+ // Get the left-based XY position.
+ // This is because the consumer of the injected event will
+ // perform its own RTL normalization.
+ eventXY = event.getTrueXY();
+
+ // the event from the inner document has XY relative to that document's origin,
+ // so adjust it to use the origin of the iframe in the outer document:
+ event.xy = [iframeXY[0] + eventXY[0], iframeXY[1] + eventXY[1]];
+
+ event.injectEvent(iframeEl); // blame the iframe for the event...
+
+ event.xy = originalEventXY; // restore the original XY (just for safety)
+ },
+
load: function (src) {
var me = this,
text = me.loadMask,
--
2.1.4
More information about the pve-devel
mailing list