Skip to content

Commit 0f033a3

Browse files
committed
Allow mousewheel zoom on webengine
1 parent cde191a commit 0f033a3

File tree

3 files changed

+25
-30
lines changed

3 files changed

+25
-30
lines changed

src/timeline/js/directives/ruler.js

+17
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,23 @@ App.directive("tlScrollableTracks", function () {
4545
restrict: "A",
4646
link: function (scope, element, attrs) {
4747

48+
/**
49+
* if ctrl is held, scroll in or out.
50+
* Implimentation copied from zoomSlider zoomIn zoomOut
51+
*/
52+
element.on('wheel',function (e) {
53+
if (e.ctrlKey) {
54+
e.preventDefault(); // Don't scroll like a browser
55+
} else {
56+
return;
57+
}
58+
if (e.originalEvent.deltaY > 0) { // Scroll down: Zoom out
59+
timeline.zoomIn();
60+
} else { // Scroll Up: Zoom in
61+
timeline.zoomOut();
62+
}
63+
});
64+
4865
// Sync ruler to track scrolling
4966
element.on("scroll", function () {
5067
//set amount scrolled

src/windows/views/webview.py

+8-14
Original file line numberDiff line numberDiff line change
@@ -2745,6 +2745,14 @@ def qt_log(self, level="INFO", message=None):
27452745
level = levels.get(level, logging.INFO)
27462746
self.log_fn(level, message)
27472747

2748+
@pyqtSlot()
2749+
def zoomIn(self):
2750+
get_app().window.sliderZoomWidget.zoomIn()
2751+
2752+
@pyqtSlot()
2753+
def zoomOut(self):
2754+
get_app().window.sliderZoomWidget.zoomOut()
2755+
27482756
def update_scroll(self, newScroll):
27492757
"""Force a scroll event on the timeline (i.e. the zoom slider is moving, so we need to scroll the timeline)"""
27502758
# Get access to timeline scope and set scale to new computed value
@@ -2776,20 +2784,6 @@ def update_zoom(self, newScale):
27762784
get_app().updates.update(["scale"], newScale)
27772785
get_app().updates.ignore_history = False
27782786

2779-
# Capture wheel event to alter zoom slider control
2780-
def wheelEvent(self, event):
2781-
if event.modifiers() & Qt.ControlModifier:
2782-
event.accept()
2783-
2784-
# Modify zooms factor
2785-
if event.angleDelta().y() > 0:
2786-
get_app().window.sliderZoomWidget.zoomIn()
2787-
else:
2788-
get_app().window.sliderZoomWidget.zoomOut()
2789-
2790-
else:
2791-
super().wheelEvent(event)
2792-
27932787
# An item is being dragged onto the timeline (mouse is entering the timeline now)
27942788
def dragEnterEvent(self, event):
27952789

src/windows/views/webview_backend/webkit.py

-16
Original file line numberDiff line numberDiff line change
@@ -123,19 +123,3 @@ def keyPressEvent(self, event):
123123
else:
124124
# Ignore most keypresses
125125
event.ignore()
126-
127-
def wheelEvent(self, event):
128-
""" Mousewheel scrolling """
129-
if event.modifiers() & Qt.ShiftModifier:
130-
event.accept()
131-
frame = self.page().mainFrame()
132-
# Compute scroll offset from wheel motion
133-
tick_scale = 120
134-
steps = int(event.angleDelta().y() / tick_scale)
135-
delta = -(steps * 100)
136-
log.debug("Scrolling horizontally by %d pixels", delta)
137-
# Update the scroll position using AngularJS
138-
js = "$('body').scope().scrollLeft({});".format(delta)
139-
frame.evaluateJavaScript(js)
140-
else:
141-
super().wheelEvent(event)

0 commit comments

Comments
 (0)