Fix a regression in the previous release that broke touch screen interaction

This commit is contained in:
Kovid Goyal 2022-07-14 22:01:55 +05:30
parent ea8e8cedb3
commit 2c4766a859
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C
7 changed files with 25 additions and 37 deletions

View File

@ -34,18 +34,18 @@ class TouchPoint:
def __init__(self, tp): def __init__(self, tp):
self.creation_time = self.last_update_time = self.time_of_last_move = monotonic() self.creation_time = self.last_update_time = self.time_of_last_move = monotonic()
self.start_screen_position = self.current_screen_position = self.previous_screen_position = QPointF(tp.screenPos()) self.start_screen_position = self.current_screen_position = self.previous_screen_position = QPointF(tp.globalPosition())
self.time_since_last_update = -1 self.time_since_last_update = -1
self.total_movement = 0 self.total_movement = 0
self.start_position = self.current_position = tp.pos() self.start_position = self.current_position = tp.position()
self.extra_data = None self.extra_data = None
def update(self, tp): def update(self, tp):
self.current_position = tp.pos() self.current_position = tp.position()
now = monotonic() now = monotonic()
self.time_since_last_update = now - self.last_update_time self.time_since_last_update = now - self.last_update_time
self.last_update_time = now self.last_update_time = now
self.previous_screen_position, self.current_screen_position = self.current_screen_position, QPointF(tp.screenPos()) self.previous_screen_position, self.current_screen_position = self.current_screen_position, QPointF(tp.globalPosition())
movement = (self.current_screen_position - self.previous_screen_position).manhattanLength() movement = (self.current_screen_position - self.previous_screen_position).manhattanLength()
self.total_movement += movement self.total_movement += movement
if movement > 5: if movement > 5:
@ -81,7 +81,7 @@ class State(QObject):
if boundary == 'start': if boundary == 'start':
self.start() self.start()
for tp in ev.touchPoints(): for tp in ev.points():
tpid = tp.id() tpid = tp.id()
if tpid not in self.touch_points: if tpid not in self.touch_points:
self.touch_points[tpid] = TouchPoint(tp) self.touch_points[tpid] = TouchPoint(tp)

View File

@ -734,13 +734,11 @@ class GridView(QListView):
t.timeout.connect(self.update_memory_cover_cache_size) t.timeout.connect(self.update_memory_cover_cache_size)
def viewportEvent(self, ev): def viewportEvent(self, ev):
try: if hasattr(self, 'gesture_manager'):
ret = self.gesture_manager.handle_event(ev) ret = self.gesture_manager.handle_event(ev)
except AttributeError:
ret = None
if ret is not None: if ret is not None:
return ret return ret
return QListView.viewportEvent(self, ev) return super().viewportEvent(ev)
@property @property
def device_pixel_ratio(self): def device_pixel_ratio(self):

View File

@ -215,13 +215,11 @@ class BooksView(QTableView): # {{{
def viewportEvent(self, event): def viewportEvent(self, event):
if (event.type() == QEvent.Type.ToolTip and not gprefs['book_list_tooltips']): if (event.type() == QEvent.Type.ToolTip and not gprefs['book_list_tooltips']):
return False return False
try: if hasattr(self, 'gesture_manager'):
ret = self.gesture_manager.handle_event(event) ret = self.gesture_manager.handle_event(event)
except AttributeError:
ret = None
if ret is not None: if ret is not None:
return ret return ret
return QTableView.viewportEvent(self, event) return super().viewportEvent(event)
def __init__(self, parent, modelcls=BooksModel, use_edit_metadata_dialog=True): def __init__(self, parent, modelcls=BooksModel, use_edit_metadata_dialog=True):
QTableView.__init__(self, parent) QTableView.__init__(self, parent)

View File

@ -37,10 +37,8 @@ class BookmarksList(QListWidget):
self.setVerticalScrollMode(QAbstractItemView.ScrollMode.ScrollPerPixel) self.setVerticalScrollMode(QAbstractItemView.ScrollMode.ScrollPerPixel)
def viewportEvent(self, ev): def viewportEvent(self, ev):
try: if hasattr(self, 'gesture_manager'):
ret = self.gesture_manager.handle_event(ev) ret = self.gesture_manager.handle_event(ev)
except AttributeError:
ret = None
if ret is not None: if ret is not None:
return ret return ret
return super().viewportEvent(ev) return super().viewportEvent(ev)

View File

@ -180,10 +180,8 @@ class Highlights(QTreeWidget):
self.setVerticalScrollMode(QAbstractItemView.ScrollMode.ScrollPerPixel) self.setVerticalScrollMode(QAbstractItemView.ScrollMode.ScrollPerPixel)
def viewportEvent(self, ev): def viewportEvent(self, ev):
try: if hasattr(self, 'gesture_manager'):
ret = self.gesture_manager.handle_event(ev) ret = self.gesture_manager.handle_event(ev)
except AttributeError:
ret = None
if ret is not None: if ret is not None:
return ret return ret
return super().viewportEvent(ev) return super().viewportEvent(ev)

View File

@ -497,10 +497,8 @@ class Results(QTreeWidget): # {{{
self.setVerticalScrollMode(QAbstractItemView.ScrollMode.ScrollPerPixel) self.setVerticalScrollMode(QAbstractItemView.ScrollMode.ScrollPerPixel)
def viewportEvent(self, ev): def viewportEvent(self, ev):
try: if hasattr(self, 'gesture_manager'):
ret = self.gesture_manager.handle_event(ev) ret = self.gesture_manager.handle_event(ev)
except AttributeError:
ret = None
if ret is not None: if ret is not None:
return ret return ret
return super().viewportEvent(ev) return super().viewportEvent(ev)

View File

@ -53,10 +53,8 @@ class TOCView(QTreeView):
self.gesture_manager = GestureManager(self) self.gesture_manager = GestureManager(self)
def viewportEvent(self, ev): def viewportEvent(self, ev):
try: if hasattr(self, 'gesture_manager'):
ret = self.gesture_manager.handle_event(ev) ret = self.gesture_manager.handle_event(ev)
except AttributeError:
ret = None
if ret is not None: if ret is not None:
return ret return ret
return super().viewportEvent(ev) return super().viewportEvent(ev)