E-book viewer: Automatically hide the mouse cursor if the mouse has not been used for a few seconds. This prevents the mouse cursor from obscuring text underneath it. The cursor will reappear automatically when you move the mouse.

This commit is contained in:
Kovid Goyal 2014-08-30 16:53:03 +05:30
parent e06eed5808
commit 2d65fde274

View File

@ -70,6 +70,7 @@ class EbookViewer(MainWindow):
self.pending_reference = None self.pending_reference = None
self.pending_bookmark = None self.pending_bookmark = None
self.pending_restore = False self.pending_restore = False
self.cursor_hidden = False
self.existing_bookmarks= [] self.existing_bookmarks= []
self.selected_text = None self.selected_text = None
self.was_maximized = False self.was_maximized = False
@ -155,6 +156,22 @@ class EbookViewer(MainWindow):
self.action_toggle_paged_mode.toggled[bool].connect(self.toggle_paged_mode) self.action_toggle_paged_mode.toggled[bool].connect(self.toggle_paged_mode)
if (start_in_fullscreen or self.view.document.start_in_fullscreen): if (start_in_fullscreen or self.view.document.start_in_fullscreen):
self.action_full_screen.trigger() self.action_full_screen.trigger()
self.hide_cursor_timer = t = QTimer(self)
t.setSingleShot(True), t.setInterval(3000)
t.timeout.connect(self.hide_cursor)
t.start()
def eventFilter(self, obj, ev):
if ev.type() == ev.MouseMove:
if self.cursor_hidden:
self.cursor_hidden = False
QApplication.instance().restoreOverrideCursor()
self.hide_cursor_timer.start()
return False
def hide_cursor(self):
self.cursor_hidden = True
QApplication.instance().setOverrideCursor(Qt.BlankCursor)
def toggle_paged_mode(self, checked, at_start=False): def toggle_paged_mode(self, checked, at_start=False):
in_paged_mode = not self.action_toggle_paged_mode.isChecked() in_paged_mode = not self.action_toggle_paged_mode.isChecked()
@ -1001,6 +1018,7 @@ def main(args=sys.argv):
main = EbookViewer(args[1] if len(args) > 1 else None, main = EbookViewer(args[1] if len(args) > 1 else None,
debug_javascript=opts.debug_javascript, open_at=open_at, debug_javascript=opts.debug_javascript, open_at=open_at,
start_in_fullscreen=opts.full_screen) start_in_fullscreen=opts.full_screen)
app.installEventFilter(main)
# This is needed for paged mode. Without it, the first document that is # This is needed for paged mode. Without it, the first document that is
# loaded will have extra blank space at the bottom, as # loaded will have extra blank space at the bottom, as
# turn_off_internal_scrollbars does not take effect for the first # turn_off_internal_scrollbars does not take effect for the first