# HG changeset patch # User Simon Descarpentries # Date 1383152922 -3600 # Node ID 69503659fe8f4d9e28b237637faf4dec3228a111 # Parent 8e116b8ddbc3f919f1ef0c4aebe0ad54c485236d [c_selection.js] If safari_mobile, get current selection from a previously created global variable [c_sync.js] ref where the safari_mobile global is used [c_text_view_comments.js] if safari_mobile update selection also on selectionChange event [text_view_comments.html] if safari_mobile store a clone of the current selection on each selectionChange set layout width to 99% to improve display factorize safari mobile detection code diff -r 8e116b8ddbc3 -r 69503659fe8f src/cm/media/js/client/c_selection.js --- a/src/cm/media/js/client/c_selection.js Mon Oct 21 16:50:41 2013 +0200 +++ b/src/cm/media/js/client/c_selection.js Wed Oct 30 18:08:42 2013 +0100 @@ -26,11 +26,12 @@ // when selection starts/ends in/on a non textual element (
for example) we very often have anchorNode/focusNode == body elt // TODO adapt this body case by considering offset ( cf. http://www.w3.org/TR/DOM-Level-2-Traversal-Range/ranges.html) + getSelectionInfo = function () { var startNode = null, endNode = null, startOffset = 0, endOffset = 0, text = '' ; if (window.getSelection) { // everything else than IE - var userSelection = window.getSelection(); + var userSelection = safari_mobile ? storedSelection : window.getSelection (); if (userSelection.rangeCount > 0) { var range = userSelection.getRangeAt(0) ; @@ -166,7 +167,7 @@ else return null ; } - else + else return null ; } diff -r 8e116b8ddbc3 -r 69503659fe8f src/cm/media/js/client/c_sync.js --- a/src/cm/media/js/client/c_sync.js Mon Oct 21 16:50:41 2013 +0200 +++ b/src/cm/media/js/client/c_sync.js Wed Oct 30 18:08:42 2013 +0100 @@ -17,7 +17,9 @@ } // Are we on Safari mobile ? -var safari_mobile = /iPhone|iPod|iPad/.test(navigator.userAgent); +// made global to be used in templates/site/text_view_comments.html +// and in media/js/site/c_text_view_comments.js +safari_mobile = /iPhone|iPod|iPad/.test(navigator.userAgent); // If so, we must scroll the jQuery UI pane created for Safari mobile instead of the whole document var the_scrolling_part = safari_mobile ? '#maincontainer' : 'document' ; diff -r 8e116b8ddbc3 -r 69503659fe8f src/cm/media/js/site/c_text_view_comments.js --- a/src/cm/media/js/site/c_text_view_comments.js Mon Oct 21 16:50:41 2013 +0200 +++ b/src/cm/media/js/site/c_text_view_comments.js Wed Oct 30 18:08:42 2013 +0100 @@ -164,6 +164,10 @@ } } ; +// safari_mobile defined in media/js/client/c_sync.js +if (safari_mobile) + onSelectionChange = onTextMouseUp; + gLastScrollTime = null ; checkForAlignement = function () { var now = (new Date()).getTime() ; diff -r 8e116b8ddbc3 -r 69503659fe8f src/cm/templates/site/text_view_comments.html --- a/src/cm/templates/site/text_view_comments.html Mon Oct 21 16:50:41 2013 +0200 +++ b/src/cm/templates/site/text_view_comments.html Wed Oct 30 18:08:42 2013 +0100 @@ -47,8 +47,9 @@