File feature-mouse-zoom.patch of Package lekha

diff --git a/lekha/app.py b/lekha/app.py
index 519b63e..c130612 100644
--- a/lekha/app.py
+++ b/lekha/app.py
@@ -127,18 +127,36 @@ class AppWindow(StandardWindow):
         main_box.show()
 
     def _event_handler(self, obj, src, tp, ev):
-        if tp == EVAS_CALLBACK_KEY_UP:
+        if tp == EVAS_CALLBACK_MOUSE_WHEEL:
+            if ev.direction == 0:
+                if (
+                        self.tabs.currentContent and
+                        self.tabs.currentContent.scroll_freeze_get()):
+                    if ev.z == 1:
+                        self.tabs.currentContent.zoom_out()
+                    else:
+                        self.tabs.currentContent.zoom_in()
+        elif tp == EVAS_CALLBACK_KEY_UP:
             key = ev.key
             if key == "plus":
-                self.tabs.currentContent.zoom_in()
+                if self.tabs.currentContent:
+                    self.tabs.currentContent.zoom_in()
             elif key == "minus":
-                self.tabs.currentContent.zoom_out()
+                if self.tabs.currentContent:
+                    self.tabs.currentContent.zoom_out()
             elif key == "Escape":
                 if self.fullscreen:
                     self.fullscreen = False
             elif key == "F11":
                 self.fullscreen = not self.fullscreen
-            ev.event_flags |= EVAS_EVENT_FLAG_ON_HOLD
+            elif key == "Control_L" or key == "Control_R":
+                self.tabs.currentContent.scroll_thaw()
+        elif tp == EVAS_CALLBACK_KEY_DOWN:
+            key = ev.key
+            if key == "Control_L" or key == "Control_R":
+                self.tabs.currentContent.scroll_freeze()
+
+        ev.event_flags |= EVAS_EVENT_FLAG_ON_HOLD
 
     @staticmethod
     def _fullscreen_cb(win):
@@ -545,6 +563,15 @@ class Document(Table):
     def _scrolled(self, scr):
         self.doc_pos = scr.region
 
+    def scroll_freeze(self):
+        self.scr.scroll_freeze_push()
+
+    def scroll_thaw(self):
+        self.scr.scroll_freeze_pop()
+
+    def scroll_freeze_get(self):
+        return self.scr.scroll_freeze
+
 
 class PageSmart(Smart):
 
openSUSE Build Service is sponsored by