mirror of
https://github.com/joel16/SDL2.git
synced 2024-12-12 13:35:53 +00:00
Fixed double-mouse event bug on Windows using OpenGL
--HG-- extra : convert_revision : svn%3Ac70aab31-4412-0410-b14c-859654838e24/trunk%4014
This commit is contained in:
parent
a42b4fe1dc
commit
0329e5fda5
@ -16,6 +16,7 @@ be found at the <A HREF="http://www.libsdl.org/"> main SDL page</A>.
|
||||
Major changes since SDL 1.0.0:
|
||||
</H2>
|
||||
<UL>
|
||||
<LI> 1.2.1: Fixed double-mouse event bug on Windows using OpenGL
|
||||
<LI> 1.2.1: Fixed 320x200 video mode on framebuffer console
|
||||
<LI> 1.2.1: Improved robustness for the ELO touchpad (thanks Alex!)
|
||||
<LI> 1.2.1: Added support for building under Cygwin on Windows
|
||||
|
@ -35,13 +35,19 @@ static char rcsid =
|
||||
/* Hidden "this" pointer for the video functions */
|
||||
#define _THIS SDL_VideoDevice *this
|
||||
|
||||
#define DIRECTX_FULLSCREEN() \
|
||||
#define DDRAW_FULLSCREEN() \
|
||||
( \
|
||||
((SDL_VideoSurface->flags & SDL_FULLSCREEN) == SDL_FULLSCREEN) && \
|
||||
((SDL_VideoSurface->flags & SDL_OPENGL ) != SDL_OPENGL ) && \
|
||||
(strcmp(this->name, "directx") == 0) \
|
||||
)
|
||||
|
||||
#define DINPUT_FULLSCREEN() \
|
||||
( \
|
||||
((SDL_VideoSurface->flags & SDL_FULLSCREEN) == SDL_FULLSCREEN) && \
|
||||
(strcmp(this->name, "directx") == 0) \
|
||||
)
|
||||
|
||||
/* The main window -- and a function to set it for the audio */
|
||||
extern const char *SDL_Appname;
|
||||
extern HINSTANCE SDL_Instance;
|
||||
|
@ -200,7 +200,7 @@ static LONG CALLBACK WinMessage(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lPara
|
||||
case WM_MOUSEMOVE: {
|
||||
|
||||
/* Mouse is handled by DirectInput when fullscreen */
|
||||
if ( SDL_VideoSurface && ! DIRECTX_FULLSCREEN() ) {
|
||||
if ( SDL_VideoSurface && ! DINPUT_FULLSCREEN() ) {
|
||||
Sint16 x, y;
|
||||
|
||||
/* mouse has entered the window */
|
||||
@ -243,7 +243,7 @@ static LONG CALLBACK WinMessage(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lPara
|
||||
case WM_MOUSELEAVE: {
|
||||
|
||||
/* Mouse is handled by DirectInput when fullscreen */
|
||||
if ( SDL_VideoSurface && ! DIRECTX_FULLSCREEN() ) {
|
||||
if ( SDL_VideoSurface && ! DINPUT_FULLSCREEN() ) {
|
||||
/* mouse has left the window */
|
||||
/* or */
|
||||
/* Elvis has left the building! */
|
||||
@ -261,7 +261,7 @@ static LONG CALLBACK WinMessage(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lPara
|
||||
case WM_RBUTTONDOWN:
|
||||
case WM_RBUTTONUP: {
|
||||
/* Mouse is handled by DirectInput when fullscreen */
|
||||
if ( SDL_VideoSurface && ! DIRECTX_FULLSCREEN() ) {
|
||||
if ( SDL_VideoSurface && ! DINPUT_FULLSCREEN() ) {
|
||||
Sint16 x, y;
|
||||
Uint8 button, state;
|
||||
|
||||
|
@ -192,7 +192,7 @@ int WIN_ShowWMCursor(_THIS, WMcursor *cursor)
|
||||
POINT mouse_pos;
|
||||
|
||||
/* The fullscreen cursor must be done in software with DirectInput */
|
||||
if ( !this->screen || DIRECTX_FULLSCREEN() ) {
|
||||
if ( !this->screen || DDRAW_FULLSCREEN() ) {
|
||||
return(0);
|
||||
}
|
||||
|
||||
@ -213,7 +213,7 @@ void WIN_WarpWMCursor(_THIS, Uint16 x, Uint16 y)
|
||||
{
|
||||
POINT pt;
|
||||
|
||||
if ( DIRECTX_FULLSCREEN() ) {
|
||||
if ( DDRAW_FULLSCREEN() ) {
|
||||
x += (this->screen->offset % this->screen->pitch) /
|
||||
this->screen->format->BytesPerPixel;
|
||||
y += (this->screen->offset / this->screen->pitch);
|
||||
@ -237,7 +237,7 @@ void WIN_UpdateMouse(_THIS)
|
||||
RECT rect;
|
||||
POINT pt;
|
||||
|
||||
if ( ! DIRECTX_FULLSCREEN() ) {
|
||||
if ( ! DDRAW_FULLSCREEN() ) {
|
||||
GetClientRect(SDL_Window, &rect);
|
||||
GetCursorPos(&pt);
|
||||
MapWindowPoints(NULL, SDL_Window, &pt, 1);
|
||||
|
Loading…
Reference in New Issue
Block a user