mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Cover Grid: Improve scroll wheel based scrolling.
On windows and linux a single "tick" of the wheel now scrolls by about half a row. On OS X, scrolling is pixel based, so as you scroll faster, more content is scrolled.
This commit is contained in:
parent
264312d2b7
commit
c05bb2ee69
@ -6,7 +6,7 @@ from __future__ import (unicode_literals, division, absolute_import,
|
|||||||
__license__ = 'GPL v3'
|
__license__ = 'GPL v3'
|
||||||
__copyright__ = '2013, Kovid Goyal <kovid at kovidgoyal.net>'
|
__copyright__ = '2013, Kovid Goyal <kovid at kovidgoyal.net>'
|
||||||
|
|
||||||
import itertools, operator, os
|
import itertools, operator, os, math
|
||||||
from types import MethodType
|
from types import MethodType
|
||||||
from threading import Event, Thread
|
from threading import Event, Thread
|
||||||
from Queue import LifoQueue
|
from Queue import LifoQueue
|
||||||
@ -981,4 +981,19 @@ class GridView(QListView):
|
|||||||
return QItemSelectionModel.ClearAndSelect | QItemSelectionModel.Rows
|
return QItemSelectionModel.ClearAndSelect | QItemSelectionModel.Rows
|
||||||
return super(GridView, self).selectionCommand(index, event)
|
return super(GridView, self).selectionCommand(index, event)
|
||||||
|
|
||||||
|
def wheelEvent(self, ev):
|
||||||
|
if ev.phase() != Qt.ScrollUpdate:
|
||||||
|
return
|
||||||
|
number_of_pixels = ev.pixelDelta()
|
||||||
|
number_of_degrees = ev.angleDelta() / 8
|
||||||
|
b = self.verticalScrollBar()
|
||||||
|
if number_of_pixels.isNull():
|
||||||
|
dy = number_of_degrees.y() / 15.0
|
||||||
|
# Scroll by approximately half a row
|
||||||
|
dy = int(math.ceil((dy) * b.singleStep() / 2.0))
|
||||||
|
else:
|
||||||
|
dy = number_of_pixels.y()
|
||||||
|
if abs(dy) > 0:
|
||||||
|
b.setValue(b.value() - dy)
|
||||||
|
|
||||||
# }}}
|
# }}}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user