Skip to content
This repository has been archived by the owner on Feb 11, 2021. It is now read-only.

Commit

Permalink
Removed unneccesary code lines. Fixed mousename bug. Added lacking co…
Browse files Browse the repository at this point in the history
…de in mousebutton
  • Loading branch information
Szymon Wilczek committed Aug 25, 2008
1 parent b68d1c9 commit 8e58754
Show file tree
Hide file tree
Showing 3 changed files with 47 additions and 10 deletions.
43 changes: 38 additions & 5 deletions include/SDL_mouse.h
Expand Up @@ -54,6 +54,17 @@ typedef struct SDL_Cursor SDL_Cursor; /* Implementation dependent */
*/
extern DECLSPEC int SDLCALL SDL_GetNumMice(void);

/**
* \fn char* SDL_GetMouseName(int index)
*
* \brief Gets the name of a mouse with the given index.
*
* \param index is the index of the mouse, which name is to be returned.
*
* \return the name of the mouse with the specified index
*/
extern DECLSPEC char *SDLCALL SDL_GetMouseName(int index);

/**
* \fn int SDL_SelectMouse(int index)
*
Expand Down Expand Up @@ -206,13 +217,35 @@ extern DECLSPEC int SDLCALL SDL_ShowCursor(int toggle);
Button 3: Right mouse button
*/

/* FIXME: Where do these functions go in this header?
Also, add doxygen documentation for these...
*/
extern DECLSPEC char *SDLCALL SDL_GetMouseName(int index);

/**
* \fn int SDL_GetCursorsNumber(int index)
*
* \brief Gets the number of cursors a pointing device supports.
* Useful for tablet users. Useful only under Windows.
*
* \param index is the index of the pointing device, which number of cursors we
* want to receive.
*
* \return the number of cursors supported by the pointing device. On Windows
* if a device is a tablet it returns a number >=1. Normal mice always return 1.
* On Linux every device reports one cursor.
*/
extern DECLSPEC int SDLCALL SDL_GetCursorsNumber(int index);

/**
* \fn int SDL_GetCurrentCursor(int index)
*
* \brief Returns the index of the current cursor used by a specific pointing
* device. Useful only under Windows.
*
* \param index is the index of the pointing device, which cursor index we want
* to receive.
*
* \return the index of the cursor currently used by a specific pointing device.
* Always 0 under Linux. On Windows if the device isn't a tablet it returns 0.
* If the device is the tablet it returns the cursor index.
* 0 - stylus, 1 - eraser, 2 - cursor.
*/
extern DECLSPEC int SDLCALL SDL_GetCurrentCursor(int index);

#define SDL_BUTTON(X) (1 << ((X)-1))
Expand Down
8 changes: 6 additions & 2 deletions src/events/SDL_mouse.c
Expand Up @@ -116,8 +116,8 @@ SDL_AddMouse(const SDL_Mouse * mouse, int index, char *name, int pressure_max,
/* we're setting the mouse properties */
length = 0;
length = SDL_strlen(name);
SDL_mice[index]->name = SDL_malloc((length + 1) * sizeof(char));
SDL_strlcpy(SDL_mice[index]->name, name, length);
SDL_mice[index]->name = SDL_malloc((length + 2) * sizeof(char));
SDL_strlcpy(SDL_mice[index]->name, name, length+1);
SDL_mice[index]->pressure_max = pressure_max;
SDL_mice[index]->pressure_min = pressure_min;
SDL_mice[index]->cursor_shown = SDL_TRUE;
Expand Down Expand Up @@ -512,6 +512,10 @@ SDL_SendMouseButton(int id, Uint8 state, Uint8 button)
mouse->buttonstate |= SDL_BUTTON(button);
break;
case SDL_RELEASED:
if(!(mouse->buttonstate & SDL_BUTTON(button))) {
/* Ignore this event, no state change */
return 0;
}
type = SDL_MOUSEBUTTONUP;
mouse->buttonstate &= ~SDL_BUTTON(button);
break;
Expand Down
6 changes: 3 additions & 3 deletions src/video/x11/SDL_x11window.c
Expand Up @@ -483,7 +483,6 @@ X11_CreateWindow(_THIS, SDL_Window * window)
Uint32 fevent = 0;
pXGetICValues(((SDL_WindowData *) window->driverdata)->ic,
XNFilterEvents, &fevent, NULL);
XMapWindow(data->display, w);
XSelectInput(data->display, w,
(FocusChangeMask | EnterWindowMask | LeaveWindowMask |
ExposureMask | ButtonPressMask | ButtonReleaseMask |
Expand All @@ -492,13 +491,14 @@ X11_CreateWindow(_THIS, SDL_Window * window)
KeymapStateMask | fevent));
}
#else
XMapWindow(data->display, w);
XSelectInput(data->display, w,
{
XSelectInput(data->display, w,
(FocusChangeMask | EnterWindowMask | LeaveWindowMask |
ExposureMask | ButtonPressMask | ButtonReleaseMask |
PointerMotionMask | KeyPressMask | KeyReleaseMask |
PropertyChangeMask | StructureNotifyMask |
KeymapStateMask));
}
#endif

/* we're informing the display what extension events we want to receive from it */
Expand Down

0 comments on commit 8e58754

Please sign in to comment.