diff --git a/src/pyj/read_book/overlay.pyj b/src/pyj/read_book/overlay.pyj index 576bd696fe..e9cd6f56e0 100644 --- a/src/pyj/read_book/overlay.pyj +++ b/src/pyj/read_book/overlay.pyj @@ -28,6 +28,7 @@ class LoadingMessage: # {{{ def __init__(self, msg, current_color_scheme): self.msg = msg or '' self.current_color_scheme = current_color_scheme + self.is_not_escapable = True # prevent Esc key from closing def show(self, container): self.container_id = container.getAttribute('id') @@ -440,6 +441,7 @@ class OpenBook: # {{{ def __init__(self, overlay, closeable): self.overlay = overlay self.closeable = closeable + self.is_not_escapable = not closeable # prevent Esc key from closing def on_container_click(self, evt): pass # Dont allow panel to be closed by a click @@ -516,6 +518,14 @@ class Overlay: p.on_hide() self.show_current_panel() + def handle_escape(self): + if self.panels.length: + p = self.panels[-1] + if not p.is_not_escapable: + self.hide_current_panel() + return True + return False + def show_current_panel(self): if self.panels.length: c = self.clear_container() diff --git a/src/pyj/read_book/view.pyj b/src/pyj/read_book/view.pyj index 2c789a5780..86ca685ea6 100644 --- a/src/pyj/read_book/view.pyj +++ b/src/pyj/read_book/view.pyj @@ -272,10 +272,9 @@ class View: 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 + if self.overlay.handle_escape(): + if evt.preventDefault: + evt.preventDefault(), evt.stopPropagation() def overlay_visibility_changed(self, visible): if self.iframe_wrapper.send_message: