mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-08 10:44:09 -04:00
E-book viewer: Allow scrolling of the ToC, highlights, bookmarks, etc. with touch gestures. Fixes #1963875 [Make the Viewer TOC touch friendly](https://bugs.launchpad.net/calibre/+bug/1963875)
This commit is contained in:
parent
894f7d547a
commit
9a73323fa3
@ -5,9 +5,9 @@
|
|||||||
import json
|
import json
|
||||||
from operator import itemgetter
|
from operator import itemgetter
|
||||||
from qt.core import (
|
from qt.core import (
|
||||||
QAction, QComboBox, QGridLayout, QHBoxLayout, QIcon, QInputDialog,
|
QAbstractItemView, QAction, QComboBox, QGridLayout, QHBoxLayout, QIcon,
|
||||||
QItemSelectionModel, QLabel, QListWidget, QListWidgetItem, QPushButton, Qt,
|
QInputDialog, QItemSelectionModel, QLabel, QListWidget, QListWidgetItem,
|
||||||
QWidget, pyqtSignal
|
QPushButton, QScroller, Qt, QWidget, pyqtSignal
|
||||||
)
|
)
|
||||||
|
|
||||||
from calibre.gui2 import choose_files, choose_save_file
|
from calibre.gui2 import choose_files, choose_save_file
|
||||||
@ -32,6 +32,8 @@ class BookmarksList(QListWidget):
|
|||||||
self.addAction(ac)
|
self.addAction(ac)
|
||||||
self.ac_delete = ac = QAction(QIcon(I('trash.png')), _('Remove this bookmark'), self)
|
self.ac_delete = ac = QAction(QIcon(I('trash.png')), _('Remove this bookmark'), self)
|
||||||
self.addAction(ac)
|
self.addAction(ac)
|
||||||
|
QScroller.grabGesture(self.viewport(), QScroller.ScrollerGestureType.TouchGesture)
|
||||||
|
self.setVerticalScrollMode(QAbstractItemView.ScrollMode.ScrollPerPixel)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def current_non_removed_item(self):
|
def current_non_removed_item(self):
|
||||||
|
@ -10,7 +10,7 @@ from qt.core import (
|
|||||||
QAbstractItemView, QColor, QDialog, QFont, QHBoxLayout, QIcon, QImage,
|
QAbstractItemView, QColor, QDialog, QFont, QHBoxLayout, QIcon, QImage,
|
||||||
QItemSelectionModel, QKeySequence, QLabel, QMenu, QPainter, QPainterPath,
|
QItemSelectionModel, QKeySequence, QLabel, QMenu, QPainter, QPainterPath,
|
||||||
QPalette, QPixmap, QPushButton, QRect, QSizePolicy, QStyle, Qt, QTextCursor,
|
QPalette, QPixmap, QPushButton, QRect, QSizePolicy, QStyle, Qt, QTextCursor,
|
||||||
QTextEdit, QTreeWidget, QTreeWidgetItem, QVBoxLayout, QWidget, pyqtSignal
|
QTextEdit, QTreeWidget, QTreeWidgetItem, QVBoxLayout, QWidget, pyqtSignal, QScroller
|
||||||
)
|
)
|
||||||
|
|
||||||
from calibre.constants import (
|
from calibre.constants import (
|
||||||
@ -175,6 +175,8 @@ class Highlights(QTreeWidget):
|
|||||||
self.uuid_map = {}
|
self.uuid_map = {}
|
||||||
self.section_font = QFont(self.font())
|
self.section_font = QFont(self.font())
|
||||||
self.section_font.setItalic(True)
|
self.section_font.setItalic(True)
|
||||||
|
QScroller.grabGesture(self.viewport(), QScroller.ScrollerGestureType.TouchGesture)
|
||||||
|
self.setVerticalScrollMode(QAbstractItemView.ScrollMode.ScrollPerPixel)
|
||||||
|
|
||||||
def show_context_menu(self, point):
|
def show_context_menu(self, point):
|
||||||
index = self.indexAt(point)
|
index = self.indexAt(point)
|
||||||
|
@ -6,8 +6,9 @@ import regex
|
|||||||
from collections import Counter, OrderedDict
|
from collections import Counter, OrderedDict
|
||||||
from html import escape
|
from html import escape
|
||||||
from qt.core import (
|
from qt.core import (
|
||||||
QCheckBox, QComboBox, QFont, QHBoxLayout, QIcon, QLabel, Qt, QToolButton,
|
QAbstractItemView, QCheckBox, QComboBox, QFont, QHBoxLayout, QIcon, QLabel,
|
||||||
QTreeWidget, QTreeWidgetItem, QVBoxLayout, QWidget, pyqtSignal
|
QScroller, Qt, QToolButton, QTreeWidget, QTreeWidgetItem, QVBoxLayout, QWidget,
|
||||||
|
pyqtSignal
|
||||||
)
|
)
|
||||||
from threading import Thread
|
from threading import Thread
|
||||||
|
|
||||||
@ -471,6 +472,8 @@ class Results(QTreeWidget): # {{{
|
|||||||
self.section_map = {}
|
self.section_map = {}
|
||||||
self.search_results = []
|
self.search_results = []
|
||||||
self.item_map = {}
|
self.item_map = {}
|
||||||
|
QScroller.grabGesture(self.viewport(), QScroller.ScrollerGestureType.TouchGesture)
|
||||||
|
self.setVerticalScrollMode(QAbstractItemView.ScrollMode.ScrollPerPixel)
|
||||||
|
|
||||||
def current_item_changed(self, current, previous):
|
def current_item_changed(self, current, previous):
|
||||||
if current is not None:
|
if current is not None:
|
||||||
|
@ -4,11 +4,10 @@
|
|||||||
|
|
||||||
import re
|
import re
|
||||||
from functools import partial
|
from functools import partial
|
||||||
|
|
||||||
from qt.core import (
|
from qt.core import (
|
||||||
QApplication, QFont, QHBoxLayout, QIcon, QMenu, QModelIndex, QStandardItem,
|
QAbstractItemView, QApplication, QEvent, QFont, QHBoxLayout, QIcon, QMenu,
|
||||||
QStandardItemModel, QStyledItemDelegate, Qt, QToolButton, QToolTip, QTreeView,
|
QModelIndex, QScroller, QStandardItem, QStandardItemModel, QStyledItemDelegate,
|
||||||
QWidget, pyqtSignal, QEvent
|
Qt, QToolButton, QToolTip, QTreeView, QWidget, pyqtSignal
|
||||||
)
|
)
|
||||||
|
|
||||||
from calibre.gui2 import error_dialog
|
from calibre.gui2 import error_dialog
|
||||||
@ -48,6 +47,8 @@ class TOCView(QTreeView):
|
|||||||
self.setContextMenuPolicy(Qt.ContextMenuPolicy.CustomContextMenu)
|
self.setContextMenuPolicy(Qt.ContextMenuPolicy.CustomContextMenu)
|
||||||
self.customContextMenuRequested.connect(self.context_menu)
|
self.customContextMenuRequested.connect(self.context_menu)
|
||||||
QApplication.instance().palette_changed.connect(self.set_style_sheet, type=Qt.ConnectionType.QueuedConnection)
|
QApplication.instance().palette_changed.connect(self.set_style_sheet, type=Qt.ConnectionType.QueuedConnection)
|
||||||
|
QScroller.grabGesture(self.viewport(), QScroller.ScrollerGestureType.TouchGesture)
|
||||||
|
self.setVerticalScrollMode(QAbstractItemView.ScrollMode.ScrollPerPixel)
|
||||||
|
|
||||||
def setModel(self, model):
|
def setModel(self, model):
|
||||||
QTreeView.setModel(self, model)
|
QTreeView.setModel(self, model)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user