FEATURE: on iPad bluetooth keyboard use ALT-ENTER for post submit

Command and Control can not be properly detected via JavaScript so lean on
Alt that can be detected.
This commit is contained in:
Sam 2019-02-28 16:41:31 +11:00
parent 0b86a99c39
commit 06abecdb41
3 changed files with 22 additions and 6 deletions

View File

@ -10,7 +10,7 @@ import {
setLocalTheme
} from "discourse/lib/theme-selector";
import { popupAjaxError } from "discourse/lib/ajax-error";
import { safariHacksDisabled } from "discourse/lib/utilities";
import { safariHacksDisabled, isiPad } from "discourse/lib/utilities";
const USER_HOMES = {
1: "latest",
@ -49,10 +49,7 @@ export default Ember.Controller.extend(PreferencesTabController, {
@computed()
isiPad() {
return (
navigator.userAgent.match(/iPad/g) &&
!navigator.userAgent.match(/Trident/g)
);
return isiPad();
},
@computed()

View File

@ -550,6 +550,17 @@ export function isAppleDevice() {
);
}
let iPadDetected = undefined;
export function isiPad() {
if (iPadDetected === undefined) {
iPadDetected =
navigator.userAgent.match(/iPad/g) &&
!navigator.userAgent.match(/Trident/g);
}
return iPadDetected;
}
export function safariHacksDisabled() {
let pref = localStorage.getItem("safari-hacks-disabled");
let result = false;

View File

@ -1,11 +1,19 @@
import { isiPad } from "discourse/lib/utilities";
// A mixin where hitting ESC calls `cancelled` and ctrl+enter calls `save.
export default {
keyDown(e) {
if (e.which === 27) {
this.cancelled();
return false;
} else if (e.which === 13 && (e.ctrlKey || e.metaKey)) {
} else if (
e.which === 13 &&
(e.ctrlKey || e.metaKey || (isiPad() && e.altKey))
) {
// CTRL+ENTER or CMD+ENTER
//
// iPad physical keyboard does not offer Command or Control detection
// so use ALT-ENTER
this.save();
return false;
}