From eda62f6dd07726e0e1cdc783f9683d2b405f8fbb Mon Sep 17 00:00:00 2001
From: Ron Lucke <lucke@elan-ev.de>
Date: Thu, 28 Oct 2021 14:45:35 +0000
Subject: [PATCH] fixes #373

---
 .../courseware/CoursewareCanvasBlock.vue      | 42 +++++++++++++++++++
 1 file changed, 42 insertions(+)

diff --git a/resources/vue/components/courseware/CoursewareCanvasBlock.vue b/resources/vue/components/courseware/CoursewareCanvasBlock.vue
index 1a80963cab9..008dcc75bff 100755
--- a/resources/vue/components/courseware/CoursewareCanvasBlock.vue
+++ b/resources/vue/components/courseware/CoursewareCanvasBlock.vue
@@ -89,6 +89,10 @@
                     @mouseup="mouseUp"
                     @mouseout="mouseUp"
                     @mouseleave="mouseUp"
+
+                    @touchstart="touchStart"
+                    @touchmove="touchMove"
+                    @touchend="touchEnd"
                 />
                 <div class="cw-canvasblock-hints">
                     <div v-show="write" class="messagebox messagebox_info cw-canvasblock-text-info">
@@ -408,6 +412,44 @@ export default {
             this.storeDraw();
             this.paint = false;
         },
+        touchStart(e) {
+            e.preventDefault();
+            if (this.write) {
+                return;
+            }
+            let canvas = this.$refs.canvas;
+            let mousePos = this.getTouchPos(canvas, e);
+            if(this.currentTool == 'pen') {
+                this.paint = true;
+                this.addClick(mousePos.x, mousePos.y, false);
+                this.redraw();
+            }
+            if(this.currentTool == 'text') {
+                this.write = true;
+                this.addClick(mousePos.x, mousePos.y, false);
+            }
+        },
+        touchMove(e) {
+            e.preventDefault();
+
+            let canvas = this.$refs.canvas;
+            let mousePos = this.getTouchPos(canvas, e);
+            if(this.paint){
+                this.addClick(mousePos.x, mousePos.y, true);
+                this.redraw();
+            }
+        },
+        touchEnd(e) {
+            this.storeDraw();
+            this.paint = false;
+        },
+        getTouchPos(canvasDom, touchEvent) {
+            var rect = canvasDom.getBoundingClientRect();
+            return {
+                x: touchEvent.touches[0].clientX - rect.left,
+                y: touchEvent.touches[0].clientY - rect.top
+            };
+        },
         addClick(x, y, dragging) {
             this.clickX.push(x);
             this.clickY.push(y);
-- 
GitLab