Changeset cf6bc5d in github


Ignore:
Timestamp:
Dec 14, 2008 2:00:09 PM (4 years ago)
Author:
alecpl <alec@…>
Branches:
master, HEAD, courier-fix, dev-browser-capabilities, pdo, release-0.6, release-0.7, release-0.8
Children:
e9152a5
Parents:
2b5c123
Message:

#1485444: fix drag layer over an iframe

Location:
program/js
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • program/js/common.js

    rf4b8681 rcf6bc5d  
    157157    mX += document.body.scrollLeft; 
    158158    mY += document.body.scrollTop; 
     159  } 
     160 
     161  if (e._offset) { 
     162    mX += e._offset.x; 
     163    mY += e._offset.y; 
    159164  } 
    160165 
  • program/js/list.js

    r25c35c8 rcf6bc5d  
    242242    rcube_event.add_listener({element:document, event:'mousemove', object:this, method:'drag_mouse_move'}); 
    243243    rcube_event.add_listener({element:document, event:'mouseup', object:this, method:'drag_mouse_up'}); 
     244 
     245    // add listener for iframes 
     246    var iframes = document.getElementsByTagName('IFRAME'); 
     247    this.iframe_events = Object(); 
     248    for (var n in iframes) 
     249    { 
     250      var iframedoc = null; 
     251      if (iframes[n].contentDocument) 
     252        iframedoc = iframes[n].contentDocument; 
     253      else if (iframes[n].contentWindow) 
     254        iframedoc = iframes[n].contentWindow.document; 
     255      else if (iframes[n].document) 
     256        iframedoc = iframes[n].document; 
     257 
     258      if (iframedoc) 
     259      { 
     260        var list = this; 
     261        var pos = rcube_get_object_pos(document.getElementById(iframes[n].id)); 
     262        this.iframe_events[n] = function(e) { e._offset = pos; return list.drag_mouse_move(e); } 
     263         
     264        if (iframedoc.addEventListener) 
     265          iframedoc.addEventListener('mousemove', this.iframe_events[n], false); 
     266        else if (iframes[n].attachEvent) 
     267          iframedoc.attachEvent('onmousemove', this.iframe_events[n]); 
     268        else 
     269          iframedoc['onmousemove'] = this.iframe_events[n]; 
     270 
     271        rcube_event.add_listener({element:iframedoc, event:'mouseup', object:this, method:'drag_mouse_up'}); 
     272      } 
     273    }                                                              
    244274  } 
    245275 
     
    690720    // check mouse movement, of less than 3 pixels, don't start dragging 
    691721    var m = rcube_event.get_mouse_pos(e); 
     722 
    692723    if (!this.drag_mouse_start || (Math.abs(m.x - this.drag_mouse_start.x) < 3 && Math.abs(m.y - this.drag_mouse_start.y) < 3)) 
    693724      return false; 
     
    765796  rcube_event.remove_listener({element:document, event:'mouseup', object:this, method:'drag_mouse_up'}); 
    766797 
     798  var iframes = document.getElementsByTagName('IFRAME'); 
     799  for (var n in iframes) { 
     800    var iframedoc; 
     801     
     802    if (iframes[n].contentDocument) 
     803      iframedoc = iframes[n].contentDocument; 
     804    else if (iframes[n].contentWindow) 
     805      iframedoc = iframes[n].contentWindow.document; 
     806    else if (iframes[n].document) 
     807      iframedoc = iframes[n].document; 
     808 
     809    if (iframedoc) { 
     810      if (this.iframe_events[n]) { 
     811        if (iframedoc.removeEventListener) 
     812          iframedoc.removeEventListener('mousemove', this.iframe_events[n], false); 
     813        else if (iframedoc.detachEvent) 
     814          iframedoc.detachEvent('onmousemove', this.iframe_events[n]); 
     815        else 
     816          iframedoc['onmousemove'] = null; 
     817        } 
     818      rcube_event.remove_listener({element:iframedoc, event:'mouseup', object:this, method:'drag_mouse_up'}); 
     819      } 
     820    } 
     821 
    767822  this.focus(); 
    768823   
Note: See TracChangeset for help on using the changeset viewer.