For those, who deals with browser plugins, here is a short mixin to protect 
widgets from overlaying by plugins. Just include the mixin to your widget class 
and control protection by showPluginProtector and excludePluginProtector.

qx.Mixin.define("sd3.ui.core.MPluginProtector",
{
  construct : function()
  {
    this.addListener("resize", this.__onResize, this);
  },


  members :
  {
    /** Activates plugin protector */
    showPluginProtector : function()
    {
      this._getPluginProtector().show();
    },


    /** Deactivates plugin protector */
    excludePluginProtector : function()
    {
      this._getPluginProtector().hide();
    },


    /**
     * {qx.ui.embed.Iframe} This element protects the widget from plug-ins, 
which
     * try to be on top of the screen.
     */
    __pluginProtector : null,


    /**
     * Creates a Iframe as protector element to keep a plug-in (Applet or 
ActivX)
     * behind the widget.
     */
    _getPluginProtector : function()
    {
      if (!this.__pluginProtector) {
        // IE8 and less has problem when we use qx.html.Iframe therefore 
qx.html.Element is used
        var protector = new qx.html.Element("iframe");
        protector.setStyles(
        {
          position: "absolute",
          top: 0,
          left: 0,
          backgroundColor : "white",
          zIndex: 0
        });

        protector.setAttributes({
          marginwidth : "0",
          marginheight : "0",
          frameborder : "0",
          scrolling : "no",
          src : qx.core.Environment.get("build.blankpage")
        });
        this.getContentElement().add(protector);

        protector.hide();
        this.__pluginProtector = protector;
      }

      return this.__pluginProtector;
    },


    __onResize : function()
    {
      var protector = this._getPluginProtector();

      protector.setStyles({
        width : this.getBounds().width + "px",
        height : this.getBounds().height + "px"
      });
    }
  }
});


Gruß
Mustafa Sak

Applications & Integration

1&1 Internet AG
Ernst-Frey-Straße 10
DE-76135 Karlsruhe

Von: Chris Bunn [mailto:cha...@gmail.com]
Gesendet: Montag, 4. August 2014 21:06
An: qooxdoo Development
Betreff: Re: [qooxdoo-devel] Controlling window stacking when windows contain 
iframes

Mustafa,

Thanks for the example,

Depending on the browser and PDF viewer installation / configuration I am 
getting mixed results. I have control over the HTML content window and could 
perhaps resolve the issue for it. I am not able to get the PDF viewer window to 
move forward in the stack, unless I click on the content area,

In looking at one of the "Real-life Examples" applications (National Weather 
Service Enhanced Data Display) I noticed that they use qx windows and iframes 
in several areas. The application exhibits the same issues that I am seeing 
with window stacking and iframes.

I think I may need to rethink my UI design and the impact of iframe content.

Thanks for your help.
-Chris



On Mon, Aug 4, 2014 at 10:43 AM, Mustafa Sak 
<mustafa....@1und1.de<mailto:mustafa....@1und1.de>> wrote:
Hi,

Now I got your problem. So did you ever test your code on IE11? You will be 
surprised.

But back to your problem.
I would advise you to use "postMessage" to communicate between the iframes and 
your qooxdoo app. But this is only possible if you have access to the content 
of the iframes.

A more common (but ugly) way is to poll document.activeElement, so take a look 
at: http://tinyurl.com/pgx3u8o

Gruß
Mustafa Sak

Applications & Integration

1&1 Internet AG
Ernst-Frey-Straße 10
DE-76135 Karlsruhe

Von: Chris Bunn [mailto:cha...@gmail.com<mailto:cha...@gmail.com>]
Gesendet: Montag, 4. August 2014 16:48
An: qooxdoo Development

Betreff: Re: [qooxdoo-devel] Controlling window stacking when windows contain 
iframes

Mustafa,

I have been testing the behavior in Chrome and Firefox, (I had not bothered 
with IE testing yet). If I select the window using the title bar it moves 
forward in the stack. If I click in the content area (the iframe) of the window 
it stays inactive but the iframe contents respond.

Does using the Desktop class help with this issue? The block and unblock 
methods sound like the technique I have had to use in the past when programming 
the DOM directly.

