comparison src/events/SDL_mouse.c @ 943:715c32d8f26c

Date: Sun, 18 Jul 2004 00:22:07 -0400 From: "Philippe Anctil" Subject: [SDL] odd mouse event generated on init The mouse relative and absolute coordinates appear to be always equal for the first mouse event.
author Sam Lantinga <slouken@libsdl.org>
date Sat, 21 Aug 2004 12:38:50 +0000
parents b8d311d90021
children 28ac87a38c17
comparison
equal deleted inserted replaced
942:41a59de7f2ed 943:715c32d8f26c
36 #include "SDL_cursor_c.h" 36 #include "SDL_cursor_c.h"
37 #include "SDL_sysvideo.h" 37 #include "SDL_sysvideo.h"
38 38
39 39
40 /* These are static for our mouse handling code */ 40 /* These are static for our mouse handling code */
41 static Sint16 SDL_MouseX = 0; 41 static Sint16 SDL_MouseX = -1;
42 static Sint16 SDL_MouseY = 0; 42 static Sint16 SDL_MouseY = -1;
43 static Sint16 SDL_DeltaX = 0; 43 static Sint16 SDL_DeltaX = 0;
44 static Sint16 SDL_DeltaY = 0; 44 static Sint16 SDL_DeltaY = 0;
45 static Uint8 SDL_ButtonState = 0; 45 static Uint8 SDL_ButtonState = 0;
46 46
47 47
48 /* Public functions */ 48 /* Public functions */
49 int SDL_MouseInit(void) 49 int SDL_MouseInit(void)
50 { 50 {
51 /* The mouse is at (0,0) */ 51 /* The mouse is at (0,0) */
52 SDL_MouseX = 0; 52 SDL_MouseX = -1;
53 SDL_MouseY = 0; 53 SDL_MouseY = -1;
54 SDL_DeltaX = 0; 54 SDL_DeltaX = 0;
55 SDL_DeltaY = 0; 55 SDL_DeltaY = 0;
56 SDL_ButtonState = 0; 56 SDL_ButtonState = 0;
57 57
58 /* That's it! */ 58 /* That's it! */
70 } 70 }
71 } 71 }
72 72
73 Uint8 SDL_GetMouseState (int *x, int *y) 73 Uint8 SDL_GetMouseState (int *x, int *y)
74 { 74 {
75 if ( x ) 75 if ( x ) {
76 *x = SDL_MouseX; 76 if ( SDL_MouseX < 0 ) {
77 if ( y ) 77 *x = 0;
78 *y = SDL_MouseY; 78 } else {
79 *x = SDL_MouseX;
80 }
81 }
82 if ( y ) {
83 if ( SDL_MouseY < 0 ) {
84 *y = 0;
85 } else {
86 *y = SDL_MouseY;
87 }
88 }
79 return(SDL_ButtonState); 89 return(SDL_ButtonState);
80 } 90 }
81 91
82 Uint8 SDL_GetRelativeMouseState (int *x, int *y) 92 Uint8 SDL_GetRelativeMouseState (int *x, int *y)
83 { 93 {
150 160
151 /* If not relative mode, generate relative motion from clamped X/Y. 161 /* If not relative mode, generate relative motion from clamped X/Y.
152 This prevents lots of extraneous large delta relative motion when 162 This prevents lots of extraneous large delta relative motion when
153 the screen is windowed mode and the mouse is outside the window. 163 the screen is windowed mode and the mouse is outside the window.
154 */ 164 */
155 if ( ! relative ) { 165 if ( ! relative && SDL_MouseX >= 0 && SDL_MouseY >= 0 ) {
156 Xrel = X-SDL_MouseX; 166 Xrel = X-SDL_MouseX;
157 Yrel = Y-SDL_MouseY; 167 Yrel = Y-SDL_MouseY;
158 } 168 }
159 169
160 /* Update internal mouse state */ 170 /* Update internal mouse state */