[Libreoffice-commits] online.git: loleaflet/src
Marco Cecchetti (via logerrit)
logerrit at kemper.freedesktop.org
Wed Jul 22 14:02:58 UTC 2020
loleaflet/src/control/Control.DocumentNameInput.js | 36 ++++++++++++++++-----
loleaflet/src/core/Util.js | 9 +++++
2 files changed, 37 insertions(+), 8 deletions(-)
New commits:
commit 5f110789a108f4c75d162dd8e1afaa40fdafc4b7
Author: Marco Cecchetti <marco.cecchetti at collabora.com>
AuthorDate: Mon Jul 20 18:53:18 2020 +0200
Commit: Andras Timar <andras.timar at collabora.com>
CommitDate: Wed Jul 22 16:02:40 2020 +0200
leaflet: setup document name input field width
Change-Id: I654bdea578c8768c62db08bd488613f983336d43
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/99140
Tested-by: Jenkins
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice at gmail.com>
Reviewed-by: Andras Timar <andras.timar at collabora.com>
diff --git a/loleaflet/src/control/Control.DocumentNameInput.js b/loleaflet/src/control/Control.DocumentNameInput.js
index 7ccc5993d..730dd0383 100644
--- a/loleaflet/src/control/Control.DocumentNameInput.js
+++ b/loleaflet/src/control/Control.DocumentNameInput.js
@@ -11,6 +11,7 @@ L.Control.DocumentNameInput = L.Control.extend({
map.on('doclayerinit', this.onDocLayerInit, this);
map.on('wopiprops', this.onWopiProps, this);
+ map.on('resize', this.onResize, this);
$('#document-title-pencil').addClass('editable');
},
@@ -42,11 +43,13 @@ L.Control.DocumentNameInput = L.Control.extend({
documentNameCancel: function() {
$('#document-name-input').val(this.map['wopi'].BreadcrumbDocName);
+ this._setNameInputWidth();
this.map._onGotFocus();
},
onDocumentNameKeyPress: function(e) {
- $('#document-name-input').css('width',(($('#document-name-input').val().length + 1) * 10) + 'px');
+ var tail = (e.keyCode !== 13 && e.keyCode !== 27) ? 'X' : null;
+ this._setNameInputWidth(tail);
if (e.keyCode === 13) { // Enter key
this.documentNameConfirm();
} else if (e.keyCode === 27) { // Escape key
@@ -66,13 +69,7 @@ L.Control.DocumentNameInput = L.Control.extend({
},
onDocLayerInit: function() {
- var value = $('#document-name-input').val();
- if (value.length < 27) {
- $('#document-name-input').attr('size', value.length);
- }
- else {
- $('#document-name-input').attr('size', '25');
- }
+ this._setNameInputWidth();
// FIXME: Android app would display a temporary filename, not the actual filename
if (window.ThisIsTheAndroidApp) {
@@ -114,6 +111,29 @@ L.Control.DocumentNameInput = L.Control.extend({
$('#document-title-pencil').removeClass('editable');
$('#document-name-input').off('keypress', this.onDocumentNameKeyPress);
}
+ },
+
+ onResize: function() {
+ this._setNameInputWidth();
+ },
+
+ _getMaxAvailableWidth: function() {
+ var x = $('#document-titlebar').prop('offsetLeft') + $('.document-title').prop('offsetLeft') + $('#document-name-input').prop('offsetLeft');
+ var containerWidth = parseInt($('.main-nav').css('width'));
+ var maxWidth = Math.max(containerWidth - x - 30, 0);
+ maxWidth = Math.max(maxWidth, 300); // input field at least 300px
+ return maxWidth;
+ },
+
+ _setNameInputWidth: function(tail) {
+ var documentNameInput = $('#document-name-input');
+ var content = (typeof tail === 'string') ? documentNameInput.val() + tail : documentNameInput.val();
+ var font = documentNameInput.css('font');
+ var textWidth = L.getTextWidth(content, font) + 10;
+ var maxWidth = this._getMaxAvailableWidth();
+ //console.log('_setNameInputWidth: textWidth: ' + textWidth + ', maxWidth: ' + maxWidth);
+ textWidth = Math.min(textWidth, maxWidth);
+ documentNameInput.css('width', textWidth + 'px');
}
});
diff --git a/loleaflet/src/core/Util.js b/loleaflet/src/core/Util.js
index 0ea2b0ff6..596dfa756 100644
--- a/loleaflet/src/core/Util.js
+++ b/loleaflet/src/core/Util.js
@@ -199,6 +199,14 @@ L.Util = {
mm100thToInch: function(mm) {
return mm / 2540;
+ },
+
+ getTextWidth: function(text, font) {
+ var canvas = L.Util.getTextWidth._canvas || (L.Util.getTextWidth._canvas = document.createElement('canvas'));
+ var context = canvas.getContext('2d');
+ context.font = font;
+ var metrics = context.measureText(text);
+ return Math.floor(metrics.width);
}
};
@@ -261,3 +269,4 @@ L.getDpiScaleFactor = L.Util.getDpiScaleFactor;
L.toggleFullScreen = L.Util.toggleFullScreen;
L.isEmpty = L.Util.isEmpty;
L.mm100thToInch = L.Util.mm100thToInch;
+L.getTextWidth = L.Util.getTextWidth;
\ No newline at end of file
More information about the Libreoffice-commits
mailing list