From 1edabdb50b46a3a980f4715696f879d5c6ba879f Mon Sep 17 00:00:00 2001
From: AkiraFukushima
Date: Wed, 28 Nov 2018 23:00:53 +0900
Subject: [PATCH] refs #750 Switch focus between Hashtag and Toot Detail using
shortcut keys
---
.../TimelineSpace/Contents/Hashtag/Tag.vue | 15 +++++++++++++++
1 file changed, 15 insertions(+)
diff --git a/src/renderer/components/TimelineSpace/Contents/Hashtag/Tag.vue b/src/renderer/components/TimelineSpace/Contents/Hashtag/Tag.vue
index d0a196a7..d4c6a5e3 100644
--- a/src/renderer/components/TimelineSpace/Contents/Hashtag/Tag.vue
+++ b/src/renderer/components/TimelineSpace/Contents/Hashtag/Tag.vue
@@ -14,6 +14,7 @@
v-on:delete="deleteToot"
@focusNext="focusNext"
@focusPrev="focusPrev"
+ @focusRight="focusSidebar"
@selectToot="focusToot(message)"
>
@@ -32,6 +33,7 @@ import { mapState, mapGetters } from 'vuex'
import Toot from '~/src/renderer/components/molecules/Toot'
import scrollTop from '../../../utils/scroll'
import reloadable from '~/src/renderer/components/mixins/reloadable'
+import { Event } from '~/src/renderer/components/event'
export default {
name: 'tag',
@@ -76,6 +78,15 @@ export default {
this.$store.commit('TimelineSpace/changeLoading', false)
})
document.getElementById('scrollable').addEventListener('scroll', this.onScroll)
+
+ Event.$on('focus-timeline', () => {
+ // If focusedId does not change, we have to refresh focusedId because Toot component watch change events.
+ const previousFocusedId = this.focusedId
+ this.focusedId = 0
+ this.$nextTick(function () {
+ this.focusedId = previousFocusedId
+ })
+ })
},
watch: {
tag: function (newTag, oldTag) {
@@ -106,6 +117,7 @@ export default {
beforeDestroy () {
this.$store.dispatch('TimelineSpace/Contents/Hashtag/Tag/stopStreaming')
this.reset()
+ Event.$off('focus-timeline')
},
methods: {
async load (tag) {
@@ -206,6 +218,9 @@ export default {
focusToot (message) {
this.focusedId = message.uri + message.id
},
+ focusSidebar () {
+ Event.$emit('focus-sidebar')
+ },
handleKey (event) {
switch (event.srcKey) {
case 'next':