mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-08 02:34:06 -04:00
Make selection mirroring a little more intelligent
This commit is contained in:
parent
a9acfd7965
commit
3300ddec54
@ -300,6 +300,7 @@ class BooksView(QTableView): # {{{
|
|||||||
self._model.sorting_done.connect(self.sorting_done,
|
self._model.sorting_done.connect(self.sorting_done,
|
||||||
type=Qt.QueuedConnection)
|
type=Qt.QueuedConnection)
|
||||||
self.set_row_header_visibility()
|
self.set_row_header_visibility()
|
||||||
|
self.allow_mirroring = True
|
||||||
if modelcls is not BooksModel:
|
if modelcls is not BooksModel:
|
||||||
self.pin_view.setVisible(False)
|
self.pin_view.setVisible(False)
|
||||||
else:
|
else:
|
||||||
@ -307,18 +308,20 @@ class BooksView(QTableView): # {{{
|
|||||||
self.pin_view.verticalScrollBar().valueChanged.connect(self.verticalScrollBar().setValue)
|
self.pin_view.verticalScrollBar().valueChanged.connect(self.verticalScrollBar().setValue)
|
||||||
self.verticalScrollBar().valueChanged.connect(self.pin_view.verticalScrollBar().setValue)
|
self.verticalScrollBar().valueChanged.connect(self.pin_view.verticalScrollBar().setValue)
|
||||||
for wv in self, self.pin_view:
|
for wv in self, self.pin_view:
|
||||||
wv.selectionModel().currentRowChanged.connect(self.mirror_selection_between_views)
|
wv.selectionModel().currentRowChanged.connect(partial(self.mirror_selection_between_views, wv))
|
||||||
wv.selectionModel().selectionChanged.connect(self.mirror_selection_between_views)
|
wv.selectionModel().selectionChanged.connect(partial(self.mirror_selection_between_views, wv))
|
||||||
|
|
||||||
def set_pin_view_visibility(self, visible=False):
|
def set_pin_view_visibility(self, visible=False):
|
||||||
self.pin_view.setVisible(visible)
|
self.pin_view.setVisible(visible)
|
||||||
self.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff if visible else Qt.ScrollBarAsNeeded)
|
self.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff if visible else Qt.ScrollBarAsNeeded)
|
||||||
|
|
||||||
def mirror_selection_between_views(self):
|
def mirror_selection_between_views(self, src):
|
||||||
src = self if self.hasFocus() else self.pin_view
|
if self.allow_mirroring:
|
||||||
dest = self.pin_view if self.hasFocus() else self
|
dest = self.pin_view if src is self else self
|
||||||
|
self.allow_mirroring = False
|
||||||
dest.selectionModel().select(src.selectionModel().selection(), QItemSelectionModel.ClearAndSelect)
|
dest.selectionModel().select(src.selectionModel().selection(), QItemSelectionModel.ClearAndSelect)
|
||||||
dest.selectionModel().setCurrentIndex(src.selectionModel().currentIndex(), QItemSelectionModel.NoUpdate)
|
dest.selectionModel().setCurrentIndex(src.selectionModel().currentIndex(), QItemSelectionModel.NoUpdate)
|
||||||
|
self.allow_mirroring = True
|
||||||
|
|
||||||
# Column Header Context Menu {{{
|
# Column Header Context Menu {{{
|
||||||
def column_header_context_handler(self, action=None, column=None):
|
def column_header_context_handler(self, action=None, column=None):
|
||||||
|
Loading…
x
Reference in New Issue
Block a user