mirror of
https://github.com/roundcube/roundcubemail.git
synced 2026-03-06 16:16:48 +01:00
Add generic mobile browser detection, enable touch events for all mobile browsers
This commit is contained in:
@@ -83,6 +83,7 @@ function roundcube_browser()
|
||||
if (this.safari && (/;\s+([a-z]{2})-[a-z]{2}\)/.test(this.agent_lc)))
|
||||
this.lang = RegExp.$1;
|
||||
|
||||
this.mobile = this.agent_lc.match(/iphone|ipad|ipod|android|blackberry|iemobile|opera mini|opera mobi/);
|
||||
this.dhtml = ((this.ie4 && this.win) || this.ie5 || this.ie6 || this.ns4 || this.mz);
|
||||
this.vml = (this.win && this.ie && this.dom && !this.opera);
|
||||
this.pngalpha = (this.mz || (this.opera && this.vendver >= 6) || (this.ie && this.mac && this.vendver >= 5) ||
|
||||
@@ -124,6 +125,9 @@ function roundcube_browser()
|
||||
else if (this.safari || this.chrome)
|
||||
classname += ' webkit';
|
||||
|
||||
if (this.mobile)
|
||||
classname += ' mobile';
|
||||
|
||||
if (document.documentElement)
|
||||
document.documentElement.className += classname;
|
||||
};
|
||||
|
||||
@@ -112,7 +112,7 @@ init_row: function(row)
|
||||
row.onmousedown = function(e){ return self.drag_row(e, this.uid); };
|
||||
row.onmouseup = function(e){ return self.click_row(e, this.uid); };
|
||||
|
||||
if (bw.iphone || bw.ipad) {
|
||||
if (bw.mobile) {
|
||||
row.addEventListener('touchstart', function(e) {
|
||||
if (e.touches.length == 1) {
|
||||
if (!self.drag_row(rcube_event.touchevent(e.touches[0]), this.uid))
|
||||
@@ -313,7 +313,7 @@ drag_row: function(e, id)
|
||||
this.drag_mouse_start = rcube_event.get_mouse_pos(e);
|
||||
rcube_event.add_listener({event:'mousemove', object:this, method:'drag_mouse_move'});
|
||||
rcube_event.add_listener({event:'mouseup', object:this, method:'drag_mouse_up'});
|
||||
if (bw.iphone || bw.ipad) {
|
||||
if (bw.mobile) {
|
||||
rcube_event.add_listener({event:'touchmove', object:this, method:'drag_mouse_move'});
|
||||
rcube_event.add_listener({event:'touchend', object:this, method:'drag_mouse_up'});
|
||||
}
|
||||
@@ -1220,7 +1220,7 @@ drag_mouse_move: function(e)
|
||||
drag_mouse_up: function(e)
|
||||
{
|
||||
document.onmousemove = null;
|
||||
|
||||
|
||||
if (e.type == 'touchend') {
|
||||
if (e.changedTouches.length != 1)
|
||||
return rcube_event.cancel(e);
|
||||
@@ -1239,8 +1239,8 @@ drag_mouse_up: function(e)
|
||||
|
||||
rcube_event.remove_listener({event:'mousemove', object:this, method:'drag_mouse_move'});
|
||||
rcube_event.remove_listener({event:'mouseup', object:this, method:'drag_mouse_up'});
|
||||
|
||||
if (bw.iphone || bw.ipad) {
|
||||
|
||||
if (bw.mobile) {
|
||||
rcube_event.remove_listener({event:'touchmove', object:this, method:'drag_mouse_move'});
|
||||
rcube_event.remove_listener({event:'touchend', object:this, method:'drag_mouse_up'});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user