Commit 79ce9cd6 authored by Sam Lantinga's avatar Sam Lantinga

Fixed bug #382

Added horizontal scrolling support: SDL_BUTTON_WHEELLEFT (6) and SDL_BUTTON_WHEELRIGHT (7)

--HG--
branch : SDL-1.2
extra : convert_revision : svn%3Ac70aab31-4412-0410-b14c-859654838e24/branches/SDL-1.2%402427
parent 4722d6e9
...@@ -7,6 +7,8 @@ Version 1.0: ...@@ -7,6 +7,8 @@ Version 1.0:
Added SDL_VIDEO_ALLOW_SCREENSAVER to override SDL's disabling Added SDL_VIDEO_ALLOW_SCREENSAVER to override SDL's disabling
of the screensaver on Mac OS X and X11. of the screensaver on Mac OS X and X11.
Added SDL_BUTTON_WHEELLEFT (6) and SDL_BUTTON_WHEELRIGHT (7)
1.2.10: 1.2.10:
If SDL_OpenAudio() is passed zero for the desired format If SDL_OpenAudio() is passed zero for the desired format
fields, the following environment variables will be used fields, the following environment variables will be used
......
...@@ -28,6 +28,9 @@ SDL 1.2.12 is a minor bug fix release. ...@@ -28,6 +28,9 @@ SDL 1.2.12 is a minor bug fix release.
<P> <P>
Added SDL_VIDEO_ALLOW_SCREENSAVER to override SDL's disabling of the screensaver on Mac OS X, Windows, and X11. Added SDL_VIDEO_ALLOW_SCREENSAVER to override SDL's disabling of the screensaver on Mac OS X, Windows, and X11.
</P> </P>
<P>
Added SDL_BUTTON_WHEELLEFT (6) and SDL_BUTTON_WHEELRIGHT (7)
</P>
<P> <P>
Fixed buffer overrun crash when resampling audio rates. Fixed buffer overrun crash when resampling audio rates.
</P> </P>
......
...@@ -115,6 +115,8 @@ extern DECLSPEC int SDLCALL SDL_ShowCursor(int toggle); ...@@ -115,6 +115,8 @@ extern DECLSPEC int SDLCALL SDL_ShowCursor(int toggle);
Button 3: Right mouse button Button 3: Right mouse button
Button 4: Mouse wheel up (may also be a real button) Button 4: Mouse wheel up (may also be a real button)
Button 5: Mouse wheel down (may also be a real button) Button 5: Mouse wheel down (may also be a real button)
Button 6: Mouse wheel left (may also be a real button)
Button 7: Mouse wheel right (may also be a real button)
*/ */
#define SDL_BUTTON(X) (1 << ((X)-1)) #define SDL_BUTTON(X) (1 << ((X)-1))
#define SDL_BUTTON_LEFT 1 #define SDL_BUTTON_LEFT 1
...@@ -122,6 +124,8 @@ extern DECLSPEC int SDLCALL SDL_ShowCursor(int toggle); ...@@ -122,6 +124,8 @@ extern DECLSPEC int SDLCALL SDL_ShowCursor(int toggle);
#define SDL_BUTTON_RIGHT 3 #define SDL_BUTTON_RIGHT 3
#define SDL_BUTTON_WHEELUP 4 #define SDL_BUTTON_WHEELUP 4
#define SDL_BUTTON_WHEELDOWN 5 #define SDL_BUTTON_WHEELDOWN 5
#define SDL_BUTTON_WHEELLEFT 6
#define SDL_BUTTON_WHEELRIGHT 7
#define SDL_BUTTON_LMASK SDL_BUTTON(SDL_BUTTON_LEFT) #define SDL_BUTTON_LMASK SDL_BUTTON(SDL_BUTTON_LEFT)
#define SDL_BUTTON_MMASK SDL_BUTTON(SDL_BUTTON_MIDDLE) #define SDL_BUTTON_MMASK SDL_BUTTON(SDL_BUTTON_MIDDLE)
#define SDL_BUTTON_RMASK SDL_BUTTON(SDL_BUTTON_RIGHT) #define SDL_BUTTON_RMASK SDL_BUTTON(SDL_BUTTON_RIGHT)
......
...@@ -294,12 +294,23 @@ SDL_WarpMouse((int)center.x*2-1,(int)center.y*2-1); ...@@ -294,12 +294,23 @@ SDL_WarpMouse((int)center.x*2-1,(int)center.y*2-1);
float x, y; float x, y;
x = y = 0; x = y = 0;
if (msg->FindFloat("be:wheel_delta_x", &x) == B_OK && msg->FindFloat("be:wheel_delta_y", &y) == B_OK) { if (msg->FindFloat("be:wheel_delta_x", &x) == B_OK && msg->FindFloat("be:wheel_delta_y", &y) == B_OK) {
if (x < 0 || y < 0) { if ( y ) {
SDL_PrivateMouseButton(SDL_PRESSED, SDL_BUTTON_WHEELDOWN, 0, 0); if (y < 0) {
SDL_PrivateMouseButton(SDL_RELEASED, SDL_BUTTON_WHEELDOWN, 0, 0); SDL_PrivateMouseButton(SDL_PRESSED, SDL_BUTTON_WHEELDOWN, 0, 0);
} else if (x > 0 || y > 0) { SDL_PrivateMouseButton(SDL_RELEASED, SDL_BUTTON_WHEELDOWN, 0, 0);
SDL_PrivateMouseButton(SDL_PRESSED, SDL_BUTTON_WHEELUP, 0, 0); } else {
SDL_PrivateMouseButton(SDL_RELEASED, SDL_BUTTON_WHEELUP, 0, 0); SDL_PrivateMouseButton(SDL_PRESSED, SDL_BUTTON_WHEELUP, 0, 0);
SDL_PrivateMouseButton(SDL_RELEASED, SDL_BUTTON_WHEELUP, 0, 0);
}
}
if ( x ) {
if (x < 0) {
SDL_PrivateMouseButton(SDL_PRESSED, SDL_BUTTON_WHEELRIGHT, 0, 0);
SDL_PrivateMouseButton(SDL_RELEASED, SDL_BUTTON_WHEELRIGHT, 0, 0);
} else {
SDL_PrivateMouseButton(SDL_PRESSED, SDL_BUTTON_WHEELLEFT, 0, 0);
SDL_PrivateMouseButton(SDL_RELEASED, SDL_BUTTON_WHEELLEFT, 0, 0);
}
} }
} }
break; break;
......
...@@ -932,13 +932,24 @@ void QZ_PumpEvents (_THIS) ...@@ -932,13 +932,24 @@ void QZ_PumpEvents (_THIS)
Uint8 button; Uint8 button;
dy = [ event deltaY ]; dy = [ event deltaY ];
dx = [ event deltaX ]; dx = [ event deltaX ];
if ( dy > 0.0 || dx > 0.0 ) /* Scroll up */ if ( dy ) {
button = SDL_BUTTON_WHEELUP; if ( dy > 0.0 ) /* Scroll up */
else /* Scroll down */ button = SDL_BUTTON_WHEELUP;
button = SDL_BUTTON_WHEELDOWN; else /* Scroll down */
/* For now, wheel is sent as a quick down+up */ button = SDL_BUTTON_WHEELDOWN;
SDL_PrivateMouseButton (SDL_PRESSED, button, 0, 0); /* For now, wheel is sent as a quick down+up */
SDL_PrivateMouseButton (SDL_RELEASED, button, 0, 0); SDL_PrivateMouseButton (SDL_PRESSED, button, 0, 0);
SDL_PrivateMouseButton (SDL_RELEASED, button, 0, 0);
}
if ( dx ) {
if ( dx > 0.0 ) /* Scroll left */
button = SDL_BUTTON_WHEELLEFT;
else /* Scroll right */
button = SDL_BUTTON_WHEELRIGHT;
/* For now, wheel is sent as a quick down+up */
SDL_PrivateMouseButton (SDL_PRESSED, button, 0, 0);
SDL_PrivateMouseButton (SDL_RELEASED, button, 0, 0);
}
} }
break; break;
case NSKeyUp: case NSKeyUp:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment