From 91d1a15ba89398cfb1a58f372b4a4329547b41a3 Mon Sep 17 00:00:00 2001
From: alecpl <alec@alec.pl>
Date: Tue, 26 May 2009 03:28:42 -0400
Subject: [PATCH] - Add drag cancelling with ESC key (#1484344)

---
 program/js/list.js |    4 ++++
 CHANGELOG          |    1 +
 program/js/app.js  |   19 +++++++++++++++++--
 3 files changed, 22 insertions(+), 2 deletions(-)

diff --git a/CHANGELOG b/CHANGELOG
index 3db69dd..d002a6b 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,6 +1,7 @@
 CHANGELOG RoundCube Webmail
 ===========================
 
+- Add drag cancelling with ESC key (#1484344)
 - Support initial identity name from virtuser_query (#1484003)
 - Added message menu, removed Print and Source buttons
 - Added possibility to save message as .eml file (#1485861)
diff --git a/program/js/app.js b/program/js/app.js
index 8b357e7..b29a357 100644
--- a/program/js/app.js
+++ b/program/js/app.js
@@ -162,7 +162,7 @@
           this.message_list.addEventListener('select', function(o){ p.msglist_select(o); });
           this.message_list.addEventListener('dragstart', function(o){ p.drag_start(o); });
           this.message_list.addEventListener('dragmove', function(o, e){ p.drag_move(e); });
-          this.message_list.addEventListener('dragend', function(o){ p.drag_active = false; });
+          this.message_list.addEventListener('dragend', function(o, e){ p.drag_end(e); });
           document.onmouseup = function(e){ return p.doc_mouse_up(e); };
 
           this.message_list.init();
@@ -278,7 +278,7 @@
           this.contact_list.addEventListener('select', function(o){ p.contactlist_select(o); });
           this.contact_list.addEventListener('dragstart', function(o){ p.drag_start(o); });
           this.contact_list.addEventListener('dragmove', function(o, e){ p.drag_move(e); });
-          this.contact_list.addEventListener('dragend', function(o){ p.drag_active = false; });
+          this.contact_list.addEventListener('dragend', function(o, e){ p.drag_end(e); });
           this.contact_list.init();
 
           if (this.env.cid)
@@ -1258,6 +1258,21 @@
     }
   };
 
+  this.drag_end = function(e)
+  {
+    this.drag_active = false;
+
+    // over the folders
+    if (this.gui_objects.folderlist && this.env.folder_coords) {
+      for (var k in this.env.folder_coords) {
+        if (k == this.env.last_folder_target) {
+          $(this.get_folder_li(k)).removeClass('droptarget');
+          this.env.last_folder_target = null;
+        }
+      }
+    }
+  };
+  
   this.drag_move = function(e)
   {
     if (this.gui_objects.folderlist && this.env.folder_coords) {
diff --git a/program/js/list.js b/program/js/list.js
index 17bf4cf..addd1e6 100644
--- a/program/js/list.js
+++ b/program/js/list.js
@@ -625,6 +625,7 @@
 
   var keyCode = rcube_event.get_keycode(e);
   var mod_key = rcube_event.get_modifier(e);
+
   switch (keyCode)
   {
     case 40:
@@ -653,6 +654,9 @@
 {
   switch (rcube_event.get_keycode(e))
   {
+    case 27:
+      if (this.drag_active)
+	this.drag_mouse_up(e);
     case 40:
     case 38: 
     case 63233:

--
Gitblit v1.9.1