Changeset 2661 in subversion


Ignore:
Timestamp:
Jun 19, 2009 1:29:52 PM (4 years ago)
Author:
thomasb
Message:

Open collapsed folders during drag & drop (#1485914)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/roundcubemail/program/js/app.js

    r2655 r2661  
    12641264      for (var k in model) { 
    12651265        if (li = this.get_folder_li(k)) { 
    1266           // only visible folders 
     1266          // only visible folders 
    12671267          if (height = li.firstChild.offsetHeight) { 
    1268             pos = $(li.firstChild).offset(); 
    1269             this.env.folder_coords[k] = { x1:pos.left, y1:pos.top, 
    1270                 x2:pos.left + li.firstChild.offsetWidth, y2:pos.top + height, on:0 }; 
    1271           } 
     1268            pos = $(li.firstChild).offset(); 
     1269            this.env.folder_coords[k] = { x1:pos.left, y1:pos.top, 
     1270              x2:pos.left + li.firstChild.offsetWidth, y2:pos.top + height, on:0 }; 
     1271          } 
    12721272        } 
    12731273      } 
     
    12791279    this.drag_active = false; 
    12801280    this.env.last_folder_target = null; 
     1281     
     1282    if (this.folder_auto_timer) { 
     1283      window.clearTimeout(this.folder_auto_timer); 
     1284      this.folder_auto_timer = null; 
     1285      this.folder_auto_expand = null; 
     1286    } 
    12811287 
    12821288    // over the folders 
     
    12971303      var toffset = -moffset-boffset; 
    12981304 
    1299       var li, pos, mouse; 
     1305      var li, div, pos, mouse; 
    13001306      mouse = rcube_event.get_mouse_pos(e); 
    13011307      pos = this.env.folderlist_coords; 
     
    13041310      // if mouse pointer is outside of folderlist 
    13051311      if (mouse.x < pos.x1 || mouse.x >= pos.x2 || mouse.y < pos.y1 || mouse.y >= pos.y2) { 
    1306         if (this.env.last_folder_target) { 
     1312        if (this.env.last_folder_target) { 
    13071313          $(this.get_folder_li(this.env.last_folder_target)).removeClass('droptarget'); 
    1308           this.env.folder_coords[this.env.last_folder_target].on = 0; 
    1309           this.env.last_folder_target = null; 
    1310         } 
     1314          this.env.folder_coords[this.env.last_folder_target].on = 0; 
     1315          this.env.last_folder_target = null; 
     1316        } 
    13111317        return; 
    13121318      } 
     
    13161322        pos = this.env.folder_coords[k]; 
    13171323        if (mouse.x >= pos.x1 && mouse.x < pos.x2 && mouse.y >= pos.y1 && mouse.y < pos.y2 
    1318             && this.check_droptarget(k)) { 
    1319           $(this.get_folder_li(k)).addClass('droptarget'); 
     1324            && this.check_droptarget(k)) { 
     1325 
     1326          li = this.get_folder_li(k); 
     1327          div = $(li.getElementsByTagName("div")[0]); 
     1328 
     1329          // if the folder is collapsed, expand it after 1sec and restart the drag & drop process. 
     1330          if (div.hasClass('collapsed')) { 
     1331            if (this.folder_auto_timer) 
     1332              window.clearTimeout(this.folder_auto_timer); 
     1333             
     1334            this.folder_auto_expand = k; 
     1335            this.folder_auto_timer = window.setTimeout(function() { 
     1336                rcmail.command("collapse-folder", rcmail.folder_auto_expand); 
     1337                rcmail.drag_start(null); 
     1338              }, 1000); 
     1339          } 
     1340           
     1341          if (!div.hasClass('collapsed') && this.folder_auto_timer) { 
     1342            window.clearTimeout(this.folder_auto_timer); 
     1343            this.folder_auto_timer = null; 
     1344            this.folder_auto_expand = null; 
     1345          } 
     1346           
     1347          $(li).addClass('droptarget'); 
    13201348          this.env.last_folder_target = k; 
    1321           this.env.folder_coords[k].on = 1; 
    1322         } 
     1349          this.env.folder_coords[k].on = 1; 
     1350        } 
    13231351        else if (pos.on) { 
    1324           $(this.get_folder_li(k)).removeClass('droptarget'); 
    1325           this.env.folder_coords[k].on = 0; 
    1326         } 
     1352          $(this.get_folder_li(k)).removeClass('droptarget'); 
     1353          this.env.folder_coords[k].on = 0; 
     1354        } 
    13271355      } 
    13281356    } 
Note: See TracChangeset for help on using the changeset viewer.