summaryrefslogtreecommitdiff
path: root/program/js
diff options
context:
space:
mode:
authorAleksander Machniak <alec@alec.pl>2014-06-05 15:54:25 +0200
committerAleksander Machniak <alec@alec.pl>2014-06-05 15:54:25 +0200
commit64f7d6758fd269823ab19270a6ef5658f0a28669 (patch)
tree6bd1b62f503554c71caa5f6be2b27c2da158c144 /program/js
parent4f3f3b47e227408646392e7867ec21178a84ab3a (diff)
Select/scroll to previously selected message when returning from message page (#1489023)
Diffstat (limited to 'program/js')
-rw-r--r--program/js/app.js24
1 files changed, 20 insertions, 4 deletions
diff --git a/program/js/app.js b/program/js/app.js
index 6d66aa2c0..53eaa4aa8 100644
--- a/program/js/app.js
+++ b/program/js/app.js
@@ -2428,6 +2428,9 @@ function rcube_webmail()
url._framed = 1;
}
+ if (this.env.uid)
+ url._uid = this.env.uid;
+
// load message list to target frame/window
if (mbox) {
this.set_busy(true, 'loading');
@@ -7255,11 +7258,24 @@ function rcube_webmail()
this.enable_command('expand-all', 'expand-unread', 'collapse-all', this.env.threading && this.env.messagecount && !is_multifolder);
if ((response.action == 'list' || response.action == 'search') && this.message_list) {
+ var list = this.message_list, uid = this.env.list_uid;
+
+ // highlight message row when we're back from message page
+ if (uid) {
+ if (!list.rows[uid])
+ uid += '-' + this.env.mailbox;
+ if (list.rows[uid]) {
+ list.select(uid);
+ }
+ delete this.env.list_uid;
+ }
+
this.enable_command('set-listmode', this.env.threads && !is_multifolder);
- if (this.message_list.rowcount > 0)
- this.message_list.focus();
- this.msglist_select(this.message_list);
- this.triggerEvent('listupdate', { folder:this.env.mailbox, rowcount:this.message_list.rowcount });
+ if (list.rowcount > 0)
+ list.focus();
+ this.msglist_select(list);
+ this.triggerEvent('listupdate', { folder:this.env.mailbox, rowcount:list.rowcount });
+
}
}
else if (this.task == 'addressbook') {