diff options
author | Aleksander Machniak <alec@alec.pl> | 2014-06-03 12:17:39 +0200 |
---|---|---|
committer | Aleksander Machniak <alec@alec.pl> | 2014-06-03 12:30:43 +0200 |
commit | bbce9f5a2e000b445a4b6bd72dd40dec5f9ddeb8 (patch) | |
tree | 1de61ab2f0911a34972bbe801bb0331fdfa4c568 /program/js | |
parent | 04089eed1cffb4fb9fe9455a8c56ed6fa2155395 (diff) |
Fix so message list and counters are updated when a message is opened in new window (#1489919)
Diffstat (limited to 'program/js')
-rw-r--r-- | program/js/app.js | 34 |
1 files changed, 26 insertions, 8 deletions
diff --git a/program/js/app.js b/program/js/app.js index d56088d41..68faab1a9 100644 --- a/program/js/app.js +++ b/program/js/app.js @@ -2064,20 +2064,38 @@ function rcube_webmail() this.location_href(this.env.comm_path+url, target, true); // mark as read and change mbox unread counter - if (preview && this.message_list && this.message_list.rows[id] && this.message_list.rows[id].unread && this.env.preview_pane_mark_read >= 0) { + if (preview && this.message_list && this.message_list.rows[id] && this.message_list.rows[id].unread && this.env.preview_pane_mark_read > 0) { this.preview_read_timer = setTimeout(function() { - ref.set_message(id, 'unread', false); - if (ref.env.unread_counts[ref.env.mailbox]) { - ref.env.unread_counts[ref.env.mailbox] -= 1; - ref.set_unread_count(ref.env.mailbox, ref.env.unread_counts[ref.env.mailbox], ref.env.mailbox == 'INBOX'); - } - if (ref.env.preview_pane_mark_read > 0) - ref.http_post('mark', {_uid: id, _flag: 'read', _quiet: 1}); + ref.set_unread_message(id, ref.env.mailbox); + ref.http_post('mark', {_uid: id, _flag: 'read', _quiet: 1}); }, this.env.preview_pane_mark_read * 1000); } } }; + // update message status and unread counter after marking a message as read + this.set_unread_message = function(id, folder) + { + var self = this; + + // find window with messages list + if (!self.message_list) + self = self.opener(); + + if (!self && window.parent) + self = parent.rcmail; + + if (!self || !self.message_list) + return; + + self.set_message(id, 'unread', false); + + if (self.env.unread_counts[folder] > 0) { + self.env.unread_counts[folder] -= 1; + self.set_unread_count(folder, self.env.unread_counts[folder], folder == 'INBOX'); + } + }; + this.show_contentframe = function(show) { var frame, win, name = this.env.contentframe; |