If the row being dragged was previously selected, we will drag all
selected rows and show that count next to the icon. If the row being
dragged is NOT selected, we drag only that row and set count to 1.
This appears to make the behavior consistent with other webmails.
var count = 0;
var table = document.getElementById("ctdl-onscreen-mailbox");
var count = 0;
var table = document.getElementById("ctdl-onscreen-mailbox");
- // Figure out how many messages are being dragged
- for (i=1; row=table.rows[i]; ++i) {
- if (row.classList.contains("ctdl-mail-selected")) {
- count = count + 1;
+ if (event.target.classList.contains("ctdl-mail-selected")) {
+ // The row being dragged IS selected. See if any OTHER rows are selected, and they will come along for the ride.
+ for (i=1; row=table.rows[i]; ++i) {
+ if (row.classList.contains("ctdl-mail-selected")) {
+ count = count + 1;
+ }
+ else {
+ // The row being dragged is NOT selected. It will be dragged on its own, ignoring the selected rows.
+ count = 1;
+ }
+
+ // FIXME tell the clipboard what's being moved.
// Set the custom drag image to an envelope + number of messages being dragged
d = document.getElementById("ctdl_draggo");
// Set the custom drag image to an envelope + number of messages being dragged
d = document.getElementById("ctdl_draggo");
- d.innerHTML = "<font size='+3'><i class='fa fa-envelope' style='color: red'></i> " + count + "</font>"
+ d.innerHTML = "<font size='+2'><i class='fa fa-envelope' style='color: red'></i> " + count + "</font>"
event.dataTransfer.setDragImage(d, 0, 0);
event.dataTransfer.setData("text/html", "blah blah blah");
}
event.dataTransfer.setDragImage(d, 0, 0);
event.dataTransfer.setData("text/html", "blah blah blah");
}
-// after a message is selected or deselected, we call this to set or clear the drag handler.
-function enable_or_disable_draggable(row) {
- if (row.classList.contains("ctdl-mail-selected")) {
- row.draggable = "true"
- row.addEventListener("dragstart", mail_dragstart);
- }
- else {
- row.draggable = "false"
- row.removeEventListener("dragstart", mail_dragstart);
- }
-}
-
-
-
// A message has been selected...
function click_message(event, msgnum) {
var table = document.getElementById("ctdl-onscreen-mailbox");
// A message has been selected...
function click_message(event, msgnum) {
var table = document.getElementById("ctdl-onscreen-mailbox");
// ctrl + click = toggle an individual message without changing existing selection
if (event.ctrlKey) {
document.getElementById("ctdl-msgsum-" + msgnum).classList.toggle("ctdl-mail-selected");
// ctrl + click = toggle an individual message without changing existing selection
if (event.ctrlKey) {
document.getElementById("ctdl-msgsum-" + msgnum).classList.toggle("ctdl-mail-selected");
- enable_or_disable_draggable(document.getElementById("ctdl-msgsum-" + msgnum));
}
// shift + click = select a range of messages (start with row 1 because row 0 is the header)
}
// shift + click = select a range of messages (start with row 1 because row 0 is the header)
else {
row.classList.remove("ctdl-mail-selected");
}
else {
row.classList.remove("ctdl-mail-selected");
}
- enable_or_disable_draggable(row);
else {
row.classList.remove("ctdl-mail-selected");
}
else {
row.classList.remove("ctdl-mail-selected");
}
- enable_or_disable_draggable(row);
+ "id=\"ctdl-msgsum-" + msg["msgnum"] + "\" "
+ (is_selected ? "class=\"ctdl-mail-selected\" " : "")
+ "onClick=\"click_message(event," + msg["msgnum"] + ");\""
+ "id=\"ctdl-msgsum-" + msg["msgnum"] + "\" "
+ (is_selected ? "class=\"ctdl-mail-selected\" " : "")
+ "onClick=\"click_message(event," + msg["msgnum"] + ");\""
- + "onselectstart=\"return false;\""
+ + "onselectstart=\"return false;\" "
+ + "draggable=\"true\" "
+ + "ondragstart=\"mail_dragstart(event)\" "
+ ">"
+ "<td class=\"ctdl-mail-subject\">" + msg["subject"] + "</td>"
+ "<td class=\"ctdl-mail-sender\">" + msg["author"] + "</td>"
+ ">"
+ "<td class=\"ctdl-mail-subject\">" + msg["subject"] + "</td>"
+ "<td class=\"ctdl-mail-sender\">" + msg["author"] + "</td>"