Shortcut for toggling fullscreen

This commit is contained in:
Kovid Goyal 2019-08-26 09:38:51 +05:30
parent ece5180a80
commit e58a50e7ed
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C
6 changed files with 21 additions and 6 deletions

View File

@ -82,4 +82,5 @@ ui_operations = {
'delete_book': None, 'delete_book': None,
'focus_iframe': None, 'focus_iframe': None,
'toggle_toc': None, 'toggle_toc': None,
'toggle_full_screen': None,
} }

View File

@ -19,9 +19,7 @@ from read_book.prefs.main import create_prefs_panel
from read_book.toc import create_toc_panel from read_book.toc import create_toc_panel
from read_book.word_actions import create_word_actions_panel from read_book.word_actions import create_word_actions_panel
from session import get_device_uuid from session import get_device_uuid
from utils import ( from utils import full_screen_element, is_ios, safe_set_inner_html
full_screen_element, is_ios, request_full_screen, safe_set_inner_html
)
from widgets import create_button, create_spinner from widgets import create_button, create_spinner
@ -278,7 +276,7 @@ class MainOverlay: # {{{
if not full_screen_element() and not is_ios: if not full_screen_element() and not is_ios:
# No fullscreen on iOS, see http://caniuse.com/#search=fullscreen # No fullscreen on iOS, see http://caniuse.com/#search=fullscreen
full_screen_actions.push( full_screen_actions.push(
ac(_('Full screen'), _('Enter full screen mode'), def(): request_full_screen(), self.overlay.hide();, 'full-screen') ac(_('Full screen'), _('Enter full screen mode'), def(): self.overlay.hide(), ui_operations.toggle_full_screen();, 'full-screen')
) )
if full_screen_actions.length: if full_screen_actions.length:
actions_div.appendChild(E.ul(*full_screen_actions)) actions_div.appendChild(E.ul(*full_screen_actions))

View File

@ -186,6 +186,12 @@ SHORTCUTS = {
'ui', 'ui',
_('Decrease font size'), _('Decrease font size'),
), ),
'toggle_full_screen': desc(
v"['F11', 'Ctrl+Shift+F']",
'ui',
_('Toggle full screen'),
),
} }

View File

@ -17,7 +17,7 @@ from modals import create_simple_dialog_markup, error_dialog
from read_book.db import get_db from read_book.db import get_db
from read_book.globals import ui_operations from read_book.globals import ui_operations
from read_book.view import View from read_book.view import View
from utils import debounce, human_readable from utils import debounce, full_screen_element, human_readable, request_full_screen
from widgets import create_button from widgets import create_button
RENDER_VERSION = __RENDER_VERSION__ RENDER_VERSION = __RENDER_VERSION__
@ -69,6 +69,7 @@ class ReadUI:
ui_operations.delete_book = self.delete_book.bind(self) ui_operations.delete_book = self.delete_book.bind(self)
ui_operations.focus_iframe = self.focus_iframe.bind(self) ui_operations.focus_iframe = self.focus_iframe.bind(self)
ui_operations.toggle_toc = self.toggle_toc.bind(self) ui_operations.toggle_toc = self.toggle_toc.bind(self)
ui_operations.toggle_full_screen = self.toggle_full_screen.bind(self)
def on_resize(self): def on_resize(self):
self.view.on_resize() self.view.on_resize()
@ -170,6 +171,12 @@ class ReadUI:
def toggle_toc(self): def toggle_toc(self):
self.view.overlay.show_toc() self.view.overlay.show_toc()
def toggle_full_screen(self):
if full_screen_element():
document.exitFullscreen()
else:
request_full_screen(document.documentElement)
def update_color_scheme(self): def update_color_scheme(self):
self.view.update_color_scheme() self.view.update_color_scheme()

View File

@ -241,6 +241,8 @@ class View:
self.bump_font_size({'increase': True}) self.bump_font_size({'increase': True})
elif data.name is 'decrease_font_size': elif data.name is 'decrease_font_size':
self.bump_font_size({'increase': False}) self.bump_font_size({'increase': False})
elif data.name is 'toggle_full_screen':
ui_operations.toggle_full_screen()
def on_selection_change(self, data): def on_selection_change(self, data):
self.currently_showing.selected_text = data.text self.currently_showing.selected_text = data.text

View File

@ -74,8 +74,9 @@ def encode_query_with_path(query, path):
def request_full_screen(elem): def request_full_screen(elem):
elem = elem or document.documentElement elem = elem or document.documentElement
options = {'navigationUI': 'hide'}
if elem.requestFullScreen: if elem.requestFullScreen:
elem.requestFullScreen() elem.requestFullScreen(options)
elif elem.webkitRequestFullScreen: elif elem.webkitRequestFullScreen:
elem.webkitRequestFullScreen() elem.webkitRequestFullScreen()
elif elem.mozRequestFullScreen: elif elem.mozRequestFullScreen: