android/lib/src/main/java/org/libreoffice/androidlib/LOActivity.java | 6 ++++++ loleaflet/src/control/Control.AlertDialog.js | 6 +++++- loleaflet/src/control/Control.Infobar.js | 6 +++++- loleaflet/src/control/Control.Menubar.js | 7 ++++++- loleaflet/src/control/Toolbar.js | 2 +- loleaflet/src/core/Socket.js | 4 ++-- 6 files changed, 25 insertions(+), 6 deletions(-)
New commits: commit 2174206de1a8f5a87efef934b208c8b95db03447 Author: Jan Holesovsky <ke...@collabora.com> AuthorDate: Fri Feb 14 15:22:46 2020 +0100 Commit: Jan Holesovsky <ke...@collabora.com> CommitDate: Fri Feb 14 15:43:58 2020 +0100 android: Don't hang after returning from a hyperlink. It seems that it is actually the webview that gets into a weird state after returning from the url. Unfortunately intercepting the calls via shouldOverrideUrlLoading() in a WebViewClient does not help, so the only way seems to be to make sure we actually don't have any clickable URL anywhere, and for the rest, we issue a 'HYPERLINK' postMobileMessage... Change-Id: I62dc2cfbe867e97aec7fac5f83c4399814ef2ce4 Reviewed-on: https://gerrit.libreoffice.org/c/online/+/88720 Tested-by: Jan Holesovsky <ke...@collabora.com> Reviewed-by: Jan Holesovsky <ke...@collabora.com> diff --git a/android/lib/src/main/java/org/libreoffice/androidlib/LOActivity.java b/android/lib/src/main/java/org/libreoffice/androidlib/LOActivity.java index 424e0cd09..7033707e5 100644 --- a/android/lib/src/main/java/org/libreoffice/androidlib/LOActivity.java +++ b/android/lib/src/main/java/org/libreoffice/androidlib/LOActivity.java @@ -785,6 +785,12 @@ public class LOActivity extends AppCompatActivity { } return false; } + case "HYPERLINK": { + Intent intent = new Intent(Intent.ACTION_VIEW); + intent.setData(Uri.parse(messageAndParam[1])); + startActivity(intent); + return false; + } } return true; } diff --git a/loleaflet/src/control/Control.AlertDialog.js b/loleaflet/src/control/Control.AlertDialog.js index c73d87d92..20404dcb5 100644 --- a/loleaflet/src/control/Control.AlertDialog.js +++ b/loleaflet/src/control/Control.AlertDialog.js @@ -62,7 +62,11 @@ L.Control.AlertDialog = L.Control.extend({ type: 'button', className: 'vex-dialog-button-primary', click: function openClick () { - window.open(url, '_blank'); + if (window.ThisIsAMobileApp) { + window.postMobileMessage('HYPERLINK ' + url); + } else { + window.open(url, '_blank'); + } vex.closeAll(); } }); diff --git a/loleaflet/src/control/Control.Infobar.js b/loleaflet/src/control/Control.Infobar.js index b00d0cdb2..48b92c8a1 100644 --- a/loleaflet/src/control/Control.Infobar.js +++ b/loleaflet/src/control/Control.Infobar.js @@ -22,7 +22,11 @@ L.Control.Infobar = L.Control.extend({ return; if (e.action.startsWith('http')) { // We have a link - var win = window.open(e.action, '_blank'); + if (window.ThisIsAMobileApp) { + window.postMobileMessage('HYPERLINK ' + e.action); + } else { + var win = window.open(e.action, '_blank'); + } win.focus(); } }; diff --git a/loleaflet/src/control/Control.Menubar.js b/loleaflet/src/control/Control.Menubar.js index 1a5cdc19d..6ea82050f 100644 --- a/loleaflet/src/control/Control.Menubar.js +++ b/loleaflet/src/control/Control.Menubar.js @@ -1155,7 +1155,12 @@ L.Control.Menubar = L.Control.extend({ } else if (id === 'about') { this._map.showLOAboutDialog(); } else if (id === 'report-an-issue') { - window.open('https://bugs.documentfoundation.org/enter_bug.cgi?product=LibreOffice%20Online', '_blank'); + var bugLink = 'https://bugs.documentfoundation.org/enter_bug.cgi?product=LibreOffice%20Online'; + if (window.ThisIsAMobileApp) { + window.postMobileMessage('HYPERLINK ' + bugLink); + } else { + window.open(bugLink, '_blank'); + } } else if (id === 'inserthyperlink') { this._map.showHyperlinkDialog(); } else if (id === 'keyboard-shortcuts' || id === 'online-help') { diff --git a/loleaflet/src/control/Toolbar.js b/loleaflet/src/control/Toolbar.js index 2d9e007f2..e6316188a 100644 --- a/loleaflet/src/control/Toolbar.js +++ b/loleaflet/src/control/Toolbar.js @@ -358,7 +358,7 @@ L.Map.include({ content.find('#product-name').text(productName); var productString = _('This version of %productName is powered by'); var productNameWithURL; - if (!window.ThisIsTheiOSApp) + if (!window.ThisIsAMobileApp) productNameWithURL = '<a href="' + sanitizeUrl.sanitizeUrl(productURL) + '" target="_blank">' + productName + '</a>'; else diff --git a/loleaflet/src/core/Socket.js b/loleaflet/src/core/Socket.js index 5978d5e81..49bdc41d5 100644 --- a/loleaflet/src/core/Socket.js +++ b/loleaflet/src/core/Socket.js @@ -278,7 +278,7 @@ L.Socket = L.Class.extend({ this.WSDServer = JSON.parse(textMsg.substring(textMsg.indexOf('{'))); var h = this.WSDServer.Hash; if (parseInt(h,16).toString(16) === h.toLowerCase().replace(/^0+/, '')) { - if (!window.ThisIsTheiOSApp) { + if (!window.ThisIsAMobileApp) { h = '<a target="_blank" href="https://hub.libreoffice.org/git-online/' + h + '">' + h + '</a>'; } $('#loolwsd-version').html(this.WSDServer.Version + ' (git hash: ' + h + ')'); @@ -302,7 +302,7 @@ L.Socket = L.Class.extend({ else if (textMsg.startsWith('lokitversion ')) { var lokitVersionObj = JSON.parse(textMsg.substring(textMsg.indexOf('{'))); h = lokitVersionObj.BuildId.substring(0, 7); - if (!window.ThisIsTheiOSApp && parseInt(h,16).toString(16) === h.toLowerCase().replace(/^0+/, '')) { + if (!window.ThisIsAMobileApp && parseInt(h,16).toString(16) === h.toLowerCase().replace(/^0+/, '')) { h = '<a target="_blank" href="https://hub.libreoffice.org/git-core/' + h + '">' + h + '</a>'; } $('#lokit-version').html(lokitVersionObj.ProductName + ' ' + _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits