Merged r3087:3089 from branches/SDL-1.2: WM_XBUTTON support.
--- a/src/video/win32/SDL_win32events.c Fri Jun 15 15:54:07 2007 +0000
+++ b/src/video/win32/SDL_win32events.c Sat Jun 16 05:29:28 2007 +0000
@@ -36,6 +36,16 @@
#define REPEATED_KEYMASK (1<<30)
#define EXTENDED_KEYMASK (1<<24)
+/* Make sure XBUTTON stuff is defined that isn't in older Platform SDKs... */
+#ifndef WM_XBUTTONDOWN
+#define WM_XBUTTONDOWN 0x020B
+#endif
+#ifndef WM_XBUTTONUP
+#define WM_XBUTTONUP 0x020C
+#endif
+#ifndef GET_XBUTTON_WPARAM
+#define GET_XBUTTON_WPARAM(w) (HIWORD(w))
+#endif
static SDLKey
TranslateKey(WPARAM vkey)
@@ -534,7 +544,10 @@
case WM_MBUTTONUP:
case WM_RBUTTONDOWN:
case WM_RBUTTONUP:
+ case WM_XBUTTONDOWN:
+ case WM_XBUTTONUP:
{
+ int xbuttonval = 0;
int index;
SDL_Mouse *mouse;
Uint8 button, state;
@@ -575,6 +588,16 @@
button = SDL_BUTTON_RIGHT;
state = SDL_RELEASED;
break;
+ case WM_XBUTTONDOWN:
+ xbuttonval = GET_XBUTTON_WPARAM(wParam);
+ button = SDL_BUTTON_WHEELDOWN + xbuttonval;
+ state = SDL_PRESSED;
+ break;
+ case WM_XBUTTONUP:
+ xbuttonval = GET_XBUTTON_WPARAM(wParam);
+ button = SDL_BUTTON_WHEELDOWN + xbuttonval;
+ state = SDL_RELEASED;
+ break;
default:
/* Eh? Unknown button? */
return (0);
@@ -599,6 +622,20 @@
SDL_SendMouseMotion(index, 0, x, y);
}
SDL_SendMouseButton(index, state, button);
+
+ /*
+ * MSDN says:
+ * "Unlike the WM_LBUTTONUP, WM_MBUTTONUP, and WM_RBUTTONUP
+ * messages, an application should return TRUE from [an
+ * XBUTTON message] if it processes it. Doing so will allow
+ * software that simulates this message on Microsoft Windows
+ * systems earlier than Windows 2000 to determine whether
+ * the window procedure processed the message or called
+ * DefWindowProc to process it.
+ */
+ if (xbuttonval > 0) {
+ return(TRUE);
+ }
}
return (0);
--- a/src/video/win32/wmmsg.h Fri Jun 15 15:54:07 2007 +0000
+++ b/src/video/win32/wmmsg.h Sat Jun 16 05:29:28 2007 +0000
@@ -524,9 +524,9 @@
"WM_MBUTTONDOWN",
"WM_MBUTTONUP",
"WM_MOUSELAST",
- "WM_MOUSELAST",
- "UNKNOWN (523)",
- "UNKNOWN (524)",
+ "WM_MOUSEWHEEL",
+ "WM_XBUTTONDOWN",
+ "WM_XBUTTONUP",
"UNKNOWN (525)",
"UNKNOWN (526)",
"UNKNOWN (527)",