summaryrefslogtreecommitdiff
path: root/roundcubemail/program/js/list.js
diff options
context:
space:
mode:
authoralec <alec@208e9e7b-5314-0410-a742-e7e81cd9613c>2008-09-18 10:14:16 +0000
committeralec <alec@208e9e7b-5314-0410-a742-e7e81cd9613c>2008-09-18 10:14:16 +0000
commitc18b7b920d1fbf96ca7f4d473e71a5622fbf40a8 (patch)
tree3fd892ec2a3a70da22d4faa24e309b870c9e3e90 /roundcubemail/program/js/list.js
parent2f0381af79c0f108d3d79b3e1c8c4e0684ca5c69 (diff)
#1484805: fix next/last page buttons when new message is added to the list + remove last message
git-svn-id: https://svn.roundcube.net/trunk@1819 208e9e7b-5314-0410-a742-e7e81cd9613c
Diffstat (limited to 'roundcubemail/program/js/list.js')
-rw-r--r--roundcubemail/program/js/list.js53
1 files changed, 42 insertions, 11 deletions
diff --git a/roundcubemail/program/js/list.js b/roundcubemail/program/js/list.js
index 926d98aa7..6abe6a023 100644
--- a/roundcubemail/program/js/list.js
+++ b/roundcubemail/program/js/list.js
@@ -290,7 +290,7 @@ click_row: function(e, id)
/**
- * get next and previous rows that are not hidden
+ * get next/previous/last rows that are not hidden
*/
get_next_row: function()
{
@@ -318,8 +318,24 @@ get_prev_row: function()
return new_row;
},
+get_last_row: function()
+{
+ if (this.rowcount)
+ {
+ var rows = this.list.tBodies[0].rows;
+
+ for(var i=rows.length-1; i>=0; i--)
+ if(rows[i].id && String(rows[i].id).match(/rcmrow([a-z0-9\-_=]+)/i) && this.rows[RegExp.$1] != null)
+ return RegExp.$1;
+ }
+
+ return null;
+},
+
-// selects or unselects the proper row depending on the modifier key pressed
+/**
+ * selects or unselects the proper row depending on the modifier key pressed
+ */
select_row: function(id, mod_key, with_mouse)
{
var select_before = this.selection.join(',');
@@ -482,21 +498,36 @@ select_all: function(filter)
/**
- * Unselect all selected rows
+ * Unselect selected row(s)
*/
-clear_selection: function()
+clear_selection: function(id)
{
var num_select = this.selection.length;
- for (var n=0; n<this.selection.length; n++)
- if (this.rows[this.selection[n]])
+
+ // one row
+ if (id)
{
- this.set_classname(this.rows[this.selection[n]].obj, 'selected', false);
- this.set_classname(this.rows[this.selection[n]].obj, 'unfocused', false);
+ for (var n=0; n<this.selection.length; n++)
+ if (this.selection[n] == id)
+ {
+ this.selection.splice(n,1);
+ break;
+ }
+ }
+ // all rows
+ else
+ {
+ for (var n=0; n<this.selection.length; n++)
+ if (this.rows[this.selection[n]])
+ {
+ this.set_classname(this.rows[this.selection[n]].obj, 'selected', false);
+ this.set_classname(this.rows[this.selection[n]].obj, 'unfocused', false);
+ }
+
+ this.selection = new Array();
}
- this.selection = new Array();
-
- if (num_select)
+ if (num_select && !this.selection.length)
this.trigger_event('select');
},