diff options
author | thomascube <thomas@roundcube.net> | 2012-02-25 15:20:36 +0000 |
---|---|---|
committer | thomascube <thomas@roundcube.net> | 2012-02-25 15:20:36 +0000 |
commit | 14a3f2813acf25c07e1ee861b564f826fe83fe20 (patch) | |
tree | 858200347b1e7129690bfdcfbd96c9e426913af1 /skins/larry/ui.js | |
parent | 40d246fff24e19f7237aef059a95e3af3b718e62 (diff) |
Make popups disapear when clicking on an iframe; adapt IE hacks (#1488354)
Diffstat (limited to 'skins/larry/ui.js')
-rw-r--r-- | skins/larry/ui.js | 46 |
1 files changed, 30 insertions, 16 deletions
diff --git a/skins/larry/ui.js b/skins/larry/ui.js index 333dd50cf..86c1b0cdb 100644 --- a/skins/larry/ui.js +++ b/skins/larry/ui.js @@ -173,22 +173,7 @@ function rcube_mail_ui() // turn a group of fieldsets into tabs $('.tabbed').each(function(idx, elem){ init_tabs(elem); }) - $(document.body).bind('mouseup', function(e){ - var config, obj, target = e.target; - for (var id in popups) { - obj = popups[id]; - config = popupconfig[id]; - if (obj.is(':visible') - && target.id != id+'link' - && !config.toggle - && (!config.editable || !target_overlaps(target, obj.get(0))) - && (!config.sticky || !rcube_mouse_is_over(e, obj.get(0))) - ) { - var myid = id+''; - window.setTimeout(function(){ show_popupmenu(myid, false) }, 10); - } - } - }) + $(document.body).bind('mouseup', body_mouseup) .bind('keyup', function(e){ if (e.keyCode == 27) { for (var id in popups) { @@ -198,6 +183,13 @@ function rcube_mail_ui() } }); + $('iframe').load(function(e){ + // this = iframe + var doc = this.contentDocument ? this.contentDocument : this.contentWindow ? this.contentWindow.document : null; + $(doc).mouseup(body_mouseup); + }) + .contents().mouseup(body_mouseup); + $(window).resize(function(e) { // check target due to bugs in jquery // http://bugs.jqueryui.com/ticket/7514 @@ -207,6 +199,28 @@ function rcube_mail_ui() } /** + * Handler for mouse-up events on the document body. + * This will close all open popup menus + */ + function body_mouseup(e) + { + var config, obj, target = e.target; + for (var id in popups) { + obj = popups[id]; + config = popupconfig[id]; + if (obj.is(':visible') + && target.id != id+'link' + && !config.toggle + && (!config.editable || !target_overlaps(target, obj.get(0))) + && (!config.sticky || !rcube_mouse_is_over(e, obj.get(0))) + ) { + var myid = id+''; + window.setTimeout(function(){ show_popupmenu(myid, false) }, 10); + } + } + } + + /** * Update UI on window resize */ function resize() |