From 94a9ab4a00a402a6bc341052cf98ee4773208c3e Mon Sep 17 00:00:00 2001 From: Darcy Wong Date: Mon, 18 Mar 2019 15:45:23 +0700 Subject: [PATCH] Clean up adjustHeights() The methods in `kmwnative.ts` and `kmwembedded.ts` are nearly identical. Also added a few pixels to the Android OSK dimensions. --- .../src/main/res/values-sw600dp/dimens.xml | 2 +- .../KMEA/app/src/main/res/values/dimens.xml | 2 +- web/source/kmwembedded.ts | 33 ++++++++++--------- web/source/kmwnative.ts | 13 ++++---- 4 files changed, 26 insertions(+), 24 deletions(-) diff --git a/android/KMEA/app/src/main/res/values-sw600dp/dimens.xml b/android/KMEA/app/src/main/res/values-sw600dp/dimens.xml index 3a46f2826f..05cfa1c526 100644 --- a/android/KMEA/app/src/main/res/values-sw600dp/dimens.xml +++ b/android/KMEA/app/src/main/res/values-sw600dp/dimens.xml @@ -1,7 +1,7 @@ - 305dp + 375dp 58.5dp 73.5dp 32dp diff --git a/android/KMEA/app/src/main/res/values/dimens.xml b/android/KMEA/app/src/main/res/values/dimens.xml index 7dfbd8a441..bb535a1c11 100644 --- a/android/KMEA/app/src/main/res/values/dimens.xml +++ b/android/KMEA/app/src/main/res/values/dimens.xml @@ -1,7 +1,7 @@ - 205dp + 275dp 34.25dp 49.25dp 21dp diff --git a/web/source/kmwembedded.ts b/web/source/kmwembedded.ts index 994a9d5a0f..d4d59e2169 100644 --- a/web/source/kmwembedded.ts +++ b/web/source/kmwembedded.ts @@ -111,43 +111,42 @@ namespace com.keyman.osk { * Adjust the absolute height of each keyboard element after a rotation - modified for KMEI, 13/11/14 * **/ - VisualKeyboard.prototype.adjustHeights=function(this: VisualKeyboard): boolean { + VisualKeyboard.prototype.adjustHeights = function(this: VisualKeyboard): boolean { let keyman = com.keyman.singleton; - let osk = keyman.osk; - let _Box = osk._Box; + let oskManager = keyman.osk; + let _Box = oskManager._Box; let util = keyman.util; let device = util.device; - if(!_Box || !_Box.childNodes || !this.kbdDiv || !this.kbdDiv.firstChild || !this.kbdDiv.firstChild.firstChild.childNodes) { + if(!_Box || !this.kbdDiv || !this.kbdDiv.firstChild || !this.kbdDiv.firstChild.firstChild.childNodes) { return false; } - var layers=_Box.childNodes.item(1).firstChild.childNodes, + var layers=this.kbdDiv.firstChild.childNodes, nRows=layers[0].childNodes.length, - oskHeight=osk.getHeight(), - rowHeight=Math.floor(oskHeight/nRows), + oskHeight=oskManager.getHeight(), + bannerHeight=oskManager.banner.height, + rowHeight=Math.floor((oskHeight-bannerHeight)/(nRows == 0 ? 1 : nRows)), nLayer,nRow,rs,keys,nKeys,nKey,key,ks,j,pad=4,fs=1.0; if(device.OS == 'Android' && 'devicePixelRatio' in window) { rowHeight = rowHeight/window.devicePixelRatio; } + oskHeight=nRows*rowHeight+bannerHeight; - oskHeight=nRows*rowHeight; - - var b: HTMLElement = osk._Box, bs=b.style; + var b: HTMLElement = _Box, bs=b.style; bs.height=bs.maxHeight=(oskHeight+3)+'px'; - // sort out childNodes keymanweb_banner_bar and visualOSK b = b.childNodes.item(1).firstChild; bs=b.style; bs.height=bs.maxHeight=(oskHeight+3)+'px'; pad = Math.round(0.15*rowHeight); var resizeLabels=(device.OS == 'iOS' && device.formFactor == 'phone' && util.landscapeView()); - + for(nLayer=0;nLayer layers[nLayer]).style.height=(oskHeight+3)+'px'; + ( layers[nLayer]).style.height=(oskHeight-bannerHeight+3)+'px'; for(nRow=0; nRow layers[nLayer].childNodes[nRow]).style; @@ -158,7 +157,7 @@ namespace com.keyman.osk { for(nKey=0;nKey 0)) key.childNodes[0].style.fontSize='6px'; + if(resizeLabels && (j > 0)) { + key.childNodes[0].style.fontSize='6px'; + } } } } diff --git a/web/source/kmwnative.ts b/web/source/kmwnative.ts index cd7b07ee2a..aec8f2c878 100644 --- a/web/source/kmwnative.ts +++ b/web/source/kmwnative.ts @@ -373,7 +373,7 @@ namespace com.keyman.osk { let device = util.device; if(!_Box || !this.kbdDiv || !this.kbdDiv.firstChild || !this.kbdDiv.firstChild.firstChild.childNodes) { - return; + return false; } var layers=this.kbdDiv.firstChild.childNodes, @@ -381,18 +381,19 @@ namespace com.keyman.osk { oskHeight=oskManager.getHeight(), bannerHeight=oskManager.banner.height, rowHeight=Math.floor((oskHeight-bannerHeight)/(nRows == 0 ? 1 : nRows)), - nLayer,nRow,rs,keys,nKeys,nKey,key,ks,j,pad,fs=1.0; + nLayer,nRow,rs,keys,nKeys,nKey,key,ks,j,pad=4,fs=1.0; if(device.OS == 'Android' && 'devicePixelRatio' in window) { rowHeight = rowHeight/window.devicePixelRatio; } oskHeight=nRows*rowHeight+bannerHeight; - var b: HTMLElement = _Box,bs=b.style; + var b: HTMLElement = _Box, bs=b.style; bs.height=bs.maxHeight=(oskHeight+3)+'px'; b = b.childNodes.item(1).firstChild; bs=b.style; bs.height=bs.maxHeight=(oskHeight+3)+'px'; + pad = Math.round(0.15*rowHeight); // TODO: Logically, this should be needed for Android, too - may need to be changed for the next version! if(device.OS == 'iOS') { @@ -405,10 +406,8 @@ namespace com.keyman.osk { for(nLayer=0;nLayer layers[nLayer]).style.height=(oskHeight-bannerHeight+3)+'px'; - pad = Math.round(0.15*rowHeight); - ( layers[nLayer]).style.height=(oskHeight+3)+'px'; for(nRow=0; nRow layers[nLayer].childNodes[nRow]).style; rs.bottom=(nRows-nRow-1)*rowHeight+1+'px'; @@ -437,6 +436,8 @@ namespace com.keyman.osk { } } } + + return true; }; // /**