summaryrefslogtreecommitdiff
path: root/skins/larry/ui.js
diff options
context:
space:
mode:
Diffstat (limited to 'skins/larry/ui.js')
-rw-r--r--skins/larry/ui.js65
1 files changed, 43 insertions, 22 deletions
diff --git a/skins/larry/ui.js b/skins/larry/ui.js
index b787dbb8d..1c76f9108 100644
--- a/skins/larry/ui.js
+++ b/skins/larry/ui.js
@@ -38,6 +38,7 @@ function rcube_mail_ui()
this.init_tabs = init_tabs;
this.show_about = show_about;
this.show_popup = show_popup;
+ this.add_popup = add_popup;
this.set_searchmod = set_searchmod;
this.show_uploadform = show_uploadform;
this.show_header_row = show_header_row;
@@ -95,7 +96,7 @@ function rcube_mail_ui()
if (rcmail.env.action == 'show' || rcmail.env.action == 'preview') {
rcmail.addEventListener('aftershow-headers', function() { layout_messageview(); });
rcmail.addEventListener('afterhide-headers', function() { layout_messageview(); });
- $('#previewheaderstoggle').click(function(e){ toggle_preview_headers(this); return false });
+ $('#previewheaderstoggle').click(function(e){ toggle_preview_headers(); return false });
// add menu link for each attachment
$('#attachment-list > li').each(function() {
@@ -287,28 +288,36 @@ function rcube_mail_ui()
/**
* Update UI on window resize
*/
- function resize()
+ function resize(e)
{
- if (rcmail.env.task == 'mail') {
- if (rcmail.env.action == 'show' || rcmail.env.action == 'preview')
- layout_messageview();
- else if (rcmail.env.action == 'compose')
- layout_composeview();
- }
+ // resize in intervals to prevent lags and double onresize calls in Chrome (#1489005)
+ var interval = e ? 10 : 0;
+
+ if (rcmail.resize_timeout)
+ window.clearTimeout(rcmail.resize_timeout);
- // make iframe footer buttons float if scrolling is active
- $('body.iframe .footerleft').each(function(){
- var footer = $(this),
- body = $(document.body),
- floating = footer.hasClass('floating'),
- overflow = body.outerHeight(true) > $(window).height();
-
- if (overflow != floating) {
- var action = overflow ? 'addClass' : 'removeClass';
- footer[action]('floating');
- body[action]('floatingbuttons');
+ rcmail.resize_timeout = window.setTimeout(function() {
+ if (rcmail.env.task == 'mail') {
+ if (rcmail.env.action == 'show' || rcmail.env.action == 'preview')
+ layout_messageview();
+ else if (rcmail.env.action == 'compose')
+ layout_composeview();
}
- });
+
+ // make iframe footer buttons float if scrolling is active
+ $('body.iframe .footerleft').each(function(){
+ var footer = $(this),
+ body = $(document.body),
+ floating = footer.hasClass('floating'),
+ overflow = body.outerHeight(true) > $(window).height();
+
+ if (overflow != floating) {
+ var action = overflow ? 'addClass' : 'removeClass';
+ footer[action]('floating');
+ body[action]('floatingbuttons');
+ }
+ });
+ }, interval);
}
/**
@@ -422,13 +431,25 @@ function rcube_mail_ui()
/**
+ * Register a popup menu
+ */
+ function add_popup(popup, config)
+ {
+ var obj = popups[popup] = $('#'+popup);
+ obj.appendTo(document.body); // move it to top for proper absolute positioning
+
+ if (obj.length)
+ popupconfig[popup] = $.extend(popupconfig[popup] || {}, config || {});
+ }
+
+ /**
* Trigger for popup menus
*/
function show_popup(popup, show, config)
{
// auto-register menu object
if (config || !popupconfig[popup])
- popupconfig[popup] = $.extend(popupconfig[popup] || {}, config);
+ add_popup(popup, config);
var visible = show_popupmenu(popup, show),
config = popupconfig[popup];
@@ -553,7 +574,7 @@ function rcube_mail_ui()
/**
* Switch between short and full headers display in message preview
*/
- function toggle_preview_headers(button)
+ function toggle_preview_headers()
{
$('#preview-shortheaders').toggle();
var full = $('#preview-allheaders').toggle(),