From c1ac799c0b3e01e9b35772f81468ee273a0e8ec3 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Mon, 26 Aug 2019 14:32:18 +0530 Subject: [PATCH] Get Esc working in any panel --- src/pyj/read_book/view.pyj | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/pyj/read_book/view.pyj b/src/pyj/read_book/view.pyj index 4a5300301d..0266247524 100644 --- a/src/pyj/read_book/view.pyj +++ b/src/pyj/read_book/view.pyj @@ -189,6 +189,8 @@ class View: 'handle_keypress': self.on_handle_keypress, } entry_point = None if runtime.is_standalone_viewer else 'read_book.iframe' + if runtime.is_standalone_viewer: + document.documentElement.addEventListener('keydown', self.handle_keypress, {'passive': False}) self.iframe_wrapper = IframeWrapper(handlers, document.getElementById(iframe_id), entry_point, _('Bootstrapping book reader...'), runtime.FAKE_PROTOCOL, runtime.FAKE_HOST) self.search_overlay = SearchOverlay(self) self.content_popup_overlay = ContentPopupOverlay(self) @@ -253,8 +255,13 @@ class View: self.timers.on_human_scroll(amt_scrolled) def on_handle_keypress(self, data): - if self.overlay.is_visible and data.evt.key is 'Escape': + self.handle_keypress(data.evt) + + def handle_keypress(self, evt): + if self.overlay.is_visible and evt.key is 'Escape': self.overlay.hide_current_panel() + if evt.preventDefault: + evt.preventDefault(), evt.stopPropagation() return def overlay_visibility_changed(self, visible):