-
-
Notifications
You must be signed in to change notification settings - Fork 111
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
refactor(web): OSK spacebar-label updates now managed by layer object 🪠 #11175
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
@@ -4,6 +4,11 @@ import OSKRow from './oskRow.js'; | |||||||||||||||||||||||||||||||||||||
import OSKBaseKey from './oskBaseKey.js'; | ||||||||||||||||||||||||||||||||||||||
import VisualKeyboard from '../visualKeyboard.js'; | ||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||
export interface LayerLayoutParams { | ||||||||||||||||||||||||||||||||||||||
keyboardHeight: number; | ||||||||||||||||||||||||||||||||||||||
spacebarText: string; | ||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||
export default class OSKLayer { | ||||||||||||||||||||||||||||||||||||||
public readonly element: HTMLDivElement; | ||||||||||||||||||||||||||||||||||||||
public readonly rows: OSKRow[]; | ||||||||||||||||||||||||||||||||||||||
|
@@ -76,6 +81,21 @@ export default class OSKLayer { | |||||||||||||||||||||||||||||||||||||
this.capsKey = this.findKey('K_CAPS'); | ||||||||||||||||||||||||||||||||||||||
this.numKey = this.findKey('K_NUMLOCK'); | ||||||||||||||||||||||||||||||||||||||
this.scrollKey = this.findKey('K_SCROLL'); | ||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||
if(this.spaceBarKey) { | ||||||||||||||||||||||||||||||||||||||
const spacebarLabel = this.spaceBarKey.label; | ||||||||||||||||||||||||||||||||||||||
let tButton = this.spaceBarKey.btn; | ||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||
if (typeof (tButton.className) == 'undefined' || tButton.className == '') { | ||||||||||||||||||||||||||||||||||||||
tButton.className = 'kmw-spacebar'; | ||||||||||||||||||||||||||||||||||||||
} else if (tButton.className.indexOf('kmw-spacebar') == -1) { | ||||||||||||||||||||||||||||||||||||||
tButton.className += ' kmw-spacebar'; | ||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||
if (spacebarLabel.className != 'kmw-spacebar-caption') { | ||||||||||||||||||||||||||||||||||||||
spacebarLabel.className = 'kmw-spacebar-caption'; | ||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||
Comment on lines
+95
to
+97
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
No need to guard this ... I am sure it'll already be optimized.
Comment on lines
+86
to
+97
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Or how about this ... so much shorter:
Suggested change
|
||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||
/** | ||||||||||||||||||||||||||||||||||||||
|
@@ -96,7 +116,35 @@ export default class OSKLayer { | |||||||||||||||||||||||||||||||||||||
return null; | ||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||
public refreshLayout(vkbd: VisualKeyboard, layerHeight: number) { | ||||||||||||||||||||||||||||||||||||||
/** | ||||||||||||||||||||||||||||||||||||||
* Indicate the current language and keyboard on the space bar | ||||||||||||||||||||||||||||||||||||||
**/ | ||||||||||||||||||||||||||||||||||||||
showLanguage(displayName: string) { | ||||||||||||||||||||||||||||||||||||||
if(!this.spaceBarKey) { | ||||||||||||||||||||||||||||||||||||||
return () => {}; | ||||||||||||||||||||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. What's this about? Nothing else returns anything? |
||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||
try { | ||||||||||||||||||||||||||||||||||||||
const spacebarLabel = this.spaceBarKey.label; | ||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||
// The key can read the text from here during the display update without us | ||||||||||||||||||||||||||||||||||||||
// needing to trigger a reflow by running the closure below early. | ||||||||||||||||||||||||||||||||||||||
this.spaceBarKey.spec.text = displayName; | ||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||
// It sounds redundant, but this dramatically cuts down on browser DOM processing; | ||||||||||||||||||||||||||||||||||||||
// but sometimes innerText is reported empty when it actually isn't, so set it | ||||||||||||||||||||||||||||||||||||||
// anyway in that case (Safari, iOS 14.4) | ||||||||||||||||||||||||||||||||||||||
if (spacebarLabel.innerText != displayName || displayName == '') { | ||||||||||||||||||||||||||||||||||||||
spacebarLabel.innerText = displayName; | ||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||
catch (ex) { } | ||||||||||||||||||||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Why are we catching everything here? |
||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||
public refreshLayout(vkbd: VisualKeyboard, layoutParams: LayerLayoutParams) { | ||||||||||||||||||||||||||||||||||||||
const layerHeight = layoutParams.keyboardHeight; | ||||||||||||||||||||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Why is this here? |
||||||||||||||||||||||||||||||||||||||
this.showLanguage(layoutParams.spacebarText); | ||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||
// Check the heights of each row, in case different layers have different row counts. | ||||||||||||||||||||||||||||||||||||||
const nRows = this.rows.length; | ||||||||||||||||||||||||||||||||||||||
const rowHeight = this._rowHeight = Math.floor(layerHeight/(nRows == 0 ? 1 : nRows)); | ||||||||||||||||||||||||||||||||||||||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
https://developer.mozilla.org/en-US/docs/Web/API/Element/classList