From e97e5f5009f6de0221b59b37606bc2cab5212c02 Mon Sep 17 00:00:00 2001
From: rick <rick@gnous.eu>
Date: Sat, 17 Dec 2022 03:06:21 +0100
Subject: [PATCH] fix middle click only left click; rename enum for mouse click

---
 src/event.c       |  7 ++++---
 src/event.h       |  7 ++++---
 src/read_events.c | 10 +++++-----
 src/read_file.c   |  6 +++---
 4 files changed, 16 insertions(+), 14 deletions(-)

diff --git a/src/event.c b/src/event.c
index 65fa581..b290007 100644
--- a/src/event.c
+++ b/src/event.c
@@ -26,13 +26,14 @@ void init_event(event *event, char is_pressed)
 void mouse_event(event *event, mouse_button button)
 {
   init_event(event, 0);
+  /* FIXME vérifier tous les flags pour des clics de souris en simultané */
   switch (button)
   {
-    case LEFT: event->infos |= 0x01;
+    case M_LEFT: event->infos |= 0x01;
                break;
-    case RIGHT: event->infos |= 0x02;
+    case M_RIGHT: event->infos |= 0x02;
                 break;
-    case MIDDLE: event->infos |= 0x3;
+    case M_MIDDLE: event->infos |= 0x3;
                  break;
   }
 }
diff --git a/src/event.h b/src/event.h
index 0c99946..d566160 100644
--- a/src/event.h
+++ b/src/event.h
@@ -26,9 +26,10 @@ typedef struct {
 } event;
 
 typedef enum {
-  LEFT = 0x01,
-  RIGHT = 0x10,
-  MIDDLE = 0x11
+  M_NONE = 0,
+  M_LEFT = 0x01,
+  M_RIGHT = 0x02,
+  M_MIDDLE = 0x03
 } mouse_button;
 
 
diff --git a/src/read_events.c b/src/read_events.c
index e1b4989..50536f4 100644
--- a/src/read_events.c
+++ b/src/read_events.c
@@ -90,11 +90,11 @@ int listen(FILE *file)
 
       /* printf("%d - %d\n", event.xmotion.x, event.xmotion.y); */
 
-      if ((left || right) && !(left && right)) {
-        mouse_button type_button;
-        if (left) type_button = LEFT;
-        if (right) type_button = RIGHT;
-        if (middle) type_button = MIDDLE;
+      if (left || right) {
+        mouse_button type_button = M_NONE;
+        if (left) type_button |= M_LEFT;
+        if (right) type_button |= M_RIGHT;
+        if (middle) type_button |= M_MIDDLE;
 
         mouse_event_coord(user_event, type_button, event.xmotion.x, event.xmotion.y);
         write_event(user_event, file);
diff --git a/src/read_file.c b/src/read_file.c
index c1123ef..b64247a 100644
--- a/src/read_file.c
+++ b/src/read_file.c
@@ -32,9 +32,9 @@ void readfile(args_readfile *args)
       break;
     }
 
-    left = current_event->infos & LEFT;
-    right = current_event->infos & RIGHT;
-    middle = current_event->infos & MIDDLE;
+    left = (current_event->infos & M_LEFT) == M_LEFT;
+    right =(current_event->infos & M_RIGHT) == M_RIGHT;
+    middle=(current_event->infos & M_MIDDLE) == M_MIDDLE ;
 
     x = current_event->x;
     y = current_event->y;