-Chris


On Mon, Aug 4, 2014 at 9:05 AM, Mustafa Sak 
<mustafa....@1und1.de<mailto:mustafa....@1und1.de>> wrote:
Hi Chris,

IMHO your core problem is IE using an external PDF Plugin. Because your code is 
working fine for Chrome and Firefox which has their own PDF viewer.

But I guess I have a solution for you. In a project I had the same problem and 
solved it with a iframe protector. I will post you the code as soon as possible.

Gruß
Mustafa Sak

Applications & Integration

1&1 Internet AG
Ernst-Frey-Straße 10
DE-76135 Karlsruhe


-----Ursprüngliche Nachricht-----
Von: chalbu [mailto:cha...@gmail.com<mailto:cha...@gmail.com>]
Gesendet: Montag, 4. August 2014 15:26
An: 
qooxdoo-devel@lists.sourceforge.net<mailto:qooxdoo-devel@lists.sourceforge.net>
Betreff: Re: [qooxdoo-devel] Controlling window stacking when windows contain 
iframes

Mustafa,

I apologize I don't know how to share a playground example.

Does the following code example help explain what I am trying to do.

Clicking in the content area of either of the windows will not move the window 
to the top of the stack.

-Chris

var win1 = new qx.ui.window.Window("First Window"); win1.setLayout(new 
qx.ui.layout.Grow()); win1.setWidth(600); win1.setHeight(400);

var iframe1 = new qx.ui.embed.ThemedIframe("http://qooxdoo.org/downloads";);
iframe1.setPadding(0);

win1.add(iframe1);

this.getRoot().add(win1, {left:20, top:20}); win1.open();


var win2 = new qx.ui.window.Window("Second Window"); win2.setLayout(new 
qx.ui.layout.Grow()); win2.setWidth(500); win2.setHeight(300);

var iframe2 = new
qx.ui.embed.ThemedIframe("http://manual.qooxdoo.org/current/qooxdoo.pdf";);
iframe2.setPadding(0);

win2.add(iframe2);

this.getRoot().add(win2, {left:180, top:140}); win2.open();




--
View this message in context: 
http://qooxdoo.678.n2.nabble.com/Controlling-window-stacking-when-windows-contain-iframes-tp7586018p7586030.html
Sent from the qooxdoo mailing list archive at Nabble.com.

------------------------------------------------------------------------------
Infragistics Professional
Build stunning WinForms apps today!
Reboot your WinForms applications with our WinForms controls.
Build a bridge from your legacy apps to the future.
http://pubads.g.doubleclick.net/gampad/clk?id=153845071&iu=/4140/ostg.clktrk
_______________________________________________
qooxdoo-devel mailing list
qooxdoo-devel@lists.sourceforge.net<mailto:qooxdoo-devel@lists.sourceforge.net>
https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel

------------------------------------------------------------------------------
Infragistics Professional
Build stunning WinForms apps today!
Reboot your WinForms applications with our WinForms controls.
Build a bridge from your legacy apps to the future.
http://pubads.g.doubleclick.net/gampad/clk?id=153845071&iu=/4140/ostg.clktrk
_______________________________________________
qooxdoo-devel mailing list
qooxdoo-devel@lists.sourceforge.net<mailto:qooxdoo-devel@lists.sourceforge.net>
https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel


------------------------------------------------------------------------------
Infragistics Professional
Build stunning WinForms apps today!
Reboot your WinForms applications with our WinForms controls.
Build a bridge from your legacy apps to the future.
http://pubads.g.doubleclick.net/gampad/clk?id=153845071&iu=/4140/ostg.clktrk
_______________________________________________
qooxdoo-devel mailing list
qooxdoo-devel@lists.sourceforge.net<mailto:qooxdoo-devel@lists.sourceforge.net>
https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel

------------------------------------------------------------------------------
Infragistics Professional
Build stunning WinForms apps today!
Reboot your WinForms applications with our WinForms controls. 
Build a bridge from your legacy apps to the future.
http://pubads.g.doubleclick.net/gampad/clk?id=153845071&iu=/4140/ostg.clktrk
_______________________________________________
qooxdoo-devel mailing list
qooxdoo-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel

Reply via email to