mirror of
https://github.com/ankitects/anki.git
synced 2025-09-18 22:12:21 -04:00
Equalize browser panes on splitter double-click (#2175)
This commit is contained in:
parent
0cfa8b8846
commit
20d2a0f33b
2 changed files with 25 additions and 1 deletions
|
@ -71,7 +71,7 @@ from aqt.utils import (
|
||||||
from ..changenotetype import change_notetype_dialog
|
from ..changenotetype import change_notetype_dialog
|
||||||
from .card_info import BrowserCardInfo
|
from .card_info import BrowserCardInfo
|
||||||
from .find_and_replace import FindAndReplaceDialog
|
from .find_and_replace import FindAndReplaceDialog
|
||||||
from .layout import BrowserLayout
|
from .layout import BrowserLayout, QSplitterHandleEventFilter
|
||||||
from .previewer import BrowserPreviewer as PreviewDialog
|
from .previewer import BrowserPreviewer as PreviewDialog
|
||||||
from .previewer import Previewer
|
from .previewer import Previewer
|
||||||
from .sidebar import SidebarTreeView
|
from .sidebar import SidebarTreeView
|
||||||
|
@ -127,6 +127,8 @@ class Browser(QMainWindow):
|
||||||
self.form = aqt.forms.browser.Ui_Dialog()
|
self.form = aqt.forms.browser.Ui_Dialog()
|
||||||
self.form.setupUi(self)
|
self.form.setupUi(self)
|
||||||
self.form.splitter.setChildrenCollapsible(False)
|
self.form.splitter.setChildrenCollapsible(False)
|
||||||
|
splitter_handle_event_filter = QSplitterHandleEventFilter(self.form.splitter)
|
||||||
|
self.form.splitter.handle(1).installEventFilter(splitter_handle_event_filter)
|
||||||
# set if exactly 1 row is selected; used by the previewer
|
# set if exactly 1 row is selected; used by the previewer
|
||||||
self.card: Card | None = None
|
self.card: Card | None = None
|
||||||
self.current_card: Card | None = None
|
self.current_card: Card | None = None
|
||||||
|
|
|
@ -3,8 +3,30 @@
|
||||||
|
|
||||||
from enum import Enum
|
from enum import Enum
|
||||||
|
|
||||||
|
from aqt.qt import QEvent, QObject, QSplitter, Qt
|
||||||
|
|
||||||
|
|
||||||
class BrowserLayout(Enum):
|
class BrowserLayout(Enum):
|
||||||
AUTO = "auto"
|
AUTO = "auto"
|
||||||
VERTICAL = "vertical"
|
VERTICAL = "vertical"
|
||||||
HORIZONTAL = "horizontal"
|
HORIZONTAL = "horizontal"
|
||||||
|
|
||||||
|
|
||||||
|
class QSplitterHandleEventFilter(QObject):
|
||||||
|
"""Event filter that equalizes QSplitter panes on double-clicking the handle"""
|
||||||
|
|
||||||
|
def __init__(self, splitter: QSplitter):
|
||||||
|
super().__init__(splitter)
|
||||||
|
self._splitter = splitter
|
||||||
|
|
||||||
|
def eventFilter(self, object: QObject, event: QEvent) -> bool:
|
||||||
|
if event.type() == QEvent.Type.MouseButtonDblClick:
|
||||||
|
splitter_parent = self._splitter.parentWidget()
|
||||||
|
if self._splitter.orientation() == Qt.Orientation.Horizontal:
|
||||||
|
half_size = splitter_parent.width() // 2
|
||||||
|
else:
|
||||||
|
half_size = splitter_parent.height() // 2
|
||||||
|
self._splitter.setSizes([half_size, half_size])
|
||||||
|
return True
|
||||||
|
|
||||||
|
return super().eventFilter(object, event)
|
||||||
|
|
Loading…
Reference in a new issue