Thomas Bruederli
2013-01-25 f7c50e28dbd637b3b60c6aea0fac3768f8f59f05
program/js/app.js
@@ -1459,29 +1459,21 @@
  this.doc_mouse_up = function(e)
  {
    var model, list, li, id;
    var model, list, id;
    // ignore event if jquery UI dialog is open
    if ($(rcube_event.get_target(e)).closest('.ui-dialog, .ui-widget-overlay').length)
      return;
    if (list = this.message_list) {
      if (!rcube_mouse_is_over(e, list.list.parentNode))
        list.blur();
      else
        list.focus();
    if (list = this.message_list)
      model = this.env.mailboxes;
    }
    else if (list = this.contact_list) {
      if (!rcube_mouse_is_over(e, list.list.parentNode))
        list.blur();
      else
        list.focus();
    else if (list = this.contact_list)
      model = this.env.contactfolders;
    }
    else if (this.ksearch_value) {
    else if (this.ksearch_value)
      this.ksearch_blur();
    }
    if (list && !rcube_mouse_is_over(e, list.list.parentNode))
      list.blur();
    // handle mouse release when dragging
    if (this.drag_active && model && this.env.last_folder_target) {
@@ -2549,7 +2541,7 @@
    for (i=0, len=selection.length; i<len; i++) {
      uid = selection[i];
      if (list.rows[uid].has_children && !list.rows[uid].expanded)
        list.select_childs(uid);
        list.select_children(uid);
    }
    // if config is set to flag for deletion
@@ -2650,34 +2642,37 @@
  // set a specific flag to one or more messages
  this.mark_message = function(flag, uid)
  {
    var a_uids = [], r_uids = [], len, n, id,
      selection = this.message_list ? this.message_list.get_selection() : [];
    var a_uids = [], r_uids = [], len, n, id, selection,
      list = this.message_list;
    if (uid)
      a_uids[0] = uid;
    else if (this.env.uid)
      a_uids[0] = this.env.uid;
    else if (this.message_list) {
    else if (list) {
      selection = list.get_selection();
      for (n=0, len=selection.length; n<len; n++) {
          a_uids.push(selection[n]);
      }
    }
    if (!this.message_list)
    if (!list)
      r_uids = a_uids;
    else
    else {
      list.focus();
      for (n=0, len=a_uids.length; n<len; n++) {
        id = a_uids[n];
        if ((flag=='read' && this.message_list.rows[id].unread)
            || (flag=='unread' && !this.message_list.rows[id].unread)
            || (flag=='delete' && !this.message_list.rows[id].deleted)
            || (flag=='undelete' && this.message_list.rows[id].deleted)
            || (flag=='flagged' && !this.message_list.rows[id].flagged)
            || (flag=='unflagged' && this.message_list.rows[id].flagged))
        if ((flag=='read' && list.rows[id].unread)
            || (flag=='unread' && !list.rows[id].unread)
            || (flag=='delete' && !list.rows[id].deleted)
            || (flag=='undelete' && list.rows[id].deleted)
            || (flag=='flagged' && !list.rows[id].flagged)
            || (flag=='unflagged' && list.rows[id].flagged))
        {
          r_uids.push(id);
        }
      }
    }
    // nothing to do
    if (!r_uids.length && !this.select_all_mode)
@@ -3304,6 +3299,10 @@
          if (p >= 0) { // in place of removed signature
            message = message.substring(0, p) + sig + message.substring(p, message.length);
            cursor_pos = p - 1;
          }
          else if (!message) { // empty message
            cursor_pos = 0;
            message = '\n\n' + sig;
          }
          else if (pos = this.get_caret_pos(input_message.get(0))) { // at cursor position
            message = message.substring(0, pos) + '\n' + sig + '\n\n' + message.substring(pos, message.length);
@@ -5578,6 +5577,32 @@
    this.messages = {};
  };
  // open a jquery UI dialog with the given content
  this.show_popup_dialog = function(html, title)
  {
    // forward call to parent window
    if (this.is_framed()) {
      parent.rcmail.show_popup_dialog(html, title);
      return;
    }
    var popup = $('<div class="popup">')
      .html(html)
      .dialog({
        title: title,
        modal: true,
        resizable: true,
        width: 580,
        close: function(event, ui) { $(this).remove() }
      });
      // resize and center popup
      var win = $(window), w = win.width(), h = win.height(),
        width = popup.width(), height = popup.height();
      popup.dialog('option', { height: Math.min(h-40, height+50), width: Math.min(w-20, width+50) })
        .dialog('option', 'position', ['center', 'center']);  // only works in a separate call (!?)
  };
  // mark a mailbox as selected and set environment variable
  this.select_folder = function(name, prefix, encode)
  {
@@ -6122,9 +6147,9 @@
    // re-send keep-alive requests after 30 seconds
    if (action == 'keep-alive')
      setTimeout(function(){ ref.keep_alive(); }, 30000);
      setTimeout(function(){ ref.keep_alive(); ref.start_keepalive(); }, 30000);
    else if (action == 'check-recent')
      setTimeout(function(){ ref.check_for_recent(false); }, 30000);
      setTimeout(function(){ ref.check_for_recent(false); ref.start_keepalive(); }, 30000);
  };
  // post the given form to a hidden iframe