diff options
-rw-r--r-- | CHANGELOG | 2 | ||||
-rw-r--r-- | plugins/additional_message_headers/additional_message_headers.php | 2 | ||||
-rw-r--r-- | program/js/app.js | 8 | ||||
-rw-r--r-- | program/js/list.js | 24 | ||||
-rw-r--r-- | skins/larry/includes/links.html | 1 | ||||
-rw-r--r-- | skins/larry/styles.css | 9 | ||||
-rw-r--r-- | skins/larry/templates/mail.html | 2 |
7 files changed, 38 insertions, 10 deletions
@@ -1,6 +1,8 @@ CHANGELOG Roundcube Webmail =========================== +- Fixed iframe scrolling on touch devices +- Optimized message list for touch devices - Fix replacement variables in user-specific base_dn in some LDAP requests (#1489279) - Fix purge action in folder manager (#1489280) - Fix image scaling issues when image has only one dimension smaller than the limit (#1489274) diff --git a/plugins/additional_message_headers/additional_message_headers.php b/plugins/additional_message_headers/additional_message_headers.php index a43018176..c54f77d2d 100644 --- a/plugins/additional_message_headers/additional_message_headers.php +++ b/plugins/additional_message_headers/additional_message_headers.php @@ -7,7 +7,7 @@ * to or remove them from outgoing messages. * * Enable the plugin in config.inc.php and add your desired headers: - * $rcmail_config['additional_message_headers'] = array('User-Agent'); + * $config['additional_message_headers'] = array('User-Agent' => 'My-Very-Own-Webmail'); * * @version @package_version@ * @author Ziba Scott diff --git a/program/js/app.js b/program/js/app.js index 2a4493d01..78ac4c675 100644 --- a/program/js/app.js +++ b/program/js/app.js @@ -1731,6 +1731,14 @@ function rcube_webmail() if (!row.depth && row.has_children && (expando = document.getElementById('rcmexpando'+row.uid))) { row.expando = expando; expando.onmousedown = function(e) { return self.expand_message_row(e, uid); }; + if (bw.mobile) { + expando.addEventListener('touchend', function(e) { + if (e.changedTouches.length == 1) { + self.expand_message_row(e, uid); + return rcube_event.cancel(e); + } + }, false); + } } this.triggerEvent('insertrow', { uid:uid, row:row }); diff --git a/program/js/list.js b/program/js/list.js index 08e4444e1..c89c799b6 100644 --- a/program/js/list.js +++ b/program/js/list.js @@ -125,14 +125,22 @@ init_row: function(row) 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)) - e.preventDefault(); + self.touchmoved = false; + self.drag_row(rcube_event.touchevent(e.touches[0]), this.uid) } }, false); row.addEventListener('touchend', function(e) { - if (e.changedTouches.length == 1) - if (!self.click_row(rcube_event.touchevent(e.changedTouches[0]), this.uid)) + if (e.changedTouches.length == 1) { + if (!self.touchmoved && !self.click_row(rcube_event.touchevent(e.changedTouches[0]), this.uid)) e.preventDefault(); + } + }, false); + row.addEventListener('touchmove', function(e) { + if (e.changedTouches.length == 1) { + self.touchmoved = true; + if (self.drag_active) + e.preventDefault(); + } }, false); } @@ -157,7 +165,7 @@ init_header: function() $(this.list.tHead).replaceWith($(this.fixed_header).find('thead').clone()); $(this.list.tHead).find('tr td').attr('style', ''); // remove fixed widths } - else if (this.list.className.indexOf('fixedheader') >= 0) { + else if (!bw.mobile && this.list.className.indexOf('fixedheader') >= 0) { this.init_fixed_header(); } @@ -408,7 +416,7 @@ drag_row: function(e, id) if (rcube_event.get_button(e) == 2) return true; - this.in_selection_before = this.in_selection(id) ? id : false; + this.in_selection_before = e.istouch || this.in_selection(id) ? id : false; // selects currently unselected row if (!this.in_selection_before) { @@ -416,7 +424,7 @@ drag_row: function(e, id) this.select_row(id, mod_key, false); } - if (this.draggable && this.selection.length) { + if (this.draggable && this.selection.length && this.in_selection(id)) { this.drag_start = true; this.drag_mouse_start = rcube_event.get_mouse_pos(e); rcube_event.add_listener({event:'mousemove', object:this, method:'drag_mouse_move'}); @@ -1256,7 +1264,7 @@ drag_mouse_move: function(e) { // convert touch event if (e.type == 'touchmove') { - if (e.changedTouches.length == 1) + if (e.touches.length == 1 && e.changedTouches.length == 1) e = rcube_event.touchevent(e.changedTouches[0]); else return rcube_event.cancel(e); diff --git a/skins/larry/includes/links.html b/skins/larry/includes/links.html index 8bd8012e1..5a6c8cab3 100644 --- a/skins/larry/includes/links.html +++ b/skins/larry/includes/links.html @@ -1,4 +1,5 @@ <meta http-equiv="X-UA-Compatible" content="IE=EDGE" /> +<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" /> <link rel="shortcut icon" href="/images/favicon.ico"/> <link rel="stylesheet" type="text/css" href="/styles.css" /> <roundcube:if condition="in_array(env:task, array('mail','addressbook','settings'))" /> diff --git a/skins/larry/styles.css b/skins/larry/styles.css index 288b010ed..238c4a297 100644 --- a/skins/larry/styles.css +++ b/skins/larry/styles.css @@ -929,6 +929,15 @@ a.iconlink.upload { background-repeat: no-repeat; } +/* fix scrolling within iframes in webkit browsers on touch devices */ +@media screen and (-webkit-min-device-pixel-ratio:0) { + .iframebox { + overflow: auto; + -webkit-overflow-scrolling: touch; + } +} + + /*** lists ***/ .listbox { diff --git a/skins/larry/templates/mail.html b/skins/larry/templates/mail.html index 7ef12bfdb..5f465d767 100644 --- a/skins/larry/templates/mail.html +++ b/skins/larry/templates/mail.html @@ -112,7 +112,7 @@ <div id="mailview-bottom" class="uibox"> -<div id="mailpreviewframe"> +<div id="mailpreviewframe" class="iframebox"> <roundcube:object name="messagecontentframe" id="messagecontframe" style="width:100%; height:100%" frameborder="0" src="/watermark.html" /> </div> |