mirror of
https://github.com/rbreu/beeref.git
synced 2026-03-11 08:54:28 +00:00
Added panning via scroll wheel
This commit is contained in:
parent
f8b3270e0c
commit
53c2ced83e
4 changed files with 50 additions and 5 deletions
|
|
@ -10,6 +10,9 @@ Added
|
|||
clipboard in hex format (Images -> Sample Color)
|
||||
* Added notification when attempting to paste from an empty or
|
||||
unusable clipboard
|
||||
* Panning via scrollwheel:
|
||||
* Scroll wheel without modifiers: pan vertically
|
||||
* Scroll wheel + Shift: pan horizontally
|
||||
|
||||
|
||||
Fixed
|
||||
|
|
@ -23,6 +26,13 @@ Fixed
|
|||
would scale with the image and get potentially very thick.
|
||||
|
||||
|
||||
Changed
|
||||
-------
|
||||
|
||||
* Using the scroll wheel will now only zoom when Ctrl is pressed,
|
||||
instead of zooming all the time regardless of modifiers.
|
||||
|
||||
|
||||
0.3.2 - 2024-01-21
|
||||
==================
|
||||
|
||||
|
|
|
|||
|
|
@ -2,13 +2,15 @@
|
|||
|
||||
<p>
|
||||
Middle Click + Drag<br/>
|
||||
Alt + Left Click + Drag
|
||||
Alt + Left Click + Drag<br/>
|
||||
Mouse Wheel (pan vertically)<br/>
|
||||
Shift + Mouse wheel (pan horizontally)
|
||||
</p>
|
||||
|
||||
<h4>Zoom Canvas</h4>
|
||||
|
||||
<p>
|
||||
Mouse wheel up/down<br/>
|
||||
Ctrl + Mouse Wheel<br/>
|
||||
Ctrl + Middle Click + Drag
|
||||
</p>
|
||||
|
||||
|
|
|
|||
|
|
@ -748,8 +748,18 @@ class BeeGraphicsView(MainControlsMixin,
|
|||
self.reset_previous_transform()
|
||||
|
||||
def wheelEvent(self, event):
|
||||
self.zoom(event.angleDelta().y(), event.position())
|
||||
event.accept()
|
||||
if event.modifiers() == Qt.KeyboardModifier.ControlModifier:
|
||||
self.zoom(event.angleDelta().y(), event.position())
|
||||
event.accept()
|
||||
return
|
||||
if event.modifiers() == Qt.KeyboardModifier.NoModifier:
|
||||
self.pan(QtCore.QPointF(0, 0.5 * event.angleDelta().y()))
|
||||
event.accept()
|
||||
return
|
||||
if event.modifiers() == Qt.KeyboardModifier.ShiftModifier:
|
||||
self.pan(QtCore.QPointF(0.5 * event.angleDelta().y(), 0))
|
||||
event.accept()
|
||||
return
|
||||
|
||||
def mousePressEvent(self, event):
|
||||
if self.mousePressEventMainControls(event):
|
||||
|
|
|
|||
|
|
@ -930,15 +930,38 @@ def test_delta_zero(pan_mock, reset_mock, view, item):
|
|||
|
||||
|
||||
@patch('beeref.view.BeeGraphicsView.zoom')
|
||||
def test_wheel_event(zoom_mock, view):
|
||||
def test_wheel_event_zoom(zoom_mock, view):
|
||||
event = MagicMock()
|
||||
event.angleDelta.return_value = QtCore.QPointF(0.0, 40.0)
|
||||
event.position.return_value = QtCore.QPointF(10.0, 20.0)
|
||||
event.modifiers.return_value = Qt.KeyboardModifier.ControlModifier
|
||||
view.wheelEvent(event)
|
||||
zoom_mock.assert_called_once_with(40, QtCore.QPointF(10.0, 20.0))
|
||||
event.accept.assert_called_once_with()
|
||||
|
||||
|
||||
@patch('beeref.view.BeeGraphicsView.pan')
|
||||
def test_wheel_event_pan_vertically(pan_mock, view):
|
||||
event = MagicMock()
|
||||
event.angleDelta.return_value = QtCore.QPointF(0.0, 40.0)
|
||||
event.position.return_value = QtCore.QPointF(10.0, 20.0)
|
||||
event.modifiers.return_value = Qt.KeyboardModifier.NoModifier
|
||||
view.wheelEvent(event)
|
||||
pan_mock.assert_called_once_with(QtCore.QPointF(0, 20))
|
||||
event.accept.assert_called_once_with()
|
||||
|
||||
|
||||
@patch('beeref.view.BeeGraphicsView.pan')
|
||||
def test_wheel_event_pan_horizontally(pan_mock, view):
|
||||
event = MagicMock()
|
||||
event.angleDelta.return_value = QtCore.QPointF(0.0, 40.0)
|
||||
event.position.return_value = QtCore.QPointF(10.0, 20.0)
|
||||
event.modifiers.return_value = Qt.KeyboardModifier.ShiftModifier
|
||||
view.wheelEvent(event)
|
||||
pan_mock.assert_called_once_with(QtCore.QPointF(20, 0))
|
||||
event.accept.assert_called_once_with()
|
||||
|
||||
|
||||
@patch('PyQt6.QtWidgets.QGraphicsView.mousePressEvent')
|
||||
def test_mouse_press_zoom(mouse_event_mock, view):
|
||||
event = MagicMock()
|
||||
|
|
|
|||
Loading…
Reference in a new issue