shithub: duke3d

Download patch

ref: 098463ddca13f046c4540643d357e23be052d8c0
parent: c8fcd6ee016b997cf73ea259fc658cba2c043001
author: Jacob Moody <moody@posixcafe.org>
date: Sat Apr 22 13:36:05 EDT 2023

Engine: make mouse buttons work

--- a/Engine/src/display.c
+++ b/Engine/src/display.c
@@ -265,27 +265,26 @@
 		 *
 		 *  additionally bits 3&4 are set for the mouse wheel
 		 */
-	Uint8 button = event->button;
-	if (button >= sizeof (mouse_buttons) * 8)
-		return(0);
 
-	if (button == SDL_BUTTON_RIGHT)
-		button = SDL_BUTTON_MIDDLE;
-	else if (button == SDL_BUTTON_MIDDLE)
-		button = SDL_BUTTON_RIGHT;
+	Uint8 but;
 
-	if (((const SDL_MouseButtonEvent*)event)->state)
-		mouse_buttons |= 1<<(button-1);
-	else if (button != 4 && button != 5)
-		mouse_buttons ^= 1<<(button-1);
-#if 0
-	Uint8 bmask = SDL_GetMouseState(NULL, NULL);
-	mouse_buttons = 0;
-	if (bmask & SDL_BUTTON_LMASK) mouse_buttons |= 1;
-	if (bmask & SDL_BUTTON_RMASK) mouse_buttons |= 2;
-	if (bmask & SDL_BUTTON_MMASK) mouse_buttons |= 4;
-#endif
+	switch(event->button){
+	case SDL_BUTTON_RIGHT:
+		but = 2;
+		break;
+	case SDL_BUTTON_MIDDLE:
+		but = 4;
+		break;
+	case SDL_BUTTON_LEFT:
+		but = 1;
+		break;
+	}
 
+	if(event->state)
+		mouse_buttons |= but;
+	else
+		mouse_buttons ^= but;
+
 	return(0);
 } /* sdl_mouse_up_filter */
 
@@ -471,7 +470,7 @@
 			return(sdl_mouse_motion_filter(event));
 		case SDL_MOUSEBUTTONUP:
 		case SDL_MOUSEBUTTONDOWN:
-			return(sdl_mouse_button_filter((const SDL_MouseButtonEvent*)event));
+			return(sdl_mouse_button_filter(&event->button));
 		case SDL_QUIT:
 			/* !!! rcg TEMP */
 			Error(EXIT_SUCCESS, "Exit through SDL\n");