mirror of
https://github.com/ankitects/anki.git
synced 2025-09-18 14:02:21 -04:00
Fix 'same cloze' shortcut on macOS
https://forums.ankiweb.net/t/mac-shortcut-for-cloze-deletion-same-card/63785
This commit is contained in:
parent
0b30155c90
commit
278a84f8d2
2 changed files with 25 additions and 4 deletions
|
@ -4,7 +4,7 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
|
|||
-->
|
||||
<script lang="ts">
|
||||
import * as tr from "@generated/ftl";
|
||||
import { isApplePlatform } from "@tslib/platform";
|
||||
import { chromiumVersion, isApplePlatform } from "@tslib/platform";
|
||||
import { getPlatformString } from "@tslib/shortcuts";
|
||||
import { createEventDispatcher } from "svelte";
|
||||
import { get } from "svelte/store";
|
||||
|
@ -22,9 +22,13 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
|
|||
|
||||
const { focusedInput, fields } = noteEditorContext.get();
|
||||
|
||||
// Workaround for Cmd+Option+Shift+C not working on macOS. The keyup approach works
|
||||
// on Linux as well, but fails on Windows.
|
||||
const event = isApplePlatform() ? "keyup" : "keydown";
|
||||
// Workaround for Cmd+Option+Shift+C not working on macOS on older Chromium
|
||||
// versions.
|
||||
const chromiumVer = chromiumVersion();
|
||||
const event =
|
||||
isApplePlatform() && chromiumVer != null && chromiumVer <= 112
|
||||
? "keyup"
|
||||
: "keydown";
|
||||
|
||||
const clozePattern = /\{\{c(\d+)::/gu;
|
||||
function getCurrentHighestCloze(increment: boolean): number {
|
||||
|
|
|
@ -13,3 +13,20 @@ export function isApplePlatform(): boolean {
|
|||
export function isDesktop(): boolean {
|
||||
return !(/iphone|ipad|ipod|android/i.test(window.navigator.userAgent));
|
||||
}
|
||||
|
||||
export function chromiumVersion(): number | null {
|
||||
const userAgent = window.navigator.userAgent;
|
||||
|
||||
// Check if it's a Chromium-based browser (Chrome, Edge, Opera, etc.)
|
||||
// but exclude Safari which also contains "Chrome" in its user agent
|
||||
if (userAgent.includes("Safari") && !userAgent.includes("Chrome")) {
|
||||
return null; // Safari
|
||||
}
|
||||
|
||||
const chromeMatch = userAgent.match(/Chrome\/(\d+)/);
|
||||
if (chromeMatch) {
|
||||
return parseInt(chromeMatch[1], 10);
|
||||
}
|
||||
|
||||
return null; // Not a Chromium-based browser
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue