From e67fdbe055fd533b42ae16640e234405482a6075 Mon Sep 17 00:00:00 2001 From: pipipi-pikachu Date: Wed, 18 May 2022 20:03:56 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E7=BF=BB=E9=A1=B5=E5=BF=AB=E6=8D=B7?= =?UTF-8?q?=E9=94=AE=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/configs/hotkey.ts | 11 +++++--- src/hooks/useGlobalHotkey.ts | 25 +++++++++++-------- src/hooks/useMoveElement.ts | 6 ----- src/hooks/useSlideHandler.ts | 4 ++- .../element/TableElement/EditableTable.vue | 4 +-- 5 files changed, 27 insertions(+), 23 deletions(-) diff --git a/src/configs/hotkey.ts b/src/configs/hotkey.ts index ccac64c4..2c37bfce 100644 --- a/src/configs/hotkey.ts +++ b/src/configs/hotkey.ts @@ -45,8 +45,9 @@ export const HOTKEY_DOC = [ type: '幻灯片放映', children: [ { label: '开始放映幻灯片', value: 'Ctrl + F' }, - { label: '切换上一页', value: '↑ / ←' }, - { label: '切换下一页', value: '↓ / → / Enter / Space' }, + { label: '切换上一页', value: '↑ / ← / PgUp' }, + { label: '切换下一页', value: '↓ / → / PgDown' }, + { label: '切换下一页', value: 'Enter / Space' }, { label: '退出放映', value: 'ESC' }, ], }, @@ -59,8 +60,10 @@ export const HOTKEY_DOC = [ { label: '放大画布', value: 'Ctrl + =' }, { label: '缩小画布', value: 'Ctrl + -' }, { label: '使画布适应当前屏幕', value: 'Ctrl + 0' }, - { label: '编辑上一页', value: '↑ / ← / 鼠标上滚' }, - { label: '编辑下一页', value: '↓ / → / 鼠标下滚' }, + { label: '上一页(未选中元素)', value: '↑ / ←' }, + { label: '下一页(未选中元素)', value: '↓ / →' }, + { label: '上一页', value: '鼠标上滚 / PgUp' }, + { label: '下一页', value: '鼠标下滚 / PgDown' }, ], }, { diff --git a/src/hooks/useGlobalHotkey.ts b/src/hooks/useGlobalHotkey.ts index f0afcb26..bd739f2e 100644 --- a/src/hooks/useGlobalHotkey.ts +++ b/src/hooks/useGlobalHotkey.ts @@ -95,6 +95,11 @@ export default () => { else if (key === KEYS.UP || key === KEYS.DOWN) updateSlideIndex(key) } + const moveSlide = (key: string) => { + if (key === KEYS.PAGEUP) updateSlideIndex(KEYS.UP) + else if (key === KEYS.PAGEDOWN) updateSlideIndex(KEYS.DOWN) + } + const order = (command: ElementOrderCommands) => { if (!handleElement.value) return orderElement(handleElement.value, command) @@ -217,6 +222,16 @@ export default () => { e.preventDefault() move(KEYS.RIGHT) } + if (key === KEYS.PAGEUP) { + if (disableHotkeys.value) return + e.preventDefault() + moveSlide(KEYS.PAGEUP) + } + if (key === KEYS.PAGEDOWN) { + if (disableHotkeys.value) return + e.preventDefault() + moveSlide(KEYS.PAGEDOWN) + } if (key === KEYS.ENTER) { if (disableHotkeys.value) return e.preventDefault() @@ -242,16 +257,6 @@ export default () => { e.preventDefault() tabActiveElement() } - if (key === KEYS.PAGEUP) { - if (disableHotkeys.value) return - e.preventDefault() - move(KEYS.UP) - } - if (key === KEYS.PAGEDOWN) { - if (disableHotkeys.value) return - e.preventDefault() - move(KEYS.DOWN) - } } const keyupListener = () => { diff --git a/src/hooks/useMoveElement.ts b/src/hooks/useMoveElement.ts index d8ba157c..64630dee 100644 --- a/src/hooks/useMoveElement.ts +++ b/src/hooks/useMoveElement.ts @@ -35,12 +35,6 @@ export default () => { case KEYS.DOWN: top = top + step break - case KEYS.PAGEUP: - top = top - step - break - case KEYS.PAGEDOWN: - top = top + step - break default: break } return { ...el, left, top } diff --git a/src/hooks/useSlideHandler.ts b/src/hooks/useSlideHandler.ts index 17fc13f7..257bfb2b 100644 --- a/src/hooks/useSlideHandler.ts +++ b/src/hooks/useSlideHandler.ts @@ -14,7 +14,7 @@ import useHistorySnapshot from '@/hooks/useHistorySnapshot' export default () => { const mainStore = useMainStore() const slidesStore = useSlidesStore() - const { selectedSlidesIndex: _selectedSlidesIndex } = storeToRefs(mainStore) + const { selectedSlidesIndex: _selectedSlidesIndex, activeElementIdList } = storeToRefs(mainStore) const { currentSlide, slides, theme, slideIndex } = storeToRefs(slidesStore) const selectedSlidesIndex = computed(() => [..._selectedSlidesIndex.value, slideIndex.value]) @@ -45,9 +45,11 @@ export default () => { */ const updateSlideIndex = (command: string) => { if (command === KEYS.UP && slideIndex.value > 0) { + if (activeElementIdList.value.length) mainStore.setActiveElementIdList([]) slidesStore.updateSlideIndex(slideIndex.value - 1) } else if (command === KEYS.DOWN && slideIndex.value < slides.value.length - 1) { + if (activeElementIdList.value.length) mainStore.setActiveElementIdList([]) slidesStore.updateSlideIndex(slideIndex.value + 1) } } diff --git a/src/views/components/element/TableElement/EditableTable.vue b/src/views/components/element/TableElement/EditableTable.vue index 2813ed20..5c40686d 100644 --- a/src/views/components/element/TableElement/EditableTable.vue +++ b/src/views/components/element/TableElement/EditableTable.vue @@ -505,12 +505,12 @@ export default defineComponent({ e.preventDefault() tabActiveCell() } - if (e.ctrlKey && (key === KEYS.UP || key === KEYS.PAGEUP)) { + if (e.ctrlKey && key === KEYS.UP) { e.preventDefault() const rowIndex = +selectedCells.value[0].split('_')[0] insertRow(rowIndex) } - if (e.ctrlKey && (key === KEYS.DOWN || key === KEYS.PAGEDOWN)) { + if (e.ctrlKey && key === KEYS.DOWN) { e.preventDefault() const rowIndex = +selectedCells.value[0].split('_')[0] insertRow(rowIndex + 1)