summaryrefslogtreecommitdiff
path: root/skins/larry/ui.js
diff options
context:
space:
mode:
authorthomascube <thomas@roundcube.net>2012-02-25 15:20:36 +0000
committerthomascube <thomas@roundcube.net>2012-02-25 15:20:36 +0000
commit14a3f2813acf25c07e1ee861b564f826fe83fe20 (patch)
tree858200347b1e7129690bfdcfbd96c9e426913af1 /skins/larry/ui.js
parent40d246fff24e19f7237aef059a95e3af3b718e62 (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.js46
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()