Skip to content

Commit e5dbce8

Browse files
committed
add shortcut toggle switch
1 parent d0f1877 commit e5dbce8

File tree

2 files changed

+49
-8
lines changed

2 files changed

+49
-8
lines changed

src/components/native/Menu.vue

Lines changed: 31 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ import {
55
ArrowsRightLeftIcon,
66
ArrowTopRightOnSquareIcon,
77
HomeModernIcon,
8+
LockClosedIcon,
9+
LockOpenIcon,
810
} from "@heroicons/vue/20/solid"
911
import { useStorage } from "@vueuse/core"
1012
@@ -20,6 +22,11 @@ const alwaysTargetNewWindow = useStorage("rocox-new-window-target", false)
2022
function toggleTargetMode() {
2123
alwaysTargetNewWindow.value = !alwaysTargetNewWindow.value
2224
}
25+
26+
const alwaysUseFocusShortcut = useStorage("rocox-shortcut-use-focus", true)
27+
function toggleUseFocusShortcut() {
28+
alwaysUseFocusShortcut.value = !alwaysUseFocusShortcut.value
29+
}
2330
</script>
2431

2532
<template>
@@ -116,6 +123,28 @@ function toggleTargetMode() {
116123
}}</span
117124
>
118125
</MenuItem>
126+
<MenuItem
127+
as="div"
128+
class="menu-item"
129+
v-slot="{ disabled, active }"
130+
@click="toggleUseFocusShortcut()"
131+
>
132+
<LockOpenIcon v-show="alwaysUseFocusShortcut" class="icon" />
133+
<LockClosedIcon v-show="!alwaysUseFocusShortcut" class="icon" />
134+
<span
135+
:class="[
136+
'text',
137+
disabled ? 'disabled' : null,
138+
active ? 'active' : null,
139+
]"
140+
title="切换快捷键模式"
141+
>{{
142+
alwaysUseFocusShortcut
143+
? "全局启用使用快捷键"
144+
: "总在应用内使用快捷键"
145+
}}</span
146+
>
147+
</MenuItem>
119148
</MenuItems>
120149
</transition>
121150
</Menu>
@@ -138,7 +167,7 @@ function toggleTargetMode() {
138167
}
139168
140169
.menu-items {
141-
@apply absolute left-0 top-full flex flex-col w-40 mt-2 p-1
170+
@apply absolute left-0 top-full flex flex-col w-fit max-w-xs mt-2 p-1
142171
border-2 rounded border-slate-300 dark:border-slate-500
143172
focus:ring-2 ring-green-300 dark:ring-green-500
144173
bg-sky-50 dark:bg-sky-900
@@ -153,7 +182,7 @@ function toggleTargetMode() {
153182
@apply w-4 h-4 mr-1;
154183
}
155184
.menu-item .text {
156-
@apply inline-block max-w-[6.75rem] text-sm
185+
@apply inline-block w-full text-sm
157186
truncate font-bold;
158187
}
159188

src/components/native/TitleBar.vue

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,15 @@ import {
66
MoonIcon,
77
PaperClipIcon,
88
} from "@heroicons/vue/20/solid"
9-
import { ref, onMounted, onBeforeUnmount, toRefs, watch } from "vue"
10-
import { useRoute } from "vue-router"
9+
import { ref, onMounted, toRefs, watch } from "vue"
10+
import { useRoute, useRouter } from "vue-router"
1111
import { useStorage, useThrottleFn } from "@vueuse/core"
1212
1313
import { appWindow } from "@tauri-apps/api/window"
1414
1515
import { useDarkMode } from "../../composables/useDarkMode"
1616
import { register, unregisterAll } from "@tauri-apps/api/globalShortcut"
17+
import { app } from "@tauri-apps/api"
1718
1819
const $props = withDefaults(
1920
defineProps<{
@@ -25,6 +26,7 @@ const $props = withDefaults(
2526
)
2627
const { titleText } = toRefs($props)
2728
const $route = useRoute()
29+
const $router = useRouter()
2830
2931
const title = ref("Rocox Codex")
3032
const titleStack = useStorage<string[]>("rocox-title-stack", [])
@@ -105,14 +107,24 @@ function removeMoveClass(event: MouseEvent) {
105107
}
106108
107109
const { isDarkMode, toggleDarkMode } = useDarkMode()
110+
const alwaysUseFocusShortcut = useStorage("rocox-shortcut-use-focus", true)
108111
109112
onMounted(async () => {
110113
await unregisterAll()
111-
await register("CommandOrControl+D", () => {
112-
toggleDarkMode()
114+
await register("CommandOrControl+D", async () => {
115+
if (alwaysUseFocusShortcut.value) {
116+
if (await appWindow.isFocused()) toggleDarkMode()
117+
} else toggleDarkMode()
113118
})
114-
await register("CommandOrControl+P", () => {
115-
throttleToggleIspinned()
119+
await register("CommandOrControl+P", async () => {
120+
if (alwaysUseFocusShortcut.value) {
121+
if (await appWindow.isFocused()) throttleToggleIspinned()
122+
} else throttleToggleIspinned()
123+
})
124+
await register("CommandOrControl+Q", async () => {
125+
if (alwaysUseFocusShortcut.value) {
126+
if (await appWindow.isFocused()) $router.go(0)
127+
} else $router.go(0)
116128
})
117129
})
118130
</script>

0 commit comments

Comments
 (0)