src/video/windows/SDL_windowsevents.c
author Sam Lantinga <slouken@libsdl.org>
Mon, 24 Feb 2014 22:49:30 -0800
changeset 8253 75ad8ebb3768
parent 8218 cf153cc95173
child 8624 c87db33e4cae
permissions -rw-r--r--
Make sure we don't clip the cursor while clicking on the window title bar
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
     1
/*
5535
96594ac5fd1a SDL 1.3 is now under the zlib license.
Sam Lantinga <slouken@libsdl.org>
parents: 5421
diff changeset
     2
  Simple DirectMedia Layer
8149
681eb46b8ac4 Fixed bug 2374 - Update copyright for 2014...
Sam Lantinga <slouken@libsdl.org>
parents: 8143
diff changeset
     3
  Copyright (C) 1997-2014 Sam Lantinga <slouken@libsdl.org>
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
     4
5535
96594ac5fd1a SDL 1.3 is now under the zlib license.
Sam Lantinga <slouken@libsdl.org>
parents: 5421
diff changeset
     5
  This software is provided 'as-is', without any express or implied
96594ac5fd1a SDL 1.3 is now under the zlib license.
Sam Lantinga <slouken@libsdl.org>
parents: 5421
diff changeset
     6
  warranty.  In no event will the authors be held liable for any damages
96594ac5fd1a SDL 1.3 is now under the zlib license.
Sam Lantinga <slouken@libsdl.org>
parents: 5421
diff changeset
     7
  arising from the use of this software.
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
     8
5535
96594ac5fd1a SDL 1.3 is now under the zlib license.
Sam Lantinga <slouken@libsdl.org>
parents: 5421
diff changeset
     9
  Permission is granted to anyone to use this software for any purpose,
96594ac5fd1a SDL 1.3 is now under the zlib license.
Sam Lantinga <slouken@libsdl.org>
parents: 5421
diff changeset
    10
  including commercial applications, and to alter it and redistribute it
96594ac5fd1a SDL 1.3 is now under the zlib license.
Sam Lantinga <slouken@libsdl.org>
parents: 5421
diff changeset
    11
  freely, subject to the following restrictions:
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    12
5535
96594ac5fd1a SDL 1.3 is now under the zlib license.
Sam Lantinga <slouken@libsdl.org>
parents: 5421
diff changeset
    13
  1. The origin of this software must not be misrepresented; you must not
96594ac5fd1a SDL 1.3 is now under the zlib license.
Sam Lantinga <slouken@libsdl.org>
parents: 5421
diff changeset
    14
     claim that you wrote the original software. If you use this software
96594ac5fd1a SDL 1.3 is now under the zlib license.
Sam Lantinga <slouken@libsdl.org>
parents: 5421
diff changeset
    15
     in a product, an acknowledgment in the product documentation would be
96594ac5fd1a SDL 1.3 is now under the zlib license.
Sam Lantinga <slouken@libsdl.org>
parents: 5421
diff changeset
    16
     appreciated but is not required.
96594ac5fd1a SDL 1.3 is now under the zlib license.
Sam Lantinga <slouken@libsdl.org>
parents: 5421
diff changeset
    17
  2. Altered source versions must be plainly marked as such, and must not be
96594ac5fd1a SDL 1.3 is now under the zlib license.
Sam Lantinga <slouken@libsdl.org>
parents: 5421
diff changeset
    18
     misrepresented as being the original software.
96594ac5fd1a SDL 1.3 is now under the zlib license.
Sam Lantinga <slouken@libsdl.org>
parents: 5421
diff changeset
    19
  3. This notice may not be removed or altered from any source distribution.
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    20
*/
8093
b43765095a6f Make internal SDL sources include SDL_internal.h instead of SDL_config.h
Ryan C. Gordon <icculus@icculus.org>
parents: 8084
diff changeset
    21
#include "../../SDL_internal.h"
2710
44e49d3fa6cf Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents: 2324
diff changeset
    22
6044
35448a5ea044 Lots of fixes importing SDL source wholesale into a new iOS project
Sam Lantinga <slouken@libsdl.org>
parents: 5889
diff changeset
    23
#if SDL_VIDEO_DRIVER_WINDOWS
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    24
5062
e8916fe9cfc8 Fixed bug #925
Sam Lantinga <slouken@libsdl.org>
parents: 5056
diff changeset
    25
#include "SDL_windowsvideo.h"
e8916fe9cfc8 Fixed bug #925
Sam Lantinga <slouken@libsdl.org>
parents: 5056
diff changeset
    26
#include "SDL_windowsshape.h"
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    27
#include "SDL_syswm.h"
8218
cf153cc95173 Make sure we don't stay in the windows event loop forever if there are lots of events coming in quickly.
Sam Lantinga <slouken@libsdl.org>
parents: 8212
diff changeset
    28
#include "SDL_timer.h"
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    29
#include "SDL_vkeys.h"
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    30
#include "../../events/SDL_events_c.h"
4919
716b2cbf4c9e First pass at Windows multi-touch gesture support
Sam Lantinga <slouken@libsdl.org>
parents: 4902
diff changeset
    31
#include "../../events/SDL_touch_c.h"
6938
b272d47f70a7 Cleaned up and fixed the Windows keyboard mapping code.
Sam Lantinga <slouken@libsdl.org>
parents: 6931
diff changeset
    32
#include "../../events/scancodes_windows.h"
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    33
6523
62d0193a7a02 Fixed bug 1593 - SDL_DROPFILE event doesn't work on Windows
Sam Lantinga <slouken@libsdl.org>
parents: 6430
diff changeset
    34
/* Dropfile support */
62d0193a7a02 Fixed bug 1593 - SDL_DROPFILE event doesn't work on Windows
Sam Lantinga <slouken@libsdl.org>
parents: 6430
diff changeset
    35
#include <shellapi.h>
62d0193a7a02 Fixed bug 1593 - SDL_DROPFILE event doesn't work on Windows
Sam Lantinga <slouken@libsdl.org>
parents: 6430
diff changeset
    36
7276
37814e7eeff3 Win32: Fix issue with SetCapture & negative values.
Jørgen P. Tjernø <jorgen@valvesoftware.com>
parents: 7275
diff changeset
    37
/* For GET_X_LPARAM, GET_Y_LPARAM. */
37814e7eeff3 Win32: Fix issue with SetCapture & negative values.
Jørgen P. Tjernø <jorgen@valvesoftware.com>
parents: 7275
diff changeset
    38
#include <windowsx.h>
6523
62d0193a7a02 Fixed bug 1593 - SDL_DROPFILE event doesn't work on Windows
Sam Lantinga <slouken@libsdl.org>
parents: 6430
diff changeset
    39
7678
286c42d7c5ed OCD fixes: Adds a space after /* (glory to regular expressions!)
Gabriel Jacobo <gabomdq@gmail.com>
parents: 7677
diff changeset
    40
/* #define WMMSG_DEBUG */
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    41
#ifdef WMMSG_DEBUG
7191
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
    42
#include <stdio.h>
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    43
#include "wmmsg.h"
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    44
#endif
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    45
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    46
/* Masks for processing the windows KEYDOWN and KEYUP messages */
2317
f537a293b3da Windows also remaps the numeric keypad... grrr
Sam Lantinga <slouken@libsdl.org>
parents: 2313
diff changeset
    47
#define REPEATED_KEYMASK    (1<<30)
f537a293b3da Windows also remaps the numeric keypad... grrr
Sam Lantinga <slouken@libsdl.org>
parents: 2313
diff changeset
    48
#define EXTENDED_KEYMASK    (1<<24)
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    49
2324
3202e4826c57 more valgrind errors fixed. Plus I ran make indent which changed a few files.
Bob Pendleton <bob@pendleton.com>
parents: 2317
diff changeset
    50
#define VK_ENTER    10          /* Keypad Enter ... no VKEY defined? */
6931
843f9c1b16b8 Fixed cygwin compile
Sam Lantinga <slouken@libsdl.org>
parents: 6929
diff changeset
    51
#ifndef VK_OEM_NEC_EQUAL
7191
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
    52
#define VK_OEM_NEC_EQUAL 0x92
6931
843f9c1b16b8 Fixed cygwin compile
Sam Lantinga <slouken@libsdl.org>
parents: 6929
diff changeset
    53
#endif
2313
012ec5192dfa Added support for keypad enter
Sam Lantinga <slouken@libsdl.org>
parents: 2312
diff changeset
    54
2127
3bcc26b74e42 Merged r3087:3089 from branches/SDL-1.2: WM_XBUTTON support.
Ryan C. Gordon <icculus@icculus.org>
parents: 1951
diff changeset
    55
/* Make sure XBUTTON stuff is defined that isn't in older Platform SDKs... */
3bcc26b74e42 Merged r3087:3089 from branches/SDL-1.2: WM_XBUTTON support.
Ryan C. Gordon <icculus@icculus.org>
parents: 1951
diff changeset
    56
#ifndef WM_XBUTTONDOWN
3bcc26b74e42 Merged r3087:3089 from branches/SDL-1.2: WM_XBUTTON support.
Ryan C. Gordon <icculus@icculus.org>
parents: 1951
diff changeset
    57
#define WM_XBUTTONDOWN 0x020B
3bcc26b74e42 Merged r3087:3089 from branches/SDL-1.2: WM_XBUTTON support.
Ryan C. Gordon <icculus@icculus.org>
parents: 1951
diff changeset
    58
#endif
3bcc26b74e42 Merged r3087:3089 from branches/SDL-1.2: WM_XBUTTON support.
Ryan C. Gordon <icculus@icculus.org>
parents: 1951
diff changeset
    59
#ifndef WM_XBUTTONUP
3bcc26b74e42 Merged r3087:3089 from branches/SDL-1.2: WM_XBUTTON support.
Ryan C. Gordon <icculus@icculus.org>
parents: 1951
diff changeset
    60
#define WM_XBUTTONUP 0x020C
3bcc26b74e42 Merged r3087:3089 from branches/SDL-1.2: WM_XBUTTON support.
Ryan C. Gordon <icculus@icculus.org>
parents: 1951
diff changeset
    61
#endif
3bcc26b74e42 Merged r3087:3089 from branches/SDL-1.2: WM_XBUTTON support.
Ryan C. Gordon <icculus@icculus.org>
parents: 1951
diff changeset
    62
#ifndef GET_XBUTTON_WPARAM
3bcc26b74e42 Merged r3087:3089 from branches/SDL-1.2: WM_XBUTTON support.
Ryan C. Gordon <icculus@icculus.org>
parents: 1951
diff changeset
    63
#define GET_XBUTTON_WPARAM(w) (HIWORD(w))
3bcc26b74e42 Merged r3087:3089 from branches/SDL-1.2: WM_XBUTTON support.
Ryan C. Gordon <icculus@icculus.org>
parents: 1951
diff changeset
    64
#endif
2733
264037dd3c7a Fix for mingw compilation by Alam.
Edgar Simo <bobbens@gmail.com>
parents: 2726
diff changeset
    65
#ifndef WM_INPUT
264037dd3c7a Fix for mingw compilation by Alam.
Edgar Simo <bobbens@gmail.com>
parents: 2726
diff changeset
    66
#define WM_INPUT 0x00ff
264037dd3c7a Fix for mingw compilation by Alam.
Edgar Simo <bobbens@gmail.com>
parents: 2726
diff changeset
    67
#endif
4932
0d1bb1ce9d15 Removed carriage returns
Sam Lantinga <slouken@libsdl.org>
parents: 4919
diff changeset
    68
#ifndef WM_TOUCH
4868
d6adaafcfb10 Fixed compiling with Visual Studio 2008
Sam Lantinga <slouken@libsdl.org>
parents: 4862
diff changeset
    69
#define WM_TOUCH 0x0240
4932
0d1bb1ce9d15 Removed carriage returns
Sam Lantinga <slouken@libsdl.org>
parents: 4919
diff changeset
    70
#endif
7911
a9135f92ddba Horizontal wheel support in windows
Sam Lantinga <slouken@libsdl.org>
parents: 7816
diff changeset
    71
#ifndef WM_MOUSEHWHEEL
a9135f92ddba Horizontal wheel support in windows
Sam Lantinga <slouken@libsdl.org>
parents: 7816
diff changeset
    72
#define WM_MOUSEHWHEEL 0x020E
a9135f92ddba Horizontal wheel support in windows
Sam Lantinga <slouken@libsdl.org>
parents: 7816
diff changeset
    73
#endif
4919
716b2cbf4c9e First pass at Windows multi-touch gesture support
Sam Lantinga <slouken@libsdl.org>
parents: 4902
diff changeset
    74
7191
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
    75
static SDL_Scancode
6973
ae30ec97694a Fixed 64-bit compile warnings on Visual C++
Sam Lantinga <slouken@libsdl.org>
parents: 6951
diff changeset
    76
WindowsScanCodeToSDLScanCode( LPARAM lParam, WPARAM wParam )
6922
Jørgen P. Tjernø <jorgen@valvesoftware.com>
parents: 6885
diff changeset
    77
{
7191
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
    78
    SDL_Scancode code;
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
    79
    char bIsExtended;
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
    80
    int nScanCode = ( lParam >> 16 ) & 0xFF;
6922
Jørgen P. Tjernø <jorgen@valvesoftware.com>
parents: 6885
diff changeset
    81
7191
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
    82
    /* 0x45 here to work around both pause and numlock sharing the same scancode, so use the VK key to tell them apart */
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
    83
    if ( nScanCode == 0 || nScanCode == 0x45 )
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
    84
    {
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
    85
        switch( wParam )
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
    86
        {
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
    87
        case VK_CLEAR: return SDL_SCANCODE_CLEAR;
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
    88
        case VK_MODECHANGE: return SDL_SCANCODE_MODE;
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
    89
        case VK_SELECT: return SDL_SCANCODE_SELECT;
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
    90
        case VK_EXECUTE: return SDL_SCANCODE_EXECUTE;
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
    91
        case VK_HELP: return SDL_SCANCODE_HELP;
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
    92
        case VK_PAUSE: return SDL_SCANCODE_PAUSE;
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
    93
        case VK_NUMLOCK: return SDL_SCANCODE_NUMLOCKCLEAR;
6922
Jørgen P. Tjernø <jorgen@valvesoftware.com>
parents: 6885
diff changeset
    94
7191
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
    95
        case VK_F13: return SDL_SCANCODE_F13;
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
    96
        case VK_F14: return SDL_SCANCODE_F14;
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
    97
        case VK_F15: return SDL_SCANCODE_F15;
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
    98
        case VK_F16: return SDL_SCANCODE_F16;
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
    99
        case VK_F17: return SDL_SCANCODE_F17;
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   100
        case VK_F18: return SDL_SCANCODE_F18;
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   101
        case VK_F19: return SDL_SCANCODE_F19;
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   102
        case VK_F20: return SDL_SCANCODE_F20;
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   103
        case VK_F21: return SDL_SCANCODE_F21;
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   104
        case VK_F22: return SDL_SCANCODE_F22;
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   105
        case VK_F23: return SDL_SCANCODE_F23;
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   106
        case VK_F24: return SDL_SCANCODE_F24;
6922
Jørgen P. Tjernø <jorgen@valvesoftware.com>
parents: 6885
diff changeset
   107
7191
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   108
        case VK_OEM_NEC_EQUAL: return SDL_SCANCODE_KP_EQUALS;
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   109
        case VK_BROWSER_BACK: return SDL_SCANCODE_AC_BACK;
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   110
        case VK_BROWSER_FORWARD: return SDL_SCANCODE_AC_FORWARD;
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   111
        case VK_BROWSER_REFRESH: return SDL_SCANCODE_AC_REFRESH;
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   112
        case VK_BROWSER_STOP: return SDL_SCANCODE_AC_STOP;
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   113
        case VK_BROWSER_SEARCH: return SDL_SCANCODE_AC_SEARCH;
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   114
        case VK_BROWSER_FAVORITES: return SDL_SCANCODE_AC_BOOKMARKS;
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   115
        case VK_BROWSER_HOME: return SDL_SCANCODE_AC_HOME;
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   116
        case VK_VOLUME_MUTE: return SDL_SCANCODE_AUDIOMUTE;
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   117
        case VK_VOLUME_DOWN: return SDL_SCANCODE_VOLUMEDOWN;
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   118
        case VK_VOLUME_UP: return SDL_SCANCODE_VOLUMEUP;
6922
Jørgen P. Tjernø <jorgen@valvesoftware.com>
parents: 6885
diff changeset
   119
7191
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   120
        case VK_MEDIA_NEXT_TRACK: return SDL_SCANCODE_AUDIONEXT;
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   121
        case VK_MEDIA_PREV_TRACK: return SDL_SCANCODE_AUDIOPREV;
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   122
        case VK_MEDIA_STOP: return SDL_SCANCODE_AUDIOSTOP;
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   123
        case VK_MEDIA_PLAY_PAUSE: return SDL_SCANCODE_AUDIOPLAY;
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   124
        case VK_LAUNCH_MAIL: return SDL_SCANCODE_MAIL;
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   125
        case VK_LAUNCH_MEDIA_SELECT: return SDL_SCANCODE_MEDIASELECT;
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   126
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   127
        case VK_OEM_102: return SDL_SCANCODE_NONUSBACKSLASH;
6922
Jørgen P. Tjernø <jorgen@valvesoftware.com>
parents: 6885
diff changeset
   128
7191
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   129
        case VK_ATTN: return SDL_SCANCODE_SYSREQ;
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   130
        case VK_CRSEL: return SDL_SCANCODE_CRSEL;
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   131
        case VK_EXSEL: return SDL_SCANCODE_EXSEL;
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   132
        case VK_OEM_CLEAR: return SDL_SCANCODE_CLEAR;
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   133
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   134
        case VK_LAUNCH_APP1: return SDL_SCANCODE_APP1;
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   135
        case VK_LAUNCH_APP2: return SDL_SCANCODE_APP2;
6922
Jørgen P. Tjernø <jorgen@valvesoftware.com>
parents: 6885
diff changeset
   136
7191
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   137
        default: return SDL_SCANCODE_UNKNOWN;
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   138
        }
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   139
    }
6922
Jørgen P. Tjernø <jorgen@valvesoftware.com>
parents: 6885
diff changeset
   140
7191
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   141
    if ( nScanCode > 127 )
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   142
        return SDL_SCANCODE_UNKNOWN;
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   143
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   144
    code = windows_scancode_table[nScanCode];
6922
Jørgen P. Tjernø <jorgen@valvesoftware.com>
parents: 6885
diff changeset
   145
7191
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   146
    bIsExtended = ( lParam & ( 1 << 24 ) ) != 0;
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   147
    if ( !bIsExtended )
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   148
    {
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   149
        switch ( code )
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   150
        {
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   151
        case SDL_SCANCODE_HOME:
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   152
            return SDL_SCANCODE_KP_7;
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   153
        case SDL_SCANCODE_UP:
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   154
            return SDL_SCANCODE_KP_8;
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   155
        case SDL_SCANCODE_PAGEUP:
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   156
            return SDL_SCANCODE_KP_9;
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   157
        case SDL_SCANCODE_LEFT:
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   158
            return SDL_SCANCODE_KP_4;
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   159
        case SDL_SCANCODE_RIGHT:
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   160
            return SDL_SCANCODE_KP_6;
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   161
        case SDL_SCANCODE_END:
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   162
            return SDL_SCANCODE_KP_1;
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   163
        case SDL_SCANCODE_DOWN:
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   164
            return SDL_SCANCODE_KP_2;
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   165
        case SDL_SCANCODE_PAGEDOWN:
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   166
            return SDL_SCANCODE_KP_3;
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   167
        case SDL_SCANCODE_INSERT:
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   168
            return SDL_SCANCODE_KP_0;
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   169
        case SDL_SCANCODE_DELETE:
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   170
            return SDL_SCANCODE_KP_PERIOD;
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   171
        case SDL_SCANCODE_PRINTSCREEN:
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   172
            return SDL_SCANCODE_KP_MULTIPLY;
7029
377cc88f3dc8 Fixed compiler warning with Cygwin
Sam Lantinga <slouken@libsdl.org>
parents: 6973
diff changeset
   173
        default:
377cc88f3dc8 Fixed compiler warning with Cygwin
Sam Lantinga <slouken@libsdl.org>
parents: 6973
diff changeset
   174
            break;
7191
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   175
        }
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   176
    }
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   177
    else
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   178
    {
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   179
        switch ( code )
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   180
        {
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   181
        case SDL_SCANCODE_RETURN:
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   182
            return SDL_SCANCODE_KP_ENTER;
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   183
        case SDL_SCANCODE_LALT:
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   184
            return SDL_SCANCODE_RALT;
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   185
        case SDL_SCANCODE_LCTRL:
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   186
            return SDL_SCANCODE_RCTRL;
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   187
        case SDL_SCANCODE_SLASH:
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   188
            return SDL_SCANCODE_KP_DIVIDE;
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   189
        case SDL_SCANCODE_CAPSLOCK:
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   190
            return SDL_SCANCODE_KP_PLUS;
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   191
        default:
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   192
            break;
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   193
        }
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   194
    }
6922
Jørgen P. Tjernø <jorgen@valvesoftware.com>
parents: 6885
diff changeset
   195
7191
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   196
    return code;
6922
Jørgen P. Tjernø <jorgen@valvesoftware.com>
parents: 6885
diff changeset
   197
}
Jørgen P. Tjernø <jorgen@valvesoftware.com>
parents: 6885
diff changeset
   198
Jørgen P. Tjernø <jorgen@valvesoftware.com>
parents: 6885
diff changeset
   199
7191
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   200
void
6943
ce87e12970f5 sdl - use the wParam and rawinput data for mouse state rather than just the message type, fixes missing mouse up events when alt-tabing out of the window
Sam Lantinga <slouken@libsdl.org>
parents: 6931
diff changeset
   201
WIN_CheckWParamMouseButton( SDL_bool bwParamMousePressed, SDL_bool bSDLMousePressed, SDL_WindowData *data, Uint8 button )
ce87e12970f5 sdl - use the wParam and rawinput data for mouse state rather than just the message type, fixes missing mouse up events when alt-tabing out of the window
Sam Lantinga <slouken@libsdl.org>
parents: 6931
diff changeset
   202
{
7191
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   203
    if ( bwParamMousePressed && !bSDLMousePressed )
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   204
    {
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   205
        SDL_SendMouseButton(data->window, 0, SDL_PRESSED, button);
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   206
    }
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   207
    else if ( !bwParamMousePressed && bSDLMousePressed )
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   208
    {
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   209
        SDL_SendMouseButton(data->window, 0, SDL_RELEASED, button);
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   210
    }
6943
ce87e12970f5 sdl - use the wParam and rawinput data for mouse state rather than just the message type, fixes missing mouse up events when alt-tabing out of the window
Sam Lantinga <slouken@libsdl.org>
parents: 6931
diff changeset
   211
}
ce87e12970f5 sdl - use the wParam and rawinput data for mouse state rather than just the message type, fixes missing mouse up events when alt-tabing out of the window
Sam Lantinga <slouken@libsdl.org>
parents: 6931
diff changeset
   212
ce87e12970f5 sdl - use the wParam and rawinput data for mouse state rather than just the message type, fixes missing mouse up events when alt-tabing out of the window
Sam Lantinga <slouken@libsdl.org>
parents: 6931
diff changeset
   213
/*
ce87e12970f5 sdl - use the wParam and rawinput data for mouse state rather than just the message type, fixes missing mouse up events when alt-tabing out of the window
Sam Lantinga <slouken@libsdl.org>
parents: 6931
diff changeset
   214
* Some windows systems fail to send a WM_LBUTTONDOWN sometimes, but each mouse move contains the current button state also
ce87e12970f5 sdl - use the wParam and rawinput data for mouse state rather than just the message type, fixes missing mouse up events when alt-tabing out of the window
Sam Lantinga <slouken@libsdl.org>
parents: 6931
diff changeset
   215
*  so this funciton reconciles our view of the world with the current buttons reported by windows
ce87e12970f5 sdl - use the wParam and rawinput data for mouse state rather than just the message type, fixes missing mouse up events when alt-tabing out of the window
Sam Lantinga <slouken@libsdl.org>
parents: 6931
diff changeset
   216
*/
7191
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   217
void
6943
ce87e12970f5 sdl - use the wParam and rawinput data for mouse state rather than just the message type, fixes missing mouse up events when alt-tabing out of the window
Sam Lantinga <slouken@libsdl.org>
parents: 6931
diff changeset
   218
WIN_CheckWParamMouseButtons( WPARAM wParam, SDL_WindowData *data )
ce87e12970f5 sdl - use the wParam and rawinput data for mouse state rather than just the message type, fixes missing mouse up events when alt-tabing out of the window
Sam Lantinga <slouken@libsdl.org>
parents: 6931
diff changeset
   219
{
7191
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   220
    if ( wParam != data->mouse_button_flags )
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   221
    {
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   222
        Uint32 mouseFlags = SDL_GetMouseState( NULL, NULL );
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   223
        WIN_CheckWParamMouseButton(  (wParam & MK_LBUTTON), (mouseFlags & SDL_BUTTON_LMASK), data, SDL_BUTTON_LEFT );
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   224
        WIN_CheckWParamMouseButton(  (wParam & MK_MBUTTON), (mouseFlags & SDL_BUTTON_MMASK), data, SDL_BUTTON_MIDDLE );
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   225
        WIN_CheckWParamMouseButton(  (wParam & MK_RBUTTON), (mouseFlags & SDL_BUTTON_RMASK), data, SDL_BUTTON_RIGHT );
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   226
        WIN_CheckWParamMouseButton(  (wParam & MK_XBUTTON1), (mouseFlags & SDL_BUTTON_X1MASK), data, SDL_BUTTON_X1 );
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   227
        WIN_CheckWParamMouseButton(  (wParam & MK_XBUTTON2), (mouseFlags & SDL_BUTTON_X2MASK), data, SDL_BUTTON_X2 );
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   228
        data->mouse_button_flags = wParam;
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   229
    }
6943
ce87e12970f5 sdl - use the wParam and rawinput data for mouse state rather than just the message type, fixes missing mouse up events when alt-tabing out of the window
Sam Lantinga <slouken@libsdl.org>
parents: 6931
diff changeset
   230
}
ce87e12970f5 sdl - use the wParam and rawinput data for mouse state rather than just the message type, fixes missing mouse up events when alt-tabing out of the window
Sam Lantinga <slouken@libsdl.org>
parents: 6931
diff changeset
   231
ce87e12970f5 sdl - use the wParam and rawinput data for mouse state rather than just the message type, fixes missing mouse up events when alt-tabing out of the window
Sam Lantinga <slouken@libsdl.org>
parents: 6931
diff changeset
   232
7191
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   233
void
6943
ce87e12970f5 sdl - use the wParam and rawinput data for mouse state rather than just the message type, fixes missing mouse up events when alt-tabing out of the window
Sam Lantinga <slouken@libsdl.org>
parents: 6931
diff changeset
   234
WIN_CheckRawMouseButtons( ULONG rawButtons, SDL_WindowData *data )
ce87e12970f5 sdl - use the wParam and rawinput data for mouse state rather than just the message type, fixes missing mouse up events when alt-tabing out of the window
Sam Lantinga <slouken@libsdl.org>
parents: 6931
diff changeset
   235
{
7191
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   236
    if ( rawButtons != data->mouse_button_flags )
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   237
    {
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   238
        Uint32 mouseFlags = SDL_GetMouseState( NULL, NULL );
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   239
        if ( (rawButtons & RI_MOUSE_BUTTON_1_DOWN) )
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   240
            WIN_CheckWParamMouseButton(  (rawButtons & RI_MOUSE_BUTTON_1_DOWN), (mouseFlags & SDL_BUTTON_LMASK), data, SDL_BUTTON_LEFT );
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   241
        if ( (rawButtons & RI_MOUSE_BUTTON_1_UP) )
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   242
            WIN_CheckWParamMouseButton(  !(rawButtons & RI_MOUSE_BUTTON_1_UP), (mouseFlags & SDL_BUTTON_LMASK), data, SDL_BUTTON_LEFT );
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   243
        if ( (rawButtons & RI_MOUSE_BUTTON_2_DOWN) )
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   244
            WIN_CheckWParamMouseButton(  (rawButtons & RI_MOUSE_BUTTON_2_DOWN), (mouseFlags & SDL_BUTTON_RMASK), data, SDL_BUTTON_RIGHT );
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   245
        if ( (rawButtons & RI_MOUSE_BUTTON_2_UP) )
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   246
            WIN_CheckWParamMouseButton(  !(rawButtons & RI_MOUSE_BUTTON_2_UP), (mouseFlags & SDL_BUTTON_RMASK), data, SDL_BUTTON_RIGHT );
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   247
        if ( (rawButtons & RI_MOUSE_BUTTON_3_DOWN) )
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   248
            WIN_CheckWParamMouseButton(  (rawButtons & RI_MOUSE_BUTTON_3_DOWN), (mouseFlags & SDL_BUTTON_MMASK), data, SDL_BUTTON_MIDDLE );
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   249
        if ( (rawButtons & RI_MOUSE_BUTTON_3_UP) )
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   250
            WIN_CheckWParamMouseButton(  !(rawButtons & RI_MOUSE_BUTTON_3_UP), (mouseFlags & SDL_BUTTON_MMASK), data, SDL_BUTTON_MIDDLE );
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   251
        if ( (rawButtons & RI_MOUSE_BUTTON_4_DOWN) )
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   252
            WIN_CheckWParamMouseButton(  (rawButtons & RI_MOUSE_BUTTON_4_DOWN), (mouseFlags & SDL_BUTTON_X1MASK), data, SDL_BUTTON_X1 );
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   253
        if ( (rawButtons & RI_MOUSE_BUTTON_4_UP) )
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   254
            WIN_CheckWParamMouseButton(  !(rawButtons & RI_MOUSE_BUTTON_4_UP), (mouseFlags & SDL_BUTTON_X1MASK), data, SDL_BUTTON_X1 );
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   255
        if ( (rawButtons & RI_MOUSE_BUTTON_5_DOWN) )
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   256
            WIN_CheckWParamMouseButton(  (rawButtons & RI_MOUSE_BUTTON_5_DOWN), (mouseFlags & SDL_BUTTON_X2MASK), data, SDL_BUTTON_X2 );
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   257
        if ( (rawButtons & RI_MOUSE_BUTTON_5_UP) )
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   258
            WIN_CheckWParamMouseButton(  !(rawButtons & RI_MOUSE_BUTTON_5_UP), (mouseFlags & SDL_BUTTON_X2MASK), data, SDL_BUTTON_X2 );
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   259
        data->mouse_button_flags = rawButtons;
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   260
    }
6943
ce87e12970f5 sdl - use the wParam and rawinput data for mouse state rather than just the message type, fixes missing mouse up events when alt-tabing out of the window
Sam Lantinga <slouken@libsdl.org>
parents: 6931
diff changeset
   261
}
ce87e12970f5 sdl - use the wParam and rawinput data for mouse state rather than just the message type, fixes missing mouse up events when alt-tabing out of the window
Sam Lantinga <slouken@libsdl.org>
parents: 6931
diff changeset
   262
8212
d278747da408 Fixed lost mouse button when in relative mouse warp mode and you click on the title bar, entering a modal move/resize loop.
Sam Lantinga <slouken@libsdl.org>
parents: 8149
diff changeset
   263
void
d278747da408 Fixed lost mouse button when in relative mouse warp mode and you click on the title bar, entering a modal move/resize loop.
Sam Lantinga <slouken@libsdl.org>
parents: 8149
diff changeset
   264
WIN_CheckAsyncMouseRelease( SDL_WindowData *data )
d278747da408 Fixed lost mouse button when in relative mouse warp mode and you click on the title bar, entering a modal move/resize loop.
Sam Lantinga <slouken@libsdl.org>
parents: 8149
diff changeset
   265
{
d278747da408 Fixed lost mouse button when in relative mouse warp mode and you click on the title bar, entering a modal move/resize loop.
Sam Lantinga <slouken@libsdl.org>
parents: 8149
diff changeset
   266
    Uint32 mouseFlags;
d278747da408 Fixed lost mouse button when in relative mouse warp mode and you click on the title bar, entering a modal move/resize loop.
Sam Lantinga <slouken@libsdl.org>
parents: 8149
diff changeset
   267
    SHORT keyState;
d278747da408 Fixed lost mouse button when in relative mouse warp mode and you click on the title bar, entering a modal move/resize loop.
Sam Lantinga <slouken@libsdl.org>
parents: 8149
diff changeset
   268
d278747da408 Fixed lost mouse button when in relative mouse warp mode and you click on the title bar, entering a modal move/resize loop.
Sam Lantinga <slouken@libsdl.org>
parents: 8149
diff changeset
   269
    /* mouse buttons may have changed state here, we need to resync them,
d278747da408 Fixed lost mouse button when in relative mouse warp mode and you click on the title bar, entering a modal move/resize loop.
Sam Lantinga <slouken@libsdl.org>
parents: 8149
diff changeset
   270
       but we will get a WM_MOUSEMOVE right away which will fix things up if in non raw mode also
d278747da408 Fixed lost mouse button when in relative mouse warp mode and you click on the title bar, entering a modal move/resize loop.
Sam Lantinga <slouken@libsdl.org>
parents: 8149
diff changeset
   271
    */
d278747da408 Fixed lost mouse button when in relative mouse warp mode and you click on the title bar, entering a modal move/resize loop.
Sam Lantinga <slouken@libsdl.org>
parents: 8149
diff changeset
   272
    mouseFlags = SDL_GetMouseState( NULL, NULL );
d278747da408 Fixed lost mouse button when in relative mouse warp mode and you click on the title bar, entering a modal move/resize loop.
Sam Lantinga <slouken@libsdl.org>
parents: 8149
diff changeset
   273
d278747da408 Fixed lost mouse button when in relative mouse warp mode and you click on the title bar, entering a modal move/resize loop.
Sam Lantinga <slouken@libsdl.org>
parents: 8149
diff changeset
   274
    keyState = GetAsyncKeyState( VK_LBUTTON );
d278747da408 Fixed lost mouse button when in relative mouse warp mode and you click on the title bar, entering a modal move/resize loop.
Sam Lantinga <slouken@libsdl.org>
parents: 8149
diff changeset
   275
    WIN_CheckWParamMouseButton( ( keyState & 0x8000 ), ( mouseFlags & SDL_BUTTON_LMASK ), data, SDL_BUTTON_LEFT );
d278747da408 Fixed lost mouse button when in relative mouse warp mode and you click on the title bar, entering a modal move/resize loop.
Sam Lantinga <slouken@libsdl.org>
parents: 8149
diff changeset
   276
    keyState = GetAsyncKeyState( VK_RBUTTON );
d278747da408 Fixed lost mouse button when in relative mouse warp mode and you click on the title bar, entering a modal move/resize loop.
Sam Lantinga <slouken@libsdl.org>
parents: 8149
diff changeset
   277
    WIN_CheckWParamMouseButton( ( keyState & 0x8000 ), ( mouseFlags & SDL_BUTTON_RMASK ), data, SDL_BUTTON_RIGHT );
d278747da408 Fixed lost mouse button when in relative mouse warp mode and you click on the title bar, entering a modal move/resize loop.
Sam Lantinga <slouken@libsdl.org>
parents: 8149
diff changeset
   278
    keyState = GetAsyncKeyState( VK_MBUTTON );
d278747da408 Fixed lost mouse button when in relative mouse warp mode and you click on the title bar, entering a modal move/resize loop.
Sam Lantinga <slouken@libsdl.org>
parents: 8149
diff changeset
   279
    WIN_CheckWParamMouseButton( ( keyState & 0x8000 ), ( mouseFlags & SDL_BUTTON_MMASK ), data, SDL_BUTTON_MIDDLE );
d278747da408 Fixed lost mouse button when in relative mouse warp mode and you click on the title bar, entering a modal move/resize loop.
Sam Lantinga <slouken@libsdl.org>
parents: 8149
diff changeset
   280
    keyState = GetAsyncKeyState( VK_XBUTTON1 );
d278747da408 Fixed lost mouse button when in relative mouse warp mode and you click on the title bar, entering a modal move/resize loop.
Sam Lantinga <slouken@libsdl.org>
parents: 8149
diff changeset
   281
    WIN_CheckWParamMouseButton( ( keyState & 0x8000 ), ( mouseFlags & SDL_BUTTON_X1MASK ), data, SDL_BUTTON_X1 );
d278747da408 Fixed lost mouse button when in relative mouse warp mode and you click on the title bar, entering a modal move/resize loop.
Sam Lantinga <slouken@libsdl.org>
parents: 8149
diff changeset
   282
    keyState = GetAsyncKeyState( VK_XBUTTON2 );
d278747da408 Fixed lost mouse button when in relative mouse warp mode and you click on the title bar, entering a modal move/resize loop.
Sam Lantinga <slouken@libsdl.org>
parents: 8149
diff changeset
   283
    WIN_CheckWParamMouseButton( ( keyState & 0x8000 ), ( mouseFlags & SDL_BUTTON_X2MASK ), data, SDL_BUTTON_X2 );
d278747da408 Fixed lost mouse button when in relative mouse warp mode and you click on the title bar, entering a modal move/resize loop.
Sam Lantinga <slouken@libsdl.org>
parents: 8149
diff changeset
   284
    data->mouse_button_flags = 0;
d278747da408 Fixed lost mouse button when in relative mouse warp mode and you click on the title bar, entering a modal move/resize loop.
Sam Lantinga <slouken@libsdl.org>
parents: 8149
diff changeset
   285
}
d278747da408 Fixed lost mouse button when in relative mouse warp mode and you click on the title bar, entering a modal move/resize loop.
Sam Lantinga <slouken@libsdl.org>
parents: 8149
diff changeset
   286
7647
832a72fc1c94 Fixed windows build
Sam Lantinga <slouken@libsdl.org>
parents: 7646
diff changeset
   287
SDL_FORCE_INLINE BOOL
7645
cc775832d501 Fixed bug 1876 - SDL_TEXTINPUT only returns '?' (0x3F) in event.text.text with Khmer language input
Sam Lantinga <slouken@libsdl.org>
parents: 7631
diff changeset
   288
WIN_ConvertUTF32toUTF8(UINT32 codepoint, char * text)
cc775832d501 Fixed bug 1876 - SDL_TEXTINPUT only returns '?' (0x3F) in event.text.text with Khmer language input
Sam Lantinga <slouken@libsdl.org>
parents: 7631
diff changeset
   289
{
cc775832d501 Fixed bug 1876 - SDL_TEXTINPUT only returns '?' (0x3F) in event.text.text with Khmer language input
Sam Lantinga <slouken@libsdl.org>
parents: 7631
diff changeset
   290
    if (codepoint <= 0x7F) {
cc775832d501 Fixed bug 1876 - SDL_TEXTINPUT only returns '?' (0x3F) in event.text.text with Khmer language input
Sam Lantinga <slouken@libsdl.org>
parents: 7631
diff changeset
   291
        text[0] = (char) codepoint;
cc775832d501 Fixed bug 1876 - SDL_TEXTINPUT only returns '?' (0x3F) in event.text.text with Khmer language input
Sam Lantinga <slouken@libsdl.org>
parents: 7631
diff changeset
   292
        text[1] = '\0';
cc775832d501 Fixed bug 1876 - SDL_TEXTINPUT only returns '?' (0x3F) in event.text.text with Khmer language input
Sam Lantinga <slouken@libsdl.org>
parents: 7631
diff changeset
   293
    } else if (codepoint <= 0x7FF) {
cc775832d501 Fixed bug 1876 - SDL_TEXTINPUT only returns '?' (0x3F) in event.text.text with Khmer language input
Sam Lantinga <slouken@libsdl.org>
parents: 7631
diff changeset
   294
        text[0] = 0xC0 | (char) ((codepoint >> 6) & 0x1F);
cc775832d501 Fixed bug 1876 - SDL_TEXTINPUT only returns '?' (0x3F) in event.text.text with Khmer language input
Sam Lantinga <slouken@libsdl.org>
parents: 7631
diff changeset
   295
        text[1] = 0x80 | (char) (codepoint & 0x3F);
cc775832d501 Fixed bug 1876 - SDL_TEXTINPUT only returns '?' (0x3F) in event.text.text with Khmer language input
Sam Lantinga <slouken@libsdl.org>
parents: 7631
diff changeset
   296
        text[2] = '\0';
cc775832d501 Fixed bug 1876 - SDL_TEXTINPUT only returns '?' (0x3F) in event.text.text with Khmer language input
Sam Lantinga <slouken@libsdl.org>
parents: 7631
diff changeset
   297
    } else if (codepoint <= 0xFFFF) {
cc775832d501 Fixed bug 1876 - SDL_TEXTINPUT only returns '?' (0x3F) in event.text.text with Khmer language input
Sam Lantinga <slouken@libsdl.org>
parents: 7631
diff changeset
   298
        text[0] = 0xE0 | (char) ((codepoint >> 12) & 0x0F);
cc775832d501 Fixed bug 1876 - SDL_TEXTINPUT only returns '?' (0x3F) in event.text.text with Khmer language input
Sam Lantinga <slouken@libsdl.org>
parents: 7631
diff changeset
   299
        text[1] = 0x80 | (char) ((codepoint >> 6) & 0x3F);
cc775832d501 Fixed bug 1876 - SDL_TEXTINPUT only returns '?' (0x3F) in event.text.text with Khmer language input
Sam Lantinga <slouken@libsdl.org>
parents: 7631
diff changeset
   300
        text[2] = 0x80 | (char) (codepoint & 0x3F);
cc775832d501 Fixed bug 1876 - SDL_TEXTINPUT only returns '?' (0x3F) in event.text.text with Khmer language input
Sam Lantinga <slouken@libsdl.org>
parents: 7631
diff changeset
   301
        text[3] = '\0';
cc775832d501 Fixed bug 1876 - SDL_TEXTINPUT only returns '?' (0x3F) in event.text.text with Khmer language input
Sam Lantinga <slouken@libsdl.org>
parents: 7631
diff changeset
   302
    } else if (codepoint <= 0x10FFFF) {
cc775832d501 Fixed bug 1876 - SDL_TEXTINPUT only returns '?' (0x3F) in event.text.text with Khmer language input
Sam Lantinga <slouken@libsdl.org>
parents: 7631
diff changeset
   303
        text[0] = 0xF0 | (char) ((codepoint >> 18) & 0x0F);
cc775832d501 Fixed bug 1876 - SDL_TEXTINPUT only returns '?' (0x3F) in event.text.text with Khmer language input
Sam Lantinga <slouken@libsdl.org>
parents: 7631
diff changeset
   304
        text[1] = 0x80 | (char) ((codepoint >> 12) & 0x3F);
cc775832d501 Fixed bug 1876 - SDL_TEXTINPUT only returns '?' (0x3F) in event.text.text with Khmer language input
Sam Lantinga <slouken@libsdl.org>
parents: 7631
diff changeset
   305
        text[2] = 0x80 | (char) ((codepoint >> 6) & 0x3F);
cc775832d501 Fixed bug 1876 - SDL_TEXTINPUT only returns '?' (0x3F) in event.text.text with Khmer language input
Sam Lantinga <slouken@libsdl.org>
parents: 7631
diff changeset
   306
        text[3] = 0x80 | (char) (codepoint & 0x3F);
cc775832d501 Fixed bug 1876 - SDL_TEXTINPUT only returns '?' (0x3F) in event.text.text with Khmer language input
Sam Lantinga <slouken@libsdl.org>
parents: 7631
diff changeset
   307
        text[4] = '\0';
cc775832d501 Fixed bug 1876 - SDL_TEXTINPUT only returns '?' (0x3F) in event.text.text with Khmer language input
Sam Lantinga <slouken@libsdl.org>
parents: 7631
diff changeset
   308
    } else {
cc775832d501 Fixed bug 1876 - SDL_TEXTINPUT only returns '?' (0x3F) in event.text.text with Khmer language input
Sam Lantinga <slouken@libsdl.org>
parents: 7631
diff changeset
   309
        return SDL_FALSE;
cc775832d501 Fixed bug 1876 - SDL_TEXTINPUT only returns '?' (0x3F) in event.text.text with Khmer language input
Sam Lantinga <slouken@libsdl.org>
parents: 7631
diff changeset
   310
    }
cc775832d501 Fixed bug 1876 - SDL_TEXTINPUT only returns '?' (0x3F) in event.text.text with Khmer language input
Sam Lantinga <slouken@libsdl.org>
parents: 7631
diff changeset
   311
    return SDL_TRUE;
cc775832d501 Fixed bug 1876 - SDL_TEXTINPUT only returns '?' (0x3F) in event.text.text with Khmer language input
Sam Lantinga <slouken@libsdl.org>
parents: 7631
diff changeset
   312
}
cc775832d501 Fixed bug 1876 - SDL_TEXTINPUT only returns '?' (0x3F) in event.text.text with Khmer language input
Sam Lantinga <slouken@libsdl.org>
parents: 7631
diff changeset
   313
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   314
LRESULT CALLBACK
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   315
WIN_WindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   316
{
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   317
    SDL_WindowData *data;
3566
07c8339c95c6 Fixed bug #905
Sam Lantinga <slouken@libsdl.org>
parents: 3565
diff changeset
   318
    LRESULT returnCode = -1;
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   319
1951
7177581dc9fa Initial work on X11 window code in.
Sam Lantinga <slouken@libsdl.org>
parents: 1913
diff changeset
   320
    /* Send a SDL_SYSWMEVENT if the application wants them */
4429
faa9fc8e7f67 General improvements for user custom event registration
Sam Lantinga <slouken@libsdl.org>
parents: 3700
diff changeset
   321
    if (SDL_GetEventState(SDL_SYSWMEVENT) == SDL_ENABLE) {
1951
7177581dc9fa Initial work on X11 window code in.
Sam Lantinga <slouken@libsdl.org>
parents: 1913
diff changeset
   322
        SDL_SysWMmsg wmmsg;
7177581dc9fa Initial work on X11 window code in.
Sam Lantinga <slouken@libsdl.org>
parents: 1913
diff changeset
   323
7177581dc9fa Initial work on X11 window code in.
Sam Lantinga <slouken@libsdl.org>
parents: 1913
diff changeset
   324
        SDL_VERSION(&wmmsg.version);
4900
69d9db65f248 Merged the Windows custom window system hooks into the union used by X11.
Sam Lantinga <slouken@libsdl.org>
parents: 4868
diff changeset
   325
        wmmsg.subsystem = SDL_SYSWM_WINDOWS;
5056
8b7988f42fcb Added the ability to get the UIKit window through the SDL API.
Sam Lantinga <slouken@libsdl.org>
parents: 5049
diff changeset
   326
        wmmsg.msg.win.hwnd = hwnd;
8b7988f42fcb Added the ability to get the UIKit window through the SDL API.
Sam Lantinga <slouken@libsdl.org>
parents: 5049
diff changeset
   327
        wmmsg.msg.win.msg = msg;
8b7988f42fcb Added the ability to get the UIKit window through the SDL API.
Sam Lantinga <slouken@libsdl.org>
parents: 5049
diff changeset
   328
        wmmsg.msg.win.wParam = wParam;
8b7988f42fcb Added the ability to get the UIKit window through the SDL API.
Sam Lantinga <slouken@libsdl.org>
parents: 5049
diff changeset
   329
        wmmsg.msg.win.lParam = lParam;
1951
7177581dc9fa Initial work on X11 window code in.
Sam Lantinga <slouken@libsdl.org>
parents: 1913
diff changeset
   330
        SDL_SendSysWMEvent(&wmmsg);
7177581dc9fa Initial work on X11 window code in.
Sam Lantinga <slouken@libsdl.org>
parents: 1913
diff changeset
   331
    }
7177581dc9fa Initial work on X11 window code in.
Sam Lantinga <slouken@libsdl.org>
parents: 1913
diff changeset
   332
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   333
    /* Get the window data for the window */
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   334
    data = (SDL_WindowData *) GetProp(hwnd, TEXT("SDL_WindowData"));
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   335
    if (!data) {
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   336
        return CallWindowProc(DefWindowProc, hwnd, msg, wParam, lParam);
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   337
    }
4650
7ad7a473b086 More fixes for windows. Disabled tablet code.
jimtla
parents: 4429
diff changeset
   338
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   339
#ifdef WMMSG_DEBUG
7941
7c249ca44069 Fixed bug 2067 - Window size limit calculation issue when exiting fullscreen on Windows
Sam Lantinga <slouken@libsdl.org>
parents: 7912
diff changeset
   340
    {
7c249ca44069 Fixed bug 2067 - Window size limit calculation issue when exiting fullscreen on Windows
Sam Lantinga <slouken@libsdl.org>
parents: 7912
diff changeset
   341
        char message[1024];
7c249ca44069 Fixed bug 2067 - Window size limit calculation issue when exiting fullscreen on Windows
Sam Lantinga <slouken@libsdl.org>
parents: 7912
diff changeset
   342
        if (msg > MAX_WMMSG) {
7c249ca44069 Fixed bug 2067 - Window size limit calculation issue when exiting fullscreen on Windows
Sam Lantinga <slouken@libsdl.org>
parents: 7912
diff changeset
   343
            SDL_snprintf(message, sizeof(message), "Received windows message: %p UNKNOWN (%d) -- 0x%X, 0x%X\n", hwnd, msg, wParam, lParam);
7c249ca44069 Fixed bug 2067 - Window size limit calculation issue when exiting fullscreen on Windows
Sam Lantinga <slouken@libsdl.org>
parents: 7912
diff changeset
   344
        } else {
7c249ca44069 Fixed bug 2067 - Window size limit calculation issue when exiting fullscreen on Windows
Sam Lantinga <slouken@libsdl.org>
parents: 7912
diff changeset
   345
            SDL_snprintf(message, sizeof(message), "Received windows message: %p %s -- 0x%X, 0x%X\n", hwnd, wmtab[msg], wParam, lParam);
7c249ca44069 Fixed bug 2067 - Window size limit calculation issue when exiting fullscreen on Windows
Sam Lantinga <slouken@libsdl.org>
parents: 7912
diff changeset
   346
        }
7c249ca44069 Fixed bug 2067 - Window size limit calculation issue when exiting fullscreen on Windows
Sam Lantinga <slouken@libsdl.org>
parents: 7912
diff changeset
   347
        OutputDebugStringA(message);
7c249ca44069 Fixed bug 2067 - Window size limit calculation issue when exiting fullscreen on Windows
Sam Lantinga <slouken@libsdl.org>
parents: 7912
diff changeset
   348
    }
7816
f16e342b167a Fixed the windows message debug output so it works without HAVE_LIBC
Sam Lantinga <slouken@libsdl.org>
parents: 7813
diff changeset
   349
#endif /* WMMSG_DEBUG */
2710
44e49d3fa6cf Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents: 2324
diff changeset
   350
4752
dc7bdcf06367 Initial IMM implementation.
dewyatt
parents: 4746
diff changeset
   351
    if (IME_HandleMessage(hwnd, msg, wParam, &lParam, data->videodata))
dc7bdcf06367 Initial IMM implementation.
dewyatt
parents: 4746
diff changeset
   352
        return 0;
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   353
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   354
    switch (msg) {
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   355
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   356
    case WM_SHOWWINDOW:
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   357
        {
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   358
            if (wParam) {
3685
64ce267332c6 Switched from SDL_WindowID and SDL_TextureID to SDL_Window* and SDL_Texture* for code simplicity and improved performance.
Sam Lantinga <slouken@libsdl.org>
parents: 3566
diff changeset
   359
                SDL_SendWindowEvent(data->window, SDL_WINDOWEVENT_SHOWN, 0, 0);
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   360
            } else {
3685
64ce267332c6 Switched from SDL_WindowID and SDL_TextureID to SDL_Window* and SDL_Texture* for code simplicity and improved performance.
Sam Lantinga <slouken@libsdl.org>
parents: 3566
diff changeset
   361
                SDL_SendWindowEvent(data->window, SDL_WINDOWEVENT_HIDDEN, 0, 0);
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   362
            }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   363
        }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   364
        break;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   365
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   366
    case WM_ACTIVATE:
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   367
        {
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   368
            BOOL minimized;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   369
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   370
            minimized = HIWORD(wParam);
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   371
            if (!minimized && (LOWORD(wParam) != WA_INACTIVE)) {
3685
64ce267332c6 Switched from SDL_WindowID and SDL_TextureID to SDL_Window* and SDL_Texture* for code simplicity and improved performance.
Sam Lantinga <slouken@libsdl.org>
parents: 3566
diff changeset
   372
                SDL_SendWindowEvent(data->window, SDL_WINDOWEVENT_SHOWN, 0, 0);
4465
3e69e077cb95 Removed multi-mouse / multi-keyboard support in anticipation of a real multi-mouse and multi-touch API.
Sam Lantinga <slouken@libsdl.org>
parents: 4429
diff changeset
   373
                if (SDL_GetKeyboardFocus() != data->window) {
3e69e077cb95 Removed multi-mouse / multi-keyboard support in anticipation of a real multi-mouse and multi-touch API.
Sam Lantinga <slouken@libsdl.org>
parents: 4429
diff changeset
   374
                    SDL_SetKeyboardFocus(data->window);
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   375
                }
8036
d485906bd74a Fixed bug 2260 - SDL_SetCursorGrab() is buggy on Windows
Sam Lantinga <slouken@libsdl.org>
parents: 8035
diff changeset
   376
                WIN_UpdateClipCursor(data->window);
8212
d278747da408 Fixed lost mouse button when in relative mouse warp mode and you click on the title bar, entering a modal move/resize loop.
Sam Lantinga <slouken@libsdl.org>
parents: 8149
diff changeset
   377
                WIN_CheckAsyncMouseRelease(data);
6350
19545983ac76 Patrick Baggett implemented relative mouse mode on Win32
Sam Lantinga <slouken@libsdl.org>
parents: 6138
diff changeset
   378
4504
9faebccfefb3 Amazingly the Windows code is almost identical to the Mac OS X code. :)
Sam Lantinga <slouken@libsdl.org>
parents: 4500
diff changeset
   379
                /*
9faebccfefb3 Amazingly the Windows code is almost identical to the Mac OS X code. :)
Sam Lantinga <slouken@libsdl.org>
parents: 4500
diff changeset
   380
                 * FIXME: Update keyboard state
9faebccfefb3 Amazingly the Windows code is almost identical to the Mac OS X code. :)
Sam Lantinga <slouken@libsdl.org>
parents: 4500
diff changeset
   381
                 */
9faebccfefb3 Amazingly the Windows code is almost identical to the Mac OS X code. :)
Sam Lantinga <slouken@libsdl.org>
parents: 4500
diff changeset
   382
                WIN_CheckClipboardUpdate(data->videodata);
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   383
            } else {
4465
3e69e077cb95 Removed multi-mouse / multi-keyboard support in anticipation of a real multi-mouse and multi-touch API.
Sam Lantinga <slouken@libsdl.org>
parents: 4429
diff changeset
   384
                if (SDL_GetKeyboardFocus() == data->window) {
3e69e077cb95 Removed multi-mouse / multi-keyboard support in anticipation of a real multi-mouse and multi-touch API.
Sam Lantinga <slouken@libsdl.org>
parents: 4429
diff changeset
   385
                    SDL_SetKeyboardFocus(NULL);
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   386
                }
8050
be19dbc5ff4e Added code missed in the resolve
Sam Lantinga <slouken@libsdl.org>
parents: 8036
diff changeset
   387
be19dbc5ff4e Added code missed in the resolve
Sam Lantinga <slouken@libsdl.org>
parents: 8036
diff changeset
   388
                ClipCursor(NULL);
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   389
            }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   390
        }
3566
07c8339c95c6 Fixed bug #905
Sam Lantinga <slouken@libsdl.org>
parents: 3565
diff changeset
   391
        returnCode = 0;
07c8339c95c6 Fixed bug #905
Sam Lantinga <slouken@libsdl.org>
parents: 3565
diff changeset
   392
        break;
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   393
7191
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   394
    case WM_MOUSEMOVE:
8071
1ac2db4abe11 Added a relative mouse mode that uses mouse warping instead of raw input.
Sam Lantinga <slouken@libsdl.org>
parents: 8050
diff changeset
   395
        {
1ac2db4abe11 Added a relative mouse mode that uses mouse warping instead of raw input.
Sam Lantinga <slouken@libsdl.org>
parents: 8050
diff changeset
   396
            SDL_Mouse *mouse = SDL_GetMouse();
1ac2db4abe11 Added a relative mouse mode that uses mouse warping instead of raw input.
Sam Lantinga <slouken@libsdl.org>
parents: 8050
diff changeset
   397
            if (!mouse->relative_mode || mouse->relative_mode_warp) {
1ac2db4abe11 Added a relative mouse mode that uses mouse warping instead of raw input.
Sam Lantinga <slouken@libsdl.org>
parents: 8050
diff changeset
   398
                SDL_SendMouseMotion(data->window, 0, 0, GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam));
1ac2db4abe11 Added a relative mouse mode that uses mouse warping instead of raw input.
Sam Lantinga <slouken@libsdl.org>
parents: 8050
diff changeset
   399
            }
1ac2db4abe11 Added a relative mouse mode that uses mouse warping instead of raw input.
Sam Lantinga <slouken@libsdl.org>
parents: 8050
diff changeset
   400
        }
7191
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   401
        /* don't break here, fall through to check the wParam like the button presses */
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   402
    case WM_LBUTTONUP:
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   403
    case WM_RBUTTONUP:
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   404
    case WM_MBUTTONUP:
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   405
    case WM_XBUTTONUP:
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   406
    case WM_LBUTTONDOWN:
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   407
    case WM_RBUTTONDOWN:
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   408
    case WM_MBUTTONDOWN:
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   409
    case WM_XBUTTONDOWN:
8071
1ac2db4abe11 Added a relative mouse mode that uses mouse warping instead of raw input.
Sam Lantinga <slouken@libsdl.org>
parents: 8050
diff changeset
   410
        {
1ac2db4abe11 Added a relative mouse mode that uses mouse warping instead of raw input.
Sam Lantinga <slouken@libsdl.org>
parents: 8050
diff changeset
   411
            SDL_Mouse *mouse = SDL_GetMouse();
1ac2db4abe11 Added a relative mouse mode that uses mouse warping instead of raw input.
Sam Lantinga <slouken@libsdl.org>
parents: 8050
diff changeset
   412
            if (!mouse->relative_mode || mouse->relative_mode_warp) {
1ac2db4abe11 Added a relative mouse mode that uses mouse warping instead of raw input.
Sam Lantinga <slouken@libsdl.org>
parents: 8050
diff changeset
   413
                WIN_CheckWParamMouseButtons(wParam, data);
1ac2db4abe11 Added a relative mouse mode that uses mouse warping instead of raw input.
Sam Lantinga <slouken@libsdl.org>
parents: 8050
diff changeset
   414
            }
1ac2db4abe11 Added a relative mouse mode that uses mouse warping instead of raw input.
Sam Lantinga <slouken@libsdl.org>
parents: 8050
diff changeset
   415
        }
7191
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   416
        break;
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3102
diff changeset
   417
7191
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   418
    case WM_INPUT:
8071
1ac2db4abe11 Added a relative mouse mode that uses mouse warping instead of raw input.
Sam Lantinga <slouken@libsdl.org>
parents: 8050
diff changeset
   419
        {
1ac2db4abe11 Added a relative mouse mode that uses mouse warping instead of raw input.
Sam Lantinga <slouken@libsdl.org>
parents: 8050
diff changeset
   420
            SDL_Mouse *mouse = SDL_GetMouse();
1ac2db4abe11 Added a relative mouse mode that uses mouse warping instead of raw input.
Sam Lantinga <slouken@libsdl.org>
parents: 8050
diff changeset
   421
            HRAWINPUT hRawInput = (HRAWINPUT)lParam;
1ac2db4abe11 Added a relative mouse mode that uses mouse warping instead of raw input.
Sam Lantinga <slouken@libsdl.org>
parents: 8050
diff changeset
   422
            RAWINPUT inp;
1ac2db4abe11 Added a relative mouse mode that uses mouse warping instead of raw input.
Sam Lantinga <slouken@libsdl.org>
parents: 8050
diff changeset
   423
            UINT size = sizeof(inp);
6782
582d35419e8a Improvements from Alfred:
Sam Lantinga <slouken@libsdl.org>
parents: 6682
diff changeset
   424
8084
96b1986b1e61 Make sure our window has mouse focus before processing raw input events.
Sam Lantinga <slouken@libsdl.org>
parents: 8072
diff changeset
   425
            if (!mouse->relative_mode || mouse->relative_mode_warp || mouse->focus != data->window) {
8071
1ac2db4abe11 Added a relative mouse mode that uses mouse warping instead of raw input.
Sam Lantinga <slouken@libsdl.org>
parents: 8050
diff changeset
   426
                break;
1ac2db4abe11 Added a relative mouse mode that uses mouse warping instead of raw input.
Sam Lantinga <slouken@libsdl.org>
parents: 8050
diff changeset
   427
            }
6782
582d35419e8a Improvements from Alfred:
Sam Lantinga <slouken@libsdl.org>
parents: 6682
diff changeset
   428
8071
1ac2db4abe11 Added a relative mouse mode that uses mouse warping instead of raw input.
Sam Lantinga <slouken@libsdl.org>
parents: 8050
diff changeset
   429
            GetRawInputData(hRawInput, RID_INPUT, &inp, &size, sizeof(RAWINPUTHEADER));
6350
19545983ac76 Patrick Baggett implemented relative mouse mode on Win32
Sam Lantinga <slouken@libsdl.org>
parents: 6138
diff changeset
   430
8071
1ac2db4abe11 Added a relative mouse mode that uses mouse warping instead of raw input.
Sam Lantinga <slouken@libsdl.org>
parents: 8050
diff changeset
   431
            /* Mouse data */
1ac2db4abe11 Added a relative mouse mode that uses mouse warping instead of raw input.
Sam Lantinga <slouken@libsdl.org>
parents: 8050
diff changeset
   432
            if (inp.header.dwType == RIM_TYPEMOUSE) {
1ac2db4abe11 Added a relative mouse mode that uses mouse warping instead of raw input.
Sam Lantinga <slouken@libsdl.org>
parents: 8050
diff changeset
   433
                RAWMOUSE* mouse = &inp.data.mouse;
6350
19545983ac76 Patrick Baggett implemented relative mouse mode on Win32
Sam Lantinga <slouken@libsdl.org>
parents: 6138
diff changeset
   434
8071
1ac2db4abe11 Added a relative mouse mode that uses mouse warping instead of raw input.
Sam Lantinga <slouken@libsdl.org>
parents: 8050
diff changeset
   435
                if ((mouse->usFlags & 0x01) == MOUSE_MOVE_RELATIVE) {
1ac2db4abe11 Added a relative mouse mode that uses mouse warping instead of raw input.
Sam Lantinga <slouken@libsdl.org>
parents: 8050
diff changeset
   436
                    SDL_SendMouseMotion(data->window, 0, 1, (int)mouse->lLastX, (int)mouse->lLastY);
1ac2db4abe11 Added a relative mouse mode that uses mouse warping instead of raw input.
Sam Lantinga <slouken@libsdl.org>
parents: 8050
diff changeset
   437
                } else {
1ac2db4abe11 Added a relative mouse mode that uses mouse warping instead of raw input.
Sam Lantinga <slouken@libsdl.org>
parents: 8050
diff changeset
   438
                    /* synthesize relative moves from the abs position */
1ac2db4abe11 Added a relative mouse mode that uses mouse warping instead of raw input.
Sam Lantinga <slouken@libsdl.org>
parents: 8050
diff changeset
   439
                    static SDL_Point initialMousePoint;
1ac2db4abe11 Added a relative mouse mode that uses mouse warping instead of raw input.
Sam Lantinga <slouken@libsdl.org>
parents: 8050
diff changeset
   440
                    if (initialMousePoint.x == 0 && initialMousePoint.y == 0) {
1ac2db4abe11 Added a relative mouse mode that uses mouse warping instead of raw input.
Sam Lantinga <slouken@libsdl.org>
parents: 8050
diff changeset
   441
                        initialMousePoint.x = mouse->lLastX;
1ac2db4abe11 Added a relative mouse mode that uses mouse warping instead of raw input.
Sam Lantinga <slouken@libsdl.org>
parents: 8050
diff changeset
   442
                        initialMousePoint.y = mouse->lLastY;
1ac2db4abe11 Added a relative mouse mode that uses mouse warping instead of raw input.
Sam Lantinga <slouken@libsdl.org>
parents: 8050
diff changeset
   443
                    }
1ac2db4abe11 Added a relative mouse mode that uses mouse warping instead of raw input.
Sam Lantinga <slouken@libsdl.org>
parents: 8050
diff changeset
   444
1ac2db4abe11 Added a relative mouse mode that uses mouse warping instead of raw input.
Sam Lantinga <slouken@libsdl.org>
parents: 8050
diff changeset
   445
                    SDL_SendMouseMotion(data->window, 0, 1, (int)(mouse->lLastX-initialMousePoint.x), (int)(mouse->lLastY-initialMousePoint.y) );
1ac2db4abe11 Added a relative mouse mode that uses mouse warping instead of raw input.
Sam Lantinga <slouken@libsdl.org>
parents: 8050
diff changeset
   446
7191
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   447
                    initialMousePoint.x = mouse->lLastX;
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   448
                    initialMousePoint.y = mouse->lLastY;
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   449
                }
8071
1ac2db4abe11 Added a relative mouse mode that uses mouse warping instead of raw input.
Sam Lantinga <slouken@libsdl.org>
parents: 8050
diff changeset
   450
                WIN_CheckRawMouseButtons( mouse->usButtonFlags, data );
7191
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   451
            }
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   452
        }
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   453
        break;
6350
19545983ac76 Patrick Baggett implemented relative mouse mode on Win32
Sam Lantinga <slouken@libsdl.org>
parents: 6138
diff changeset
   454
5049
28003ba91f57 John Wilson 2010-08-17 17:09:16 PDT
Sam Lantinga <slouken@libsdl.org>
parents: 4932
diff changeset
   455
    case WM_MOUSEWHEEL:
28003ba91f57 John Wilson 2010-08-17 17:09:16 PDT
Sam Lantinga <slouken@libsdl.org>
parents: 4932
diff changeset
   456
        {
7813
d8fb783475d5 Fixed accumulating mouse wheel motion for the Microsoft Wireless Mouse 5000
Sam Lantinga <slouken@libsdl.org>
parents: 7678
diff changeset
   457
            static short s_AccumulatedMotion;
5049
28003ba91f57 John Wilson 2010-08-17 17:09:16 PDT
Sam Lantinga <slouken@libsdl.org>
parents: 4932
diff changeset
   458
7813
d8fb783475d5 Fixed accumulating mouse wheel motion for the Microsoft Wireless Mouse 5000
Sam Lantinga <slouken@libsdl.org>
parents: 7678
diff changeset
   459
            s_AccumulatedMotion += GET_WHEEL_DELTA_WPARAM(wParam);
d8fb783475d5 Fixed accumulating mouse wheel motion for the Microsoft Wireless Mouse 5000
Sam Lantinga <slouken@libsdl.org>
parents: 7678
diff changeset
   460
            if (s_AccumulatedMotion > 0) {
d8fb783475d5 Fixed accumulating mouse wheel motion for the Microsoft Wireless Mouse 5000
Sam Lantinga <slouken@libsdl.org>
parents: 7678
diff changeset
   461
                while (s_AccumulatedMotion >= WHEEL_DELTA) {
d8fb783475d5 Fixed accumulating mouse wheel motion for the Microsoft Wireless Mouse 5000
Sam Lantinga <slouken@libsdl.org>
parents: 7678
diff changeset
   462
                    SDL_SendMouseWheel(data->window, 0, 0, 1);
d8fb783475d5 Fixed accumulating mouse wheel motion for the Microsoft Wireless Mouse 5000
Sam Lantinga <slouken@libsdl.org>
parents: 7678
diff changeset
   463
                    s_AccumulatedMotion -= WHEEL_DELTA;
d8fb783475d5 Fixed accumulating mouse wheel motion for the Microsoft Wireless Mouse 5000
Sam Lantinga <slouken@libsdl.org>
parents: 7678
diff changeset
   464
                }
d8fb783475d5 Fixed accumulating mouse wheel motion for the Microsoft Wireless Mouse 5000
Sam Lantinga <slouken@libsdl.org>
parents: 7678
diff changeset
   465
            } else {
d8fb783475d5 Fixed accumulating mouse wheel motion for the Microsoft Wireless Mouse 5000
Sam Lantinga <slouken@libsdl.org>
parents: 7678
diff changeset
   466
                while (s_AccumulatedMotion <= -WHEEL_DELTA) {
d8fb783475d5 Fixed accumulating mouse wheel motion for the Microsoft Wireless Mouse 5000
Sam Lantinga <slouken@libsdl.org>
parents: 7678
diff changeset
   467
                    SDL_SendMouseWheel(data->window, 0, 0, -1);
d8fb783475d5 Fixed accumulating mouse wheel motion for the Microsoft Wireless Mouse 5000
Sam Lantinga <slouken@libsdl.org>
parents: 7678
diff changeset
   468
                    s_AccumulatedMotion += WHEEL_DELTA;
d8fb783475d5 Fixed accumulating mouse wheel motion for the Microsoft Wireless Mouse 5000
Sam Lantinga <slouken@libsdl.org>
parents: 7678
diff changeset
   469
                }
d8fb783475d5 Fixed accumulating mouse wheel motion for the Microsoft Wireless Mouse 5000
Sam Lantinga <slouken@libsdl.org>
parents: 7678
diff changeset
   470
            }
5049
28003ba91f57 John Wilson 2010-08-17 17:09:16 PDT
Sam Lantinga <slouken@libsdl.org>
parents: 4932
diff changeset
   471
        }
8071
1ac2db4abe11 Added a relative mouse mode that uses mouse warping instead of raw input.
Sam Lantinga <slouken@libsdl.org>
parents: 8050
diff changeset
   472
        break;
5049
28003ba91f57 John Wilson 2010-08-17 17:09:16 PDT
Sam Lantinga <slouken@libsdl.org>
parents: 4932
diff changeset
   473
7911
a9135f92ddba Horizontal wheel support in windows
Sam Lantinga <slouken@libsdl.org>
parents: 7816
diff changeset
   474
    case WM_MOUSEHWHEEL:
a9135f92ddba Horizontal wheel support in windows
Sam Lantinga <slouken@libsdl.org>
parents: 7816
diff changeset
   475
        {
a9135f92ddba Horizontal wheel support in windows
Sam Lantinga <slouken@libsdl.org>
parents: 7816
diff changeset
   476
            static short s_AccumulatedMotion;
a9135f92ddba Horizontal wheel support in windows
Sam Lantinga <slouken@libsdl.org>
parents: 7816
diff changeset
   477
a9135f92ddba Horizontal wheel support in windows
Sam Lantinga <slouken@libsdl.org>
parents: 7816
diff changeset
   478
            s_AccumulatedMotion += GET_WHEEL_DELTA_WPARAM(wParam);
a9135f92ddba Horizontal wheel support in windows
Sam Lantinga <slouken@libsdl.org>
parents: 7816
diff changeset
   479
            if (s_AccumulatedMotion > 0) {
a9135f92ddba Horizontal wheel support in windows
Sam Lantinga <slouken@libsdl.org>
parents: 7816
diff changeset
   480
                while (s_AccumulatedMotion >= WHEEL_DELTA) {
7912
10eff60470b3 Fixed Windows compile error
Sam Lantinga <slouken@libsdl.org>
parents: 7911
diff changeset
   481
                    SDL_SendMouseWheel(data->window, 0, 1, 0);
7911
a9135f92ddba Horizontal wheel support in windows
Sam Lantinga <slouken@libsdl.org>
parents: 7816
diff changeset
   482
                    s_AccumulatedMotion -= WHEEL_DELTA;
a9135f92ddba Horizontal wheel support in windows
Sam Lantinga <slouken@libsdl.org>
parents: 7816
diff changeset
   483
                }
a9135f92ddba Horizontal wheel support in windows
Sam Lantinga <slouken@libsdl.org>
parents: 7816
diff changeset
   484
            } else {
a9135f92ddba Horizontal wheel support in windows
Sam Lantinga <slouken@libsdl.org>
parents: 7816
diff changeset
   485
                while (s_AccumulatedMotion <= -WHEEL_DELTA) {
7912
10eff60470b3 Fixed Windows compile error
Sam Lantinga <slouken@libsdl.org>
parents: 7911
diff changeset
   486
                    SDL_SendMouseWheel(data->window, 0, -1, 0);
7911
a9135f92ddba Horizontal wheel support in windows
Sam Lantinga <slouken@libsdl.org>
parents: 7816
diff changeset
   487
                    s_AccumulatedMotion += WHEEL_DELTA;
a9135f92ddba Horizontal wheel support in windows
Sam Lantinga <slouken@libsdl.org>
parents: 7816
diff changeset
   488
                }
a9135f92ddba Horizontal wheel support in windows
Sam Lantinga <slouken@libsdl.org>
parents: 7816
diff changeset
   489
            }
a9135f92ddba Horizontal wheel support in windows
Sam Lantinga <slouken@libsdl.org>
parents: 7816
diff changeset
   490
        }
8071
1ac2db4abe11 Added a relative mouse mode that uses mouse warping instead of raw input.
Sam Lantinga <slouken@libsdl.org>
parents: 8050
diff changeset
   491
        break;
7911
a9135f92ddba Horizontal wheel support in windows
Sam Lantinga <slouken@libsdl.org>
parents: 7816
diff changeset
   492
5086
c2539ff054c8 Fixed compiling on Windows Mobile SDK 5.0 with Visual Studio 2008
Sam Lantinga <slouken@libsdl.org>
parents: 5062
diff changeset
   493
#ifdef WM_MOUSELEAVE
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   494
    case WM_MOUSELEAVE:
7275
0a6b3b998814 Win32: Ignore WM_MOUSELEAVE in relative mode.
Jørgen P. Tjernø <jorgen@valvesoftware.com>
parents: 7191
diff changeset
   495
        if (SDL_GetMouseFocus() == data->window && !SDL_GetMouse()->relative_mode) {
8035
2cc220c7e899 Fixed large relative mouse motion when iconifying the SDL window.
Sam Lantinga <slouken@libsdl.org>
parents: 7975
diff changeset
   496
            if (!IsIconic(hwnd)) {
2cc220c7e899 Fixed large relative mouse motion when iconifying the SDL window.
Sam Lantinga <slouken@libsdl.org>
parents: 7975
diff changeset
   497
                POINT cursorPos;
2cc220c7e899 Fixed large relative mouse motion when iconifying the SDL window.
Sam Lantinga <slouken@libsdl.org>
parents: 7975
diff changeset
   498
                GetCursorPos(&cursorPos);
2cc220c7e899 Fixed large relative mouse motion when iconifying the SDL window.
Sam Lantinga <slouken@libsdl.org>
parents: 7975
diff changeset
   499
                ScreenToClient(hwnd, &cursorPos);
2cc220c7e899 Fixed large relative mouse motion when iconifying the SDL window.
Sam Lantinga <slouken@libsdl.org>
parents: 7975
diff changeset
   500
                SDL_SendMouseMotion(data->window, 0, 0, cursorPos.x, cursorPos.y);
2cc220c7e899 Fixed large relative mouse motion when iconifying the SDL window.
Sam Lantinga <slouken@libsdl.org>
parents: 7975
diff changeset
   501
            }
7191
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   502
            SDL_SetMouseFocus(NULL);
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   503
        }
3566
07c8339c95c6 Fixed bug #905
Sam Lantinga <slouken@libsdl.org>
parents: 3565
diff changeset
   504
        returnCode = 0;
07c8339c95c6 Fixed bug #905
Sam Lantinga <slouken@libsdl.org>
parents: 3565
diff changeset
   505
        break;
5086
c2539ff054c8 Fixed compiling on Windows Mobile SDK 5.0 with Visual Studio 2008
Sam Lantinga <slouken@libsdl.org>
parents: 5062
diff changeset
   506
#endif /* WM_MOUSELEAVE */
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   507
7645
cc775832d501 Fixed bug 1876 - SDL_TEXTINPUT only returns '?' (0x3F) in event.text.text with Khmer language input
Sam Lantinga <slouken@libsdl.org>
parents: 7631
diff changeset
   508
    case WM_KEYDOWN:
7646
42c3b0c24c6c The keyboard text events should be sent after the key down events
Sam Lantinga <slouken@libsdl.org>
parents: 7645
diff changeset
   509
    case WM_SYSKEYDOWN:
7645
cc775832d501 Fixed bug 1876 - SDL_TEXTINPUT only returns '?' (0x3F) in event.text.text with Khmer language input
Sam Lantinga <slouken@libsdl.org>
parents: 7631
diff changeset
   510
        {
7646
42c3b0c24c6c The keyboard text events should be sent after the key down events
Sam Lantinga <slouken@libsdl.org>
parents: 7645
diff changeset
   511
            SDL_Scancode code = WindowsScanCodeToSDLScanCode( lParam, wParam );
42c3b0c24c6c The keyboard text events should be sent after the key down events
Sam Lantinga <slouken@libsdl.org>
parents: 7645
diff changeset
   512
            if ( code != SDL_SCANCODE_UNKNOWN ) {
42c3b0c24c6c The keyboard text events should be sent after the key down events
Sam Lantinga <slouken@libsdl.org>
parents: 7645
diff changeset
   513
                SDL_SendKeyboardKey(SDL_PRESSED, code );
42c3b0c24c6c The keyboard text events should be sent after the key down events
Sam Lantinga <slouken@libsdl.org>
parents: 7645
diff changeset
   514
            }
42c3b0c24c6c The keyboard text events should be sent after the key down events
Sam Lantinga <slouken@libsdl.org>
parents: 7645
diff changeset
   515
        }
42c3b0c24c6c The keyboard text events should be sent after the key down events
Sam Lantinga <slouken@libsdl.org>
parents: 7645
diff changeset
   516
        if (msg == WM_KEYDOWN) {
7645
cc775832d501 Fixed bug 1876 - SDL_TEXTINPUT only returns '?' (0x3F) in event.text.text with Khmer language input
Sam Lantinga <slouken@libsdl.org>
parents: 7631
diff changeset
   517
            BYTE keyboardState[256];
cc775832d501 Fixed bug 1876 - SDL_TEXTINPUT only returns '?' (0x3F) in event.text.text with Khmer language input
Sam Lantinga <slouken@libsdl.org>
parents: 7631
diff changeset
   518
            char text[5];
cc775832d501 Fixed bug 1876 - SDL_TEXTINPUT only returns '?' (0x3F) in event.text.text with Khmer language input
Sam Lantinga <slouken@libsdl.org>
parents: 7631
diff changeset
   519
            UINT32 utf32 = 0;
cc775832d501 Fixed bug 1876 - SDL_TEXTINPUT only returns '?' (0x3F) in event.text.text with Khmer language input
Sam Lantinga <slouken@libsdl.org>
parents: 7631
diff changeset
   520
cc775832d501 Fixed bug 1876 - SDL_TEXTINPUT only returns '?' (0x3F) in event.text.text with Khmer language input
Sam Lantinga <slouken@libsdl.org>
parents: 7631
diff changeset
   521
            GetKeyboardState(keyboardState);
cc775832d501 Fixed bug 1876 - SDL_TEXTINPUT only returns '?' (0x3F) in event.text.text with Khmer language input
Sam Lantinga <slouken@libsdl.org>
parents: 7631
diff changeset
   522
            if (ToUnicode(wParam, (lParam >> 16) & 0xff, keyboardState, (LPWSTR)&utf32, 1, 0) > 0) {
8071
1ac2db4abe11 Added a relative mouse mode that uses mouse warping instead of raw input.
Sam Lantinga <slouken@libsdl.org>
parents: 8050
diff changeset
   523
                WORD repetition;
1ac2db4abe11 Added a relative mouse mode that uses mouse warping instead of raw input.
Sam Lantinga <slouken@libsdl.org>
parents: 8050
diff changeset
   524
                for (repetition = lParam & 0xffff; repetition > 0; repetition--) {
7645
cc775832d501 Fixed bug 1876 - SDL_TEXTINPUT only returns '?' (0x3F) in event.text.text with Khmer language input
Sam Lantinga <slouken@libsdl.org>
parents: 7631
diff changeset
   525
                    WIN_ConvertUTF32toUTF8(utf32, text);
cc775832d501 Fixed bug 1876 - SDL_TEXTINPUT only returns '?' (0x3F) in event.text.text with Khmer language input
Sam Lantinga <slouken@libsdl.org>
parents: 7631
diff changeset
   526
                    SDL_SendKeyboardText(text);
cc775832d501 Fixed bug 1876 - SDL_TEXTINPUT only returns '?' (0x3F) in event.text.text with Khmer language input
Sam Lantinga <slouken@libsdl.org>
parents: 7631
diff changeset
   527
                }
cc775832d501 Fixed bug 1876 - SDL_TEXTINPUT only returns '?' (0x3F) in event.text.text with Khmer language input
Sam Lantinga <slouken@libsdl.org>
parents: 7631
diff changeset
   528
            }
cc775832d501 Fixed bug 1876 - SDL_TEXTINPUT only returns '?' (0x3F) in event.text.text with Khmer language input
Sam Lantinga <slouken@libsdl.org>
parents: 7631
diff changeset
   529
        }
3566
07c8339c95c6 Fixed bug #905
Sam Lantinga <slouken@libsdl.org>
parents: 3565
diff changeset
   530
        returnCode = 0;
07c8339c95c6 Fixed bug #905
Sam Lantinga <slouken@libsdl.org>
parents: 3565
diff changeset
   531
        break;
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   532
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   533
    case WM_SYSKEYUP:
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   534
    case WM_KEYUP:
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   535
        {
6938
b272d47f70a7 Cleaned up and fixed the Windows keyboard mapping code.
Sam Lantinga <slouken@libsdl.org>
parents: 6931
diff changeset
   536
            SDL_Scancode code = WindowsScanCodeToSDLScanCode( lParam, wParam );
7975
1b49b680f319 [Windows] Fixes bug #1555, handle ALT+F4 on Windows
Gabriel Jacobo <gabomdq@gmail.com>
parents: 7941
diff changeset
   537
            const Uint8 *keyboardState = SDL_GetKeyboardState(NULL);
1b49b680f319 [Windows] Fixes bug #1555, handle ALT+F4 on Windows
Gabriel Jacobo <gabomdq@gmail.com>
parents: 7941
diff changeset
   538
1b49b680f319 [Windows] Fixes bug #1555, handle ALT+F4 on Windows
Gabriel Jacobo <gabomdq@gmail.com>
parents: 7941
diff changeset
   539
            /* Detect relevant keyboard shortcuts */
1b49b680f319 [Windows] Fixes bug #1555, handle ALT+F4 on Windows
Gabriel Jacobo <gabomdq@gmail.com>
parents: 7941
diff changeset
   540
            if (keyboardState[SDL_SCANCODE_LALT] == SDL_PRESSED || keyboardState[SDL_SCANCODE_RALT] == SDL_PRESSED ) {
8218
cf153cc95173 Make sure we don't stay in the windows event loop forever if there are lots of events coming in quickly.
Sam Lantinga <slouken@libsdl.org>
parents: 8212
diff changeset
   541
                /* ALT+F4: Close window */
cf153cc95173 Make sure we don't stay in the windows event loop forever if there are lots of events coming in quickly.
Sam Lantinga <slouken@libsdl.org>
parents: 8212
diff changeset
   542
                if (code == SDL_SCANCODE_F4) {
cf153cc95173 Make sure we don't stay in the windows event loop forever if there are lots of events coming in quickly.
Sam Lantinga <slouken@libsdl.org>
parents: 8212
diff changeset
   543
                    SDL_SendWindowEvent(data->window, SDL_WINDOWEVENT_CLOSE, 0, 0);
cf153cc95173 Make sure we don't stay in the windows event loop forever if there are lots of events coming in quickly.
Sam Lantinga <slouken@libsdl.org>
parents: 8212
diff changeset
   544
                }
7975
1b49b680f319 [Windows] Fixes bug #1555, handle ALT+F4 on Windows
Gabriel Jacobo <gabomdq@gmail.com>
parents: 7941
diff changeset
   545
            }
1b49b680f319 [Windows] Fixes bug #1555, handle ALT+F4 on Windows
Gabriel Jacobo <gabomdq@gmail.com>
parents: 7941
diff changeset
   546
6938
b272d47f70a7 Cleaned up and fixed the Windows keyboard mapping code.
Sam Lantinga <slouken@libsdl.org>
parents: 6931
diff changeset
   547
            if ( code != SDL_SCANCODE_UNKNOWN ) {
b272d47f70a7 Cleaned up and fixed the Windows keyboard mapping code.
Sam Lantinga <slouken@libsdl.org>
parents: 6931
diff changeset
   548
                if (code == SDL_SCANCODE_PRINTSCREEN &&
7975
1b49b680f319 [Windows] Fixes bug #1555, handle ALT+F4 on Windows
Gabriel Jacobo <gabomdq@gmail.com>
parents: 7941
diff changeset
   549
                    keyboardState[code] == SDL_RELEASED) {
6938
b272d47f70a7 Cleaned up and fixed the Windows keyboard mapping code.
Sam Lantinga <slouken@libsdl.org>
parents: 6931
diff changeset
   550
                    SDL_SendKeyboardKey(SDL_PRESSED, code);
b272d47f70a7 Cleaned up and fixed the Windows keyboard mapping code.
Sam Lantinga <slouken@libsdl.org>
parents: 6931
diff changeset
   551
                }
b272d47f70a7 Cleaned up and fixed the Windows keyboard mapping code.
Sam Lantinga <slouken@libsdl.org>
parents: 6931
diff changeset
   552
                SDL_SendKeyboardKey(SDL_RELEASED, code);
2308
514f7c1651fc Untested Win32 keyboard scancode code.
Sam Lantinga <slouken@libsdl.org>
parents: 2284
diff changeset
   553
            }
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   554
        }
3566
07c8339c95c6 Fixed bug #905
Sam Lantinga <slouken@libsdl.org>
parents: 3565
diff changeset
   555
        returnCode = 0;
07c8339c95c6 Fixed bug #905
Sam Lantinga <slouken@libsdl.org>
parents: 3565
diff changeset
   556
        break;
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   557
8143
ce90b743882a Document Michael's changes adding TranslateMessage() back to the SDL message loop.
Sam Lantinga <slouken@libsdl.org>
parents: 8142
diff changeset
   558
    case WM_UNICHAR:
ce90b743882a Document Michael's changes adding TranslateMessage() back to the SDL message loop.
Sam Lantinga <slouken@libsdl.org>
parents: 8142
diff changeset
   559
    case WM_CHAR:
ce90b743882a Document Michael's changes adding TranslateMessage() back to the SDL message loop.
Sam Lantinga <slouken@libsdl.org>
parents: 8142
diff changeset
   560
        /* Ignore WM_CHAR messages that come from TranslateMessage(), since we handle WM_KEY* messages directly */
ce90b743882a Document Michael's changes adding TranslateMessage() back to the SDL message loop.
Sam Lantinga <slouken@libsdl.org>
parents: 8142
diff changeset
   561
        returnCode = 0;
ce90b743882a Document Michael's changes adding TranslateMessage() back to the SDL message loop.
Sam Lantinga <slouken@libsdl.org>
parents: 8142
diff changeset
   562
        break;
ce90b743882a Document Michael's changes adding TranslateMessage() back to the SDL message loop.
Sam Lantinga <slouken@libsdl.org>
parents: 8142
diff changeset
   563
5086
c2539ff054c8 Fixed compiling on Windows Mobile SDK 5.0 with Visual Studio 2008
Sam Lantinga <slouken@libsdl.org>
parents: 5062
diff changeset
   564
#ifdef WM_INPUTLANGCHANGE
2311
54e21acfec5a Friggin' Windows remaps alphabetic keys based on keyboard layout.
Sam Lantinga <slouken@libsdl.org>
parents: 2310
diff changeset
   565
    case WM_INPUTLANGCHANGE:
54e21acfec5a Friggin' Windows remaps alphabetic keys based on keyboard layout.
Sam Lantinga <slouken@libsdl.org>
parents: 2310
diff changeset
   566
        {
4465
3e69e077cb95 Removed multi-mouse / multi-keyboard support in anticipation of a real multi-mouse and multi-touch API.
Sam Lantinga <slouken@libsdl.org>
parents: 4429
diff changeset
   567
            WIN_UpdateKeymap();
2311
54e21acfec5a Friggin' Windows remaps alphabetic keys based on keyboard layout.
Sam Lantinga <slouken@libsdl.org>
parents: 2310
diff changeset
   568
        }
3566
07c8339c95c6 Fixed bug #905
Sam Lantinga <slouken@libsdl.org>
parents: 3565
diff changeset
   569
        returnCode = 1;
07c8339c95c6 Fixed bug #905
Sam Lantinga <slouken@libsdl.org>
parents: 3565
diff changeset
   570
        break;
5086
c2539ff054c8 Fixed compiling on Windows Mobile SDK 5.0 with Visual Studio 2008
Sam Lantinga <slouken@libsdl.org>
parents: 5062
diff changeset
   571
#endif /* WM_INPUTLANGCHANGE */
2311
54e21acfec5a Friggin' Windows remaps alphabetic keys based on keyboard layout.
Sam Lantinga <slouken@libsdl.org>
parents: 2310
diff changeset
   572
8253
75ad8ebb3768 Make sure we don't clip the cursor while clicking on the window title bar
Sam Lantinga <slouken@libsdl.org>
parents: 8218
diff changeset
   573
    case WM_NCLBUTTONDOWN:
75ad8ebb3768 Make sure we don't clip the cursor while clicking on the window title bar
Sam Lantinga <slouken@libsdl.org>
parents: 8218
diff changeset
   574
        {
75ad8ebb3768 Make sure we don't clip the cursor while clicking on the window title bar
Sam Lantinga <slouken@libsdl.org>
parents: 8218
diff changeset
   575
            data->in_title_click = SDL_TRUE;
75ad8ebb3768 Make sure we don't clip the cursor while clicking on the window title bar
Sam Lantinga <slouken@libsdl.org>
parents: 8218
diff changeset
   576
            WIN_UpdateClipCursor(data->window);
75ad8ebb3768 Make sure we don't clip the cursor while clicking on the window title bar
Sam Lantinga <slouken@libsdl.org>
parents: 8218
diff changeset
   577
        }
75ad8ebb3768 Make sure we don't clip the cursor while clicking on the window title bar
Sam Lantinga <slouken@libsdl.org>
parents: 8218
diff changeset
   578
        break;
75ad8ebb3768 Make sure we don't clip the cursor while clicking on the window title bar
Sam Lantinga <slouken@libsdl.org>
parents: 8218
diff changeset
   579
75ad8ebb3768 Make sure we don't clip the cursor while clicking on the window title bar
Sam Lantinga <slouken@libsdl.org>
parents: 8218
diff changeset
   580
    case WM_NCMOUSELEAVE:
75ad8ebb3768 Make sure we don't clip the cursor while clicking on the window title bar
Sam Lantinga <slouken@libsdl.org>
parents: 8218
diff changeset
   581
        {
75ad8ebb3768 Make sure we don't clip the cursor while clicking on the window title bar
Sam Lantinga <slouken@libsdl.org>
parents: 8218
diff changeset
   582
            data->in_title_click = SDL_FALSE;
75ad8ebb3768 Make sure we don't clip the cursor while clicking on the window title bar
Sam Lantinga <slouken@libsdl.org>
parents: 8218
diff changeset
   583
            WIN_UpdateClipCursor(data->window);
75ad8ebb3768 Make sure we don't clip the cursor while clicking on the window title bar
Sam Lantinga <slouken@libsdl.org>
parents: 8218
diff changeset
   584
        }
75ad8ebb3768 Make sure we don't clip the cursor while clicking on the window title bar
Sam Lantinga <slouken@libsdl.org>
parents: 8218
diff changeset
   585
        break;
75ad8ebb3768 Make sure we don't clip the cursor while clicking on the window title bar
Sam Lantinga <slouken@libsdl.org>
parents: 8218
diff changeset
   586
8036
d485906bd74a Fixed bug 2260 - SDL_SetCursorGrab() is buggy on Windows
Sam Lantinga <slouken@libsdl.org>
parents: 8035
diff changeset
   587
    case WM_ENTERSIZEMOVE:
d485906bd74a Fixed bug 2260 - SDL_SetCursorGrab() is buggy on Windows
Sam Lantinga <slouken@libsdl.org>
parents: 8035
diff changeset
   588
    case WM_ENTERMENULOOP:
d485906bd74a Fixed bug 2260 - SDL_SetCursorGrab() is buggy on Windows
Sam Lantinga <slouken@libsdl.org>
parents: 8035
diff changeset
   589
        {
d485906bd74a Fixed bug 2260 - SDL_SetCursorGrab() is buggy on Windows
Sam Lantinga <slouken@libsdl.org>
parents: 8035
diff changeset
   590
            data->in_modal_loop = SDL_TRUE;
d485906bd74a Fixed bug 2260 - SDL_SetCursorGrab() is buggy on Windows
Sam Lantinga <slouken@libsdl.org>
parents: 8035
diff changeset
   591
            WIN_UpdateClipCursor(data->window);
d485906bd74a Fixed bug 2260 - SDL_SetCursorGrab() is buggy on Windows
Sam Lantinga <slouken@libsdl.org>
parents: 8035
diff changeset
   592
        }
d485906bd74a Fixed bug 2260 - SDL_SetCursorGrab() is buggy on Windows
Sam Lantinga <slouken@libsdl.org>
parents: 8035
diff changeset
   593
        break;
d485906bd74a Fixed bug 2260 - SDL_SetCursorGrab() is buggy on Windows
Sam Lantinga <slouken@libsdl.org>
parents: 8035
diff changeset
   594
d485906bd74a Fixed bug 2260 - SDL_SetCursorGrab() is buggy on Windows
Sam Lantinga <slouken@libsdl.org>
parents: 8035
diff changeset
   595
    case WM_EXITSIZEMOVE:
d485906bd74a Fixed bug 2260 - SDL_SetCursorGrab() is buggy on Windows
Sam Lantinga <slouken@libsdl.org>
parents: 8035
diff changeset
   596
    case WM_EXITMENULOOP:
d485906bd74a Fixed bug 2260 - SDL_SetCursorGrab() is buggy on Windows
Sam Lantinga <slouken@libsdl.org>
parents: 8035
diff changeset
   597
        {
d485906bd74a Fixed bug 2260 - SDL_SetCursorGrab() is buggy on Windows
Sam Lantinga <slouken@libsdl.org>
parents: 8035
diff changeset
   598
            data->in_modal_loop = SDL_FALSE;
d485906bd74a Fixed bug 2260 - SDL_SetCursorGrab() is buggy on Windows
Sam Lantinga <slouken@libsdl.org>
parents: 8035
diff changeset
   599
            WIN_UpdateClipCursor(data->window);
8212
d278747da408 Fixed lost mouse button when in relative mouse warp mode and you click on the title bar, entering a modal move/resize loop.
Sam Lantinga <slouken@libsdl.org>
parents: 8149
diff changeset
   600
d278747da408 Fixed lost mouse button when in relative mouse warp mode and you click on the title bar, entering a modal move/resize loop.
Sam Lantinga <slouken@libsdl.org>
parents: 8149
diff changeset
   601
            /* The mouse may have been released during the modal loop */
d278747da408 Fixed lost mouse button when in relative mouse warp mode and you click on the title bar, entering a modal move/resize loop.
Sam Lantinga <slouken@libsdl.org>
parents: 8149
diff changeset
   602
            WIN_CheckAsyncMouseRelease(data);
8036
d485906bd74a Fixed bug 2260 - SDL_SetCursorGrab() is buggy on Windows
Sam Lantinga <slouken@libsdl.org>
parents: 8035
diff changeset
   603
        }
d485906bd74a Fixed bug 2260 - SDL_SetCursorGrab() is buggy on Windows
Sam Lantinga <slouken@libsdl.org>
parents: 8035
diff changeset
   604
        break;
d485906bd74a Fixed bug 2260 - SDL_SetCursorGrab() is buggy on Windows
Sam Lantinga <slouken@libsdl.org>
parents: 8035
diff changeset
   605
5086
c2539ff054c8 Fixed compiling on Windows Mobile SDK 5.0 with Visual Studio 2008
Sam Lantinga <slouken@libsdl.org>
parents: 5062
diff changeset
   606
#ifdef WM_GETMINMAXINFO
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   607
    case WM_GETMINMAXINFO:
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   608
        {
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   609
            MINMAXINFO *info;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   610
            RECT size;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   611
            int x, y;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   612
            int w, h;
6682
a0cbe4e5a07a SetWindowMinimumSize Windows implementation
stopiccot
parents: 6523
diff changeset
   613
            int min_w, min_h;
6788
036f53f2f5aa Added SDL_SetWindowMaximumSize() and SDL_GetWindowMaximumSize()
Sam Lantinga <slouken@libsdl.org>
parents: 6782
diff changeset
   614
            int max_w, max_h;
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   615
            int style;
3168
Sam Lantinga <slouken@libsdl.org>
parents: 3139
diff changeset
   616
            BOOL menu;
7191
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   617
            BOOL constrain_max_size;
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   618
6682
a0cbe4e5a07a SetWindowMinimumSize Windows implementation
stopiccot
parents: 6523
diff changeset
   619
            if (SDL_IsShapedWindow(data->window))
4815
93402b9dd20c Added Andreas's patch to fix my silly C++-style errors.
Eli Gottlieb <eligottlieb@gmail.com>
parents: 4788
diff changeset
   620
                Win32_ResizeWindowShape(data->window);
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   621
7941
7c249ca44069 Fixed bug 2067 - Window size limit calculation issue when exiting fullscreen on Windows
Sam Lantinga <slouken@libsdl.org>
parents: 7912
diff changeset
   622
            /* If this is an expected size change, allow it */
7c249ca44069 Fixed bug 2067 - Window size limit calculation issue when exiting fullscreen on Windows
Sam Lantinga <slouken@libsdl.org>
parents: 7912
diff changeset
   623
            if (data->expected_resize) {
7c249ca44069 Fixed bug 2067 - Window size limit calculation issue when exiting fullscreen on Windows
Sam Lantinga <slouken@libsdl.org>
parents: 7912
diff changeset
   624
                break;
7c249ca44069 Fixed bug 2067 - Window size limit calculation issue when exiting fullscreen on Windows
Sam Lantinga <slouken@libsdl.org>
parents: 7912
diff changeset
   625
            }
7c249ca44069 Fixed bug 2067 - Window size limit calculation issue when exiting fullscreen on Windows
Sam Lantinga <slouken@libsdl.org>
parents: 7912
diff changeset
   626
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   627
            /* Get the current position of our window */
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   628
            GetWindowRect(hwnd, &size);
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   629
            x = size.left;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   630
            y = size.top;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   631
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   632
            /* Calculate current size of our window */
3685
64ce267332c6 Switched from SDL_WindowID and SDL_TextureID to SDL_Window* and SDL_Texture* for code simplicity and improved performance.
Sam Lantinga <slouken@libsdl.org>
parents: 3566
diff changeset
   633
            SDL_GetWindowSize(data->window, &w, &h);
6682
a0cbe4e5a07a SetWindowMinimumSize Windows implementation
stopiccot
parents: 6523
diff changeset
   634
            SDL_GetWindowMinimumSize(data->window, &min_w, &min_h);
6788
036f53f2f5aa Added SDL_SetWindowMaximumSize() and SDL_GetWindowMaximumSize()
Sam Lantinga <slouken@libsdl.org>
parents: 6782
diff changeset
   635
            SDL_GetWindowMaximumSize(data->window, &max_w, &max_h);
6682
a0cbe4e5a07a SetWindowMinimumSize Windows implementation
stopiccot
parents: 6523
diff changeset
   636
7191
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   637
            /* Store in min_w and min_h difference between current size and minimal
6682
a0cbe4e5a07a SetWindowMinimumSize Windows implementation
stopiccot
parents: 6523
diff changeset
   638
               size so we don't need to call AdjustWindowRectEx twice */
a0cbe4e5a07a SetWindowMinimumSize Windows implementation
stopiccot
parents: 6523
diff changeset
   639
            min_w -= w;
a0cbe4e5a07a SetWindowMinimumSize Windows implementation
stopiccot
parents: 6523
diff changeset
   640
            min_h -= h;
6837
a69e10925a58 Fixed bug 1682 - Resize collapses window instantly to a size of 0 x 124.
Sam Lantinga <slouken@libsdl.org>
parents: 6788
diff changeset
   641
            if (max_w && max_h) {
a69e10925a58 Fixed bug 1682 - Resize collapses window instantly to a size of 0 x 124.
Sam Lantinga <slouken@libsdl.org>
parents: 6788
diff changeset
   642
                max_w -= w;
a69e10925a58 Fixed bug 1682 - Resize collapses window instantly to a size of 0 x 124.
Sam Lantinga <slouken@libsdl.org>
parents: 6788
diff changeset
   643
                max_h -= h;
6862
d189a1e771fe Fixed increasing the size of resizable windows
Sam Lantinga <slouken@libsdl.org>
parents: 6861
diff changeset
   644
                constrain_max_size = TRUE;
d189a1e771fe Fixed increasing the size of resizable windows
Sam Lantinga <slouken@libsdl.org>
parents: 6861
diff changeset
   645
            } else {
d189a1e771fe Fixed increasing the size of resizable windows
Sam Lantinga <slouken@libsdl.org>
parents: 6861
diff changeset
   646
                constrain_max_size = FALSE;
6837
a69e10925a58 Fixed bug 1682 - Resize collapses window instantly to a size of 0 x 124.
Sam Lantinga <slouken@libsdl.org>
parents: 6788
diff changeset
   647
            }
6682
a0cbe4e5a07a SetWindowMinimumSize Windows implementation
stopiccot
parents: 6523
diff changeset
   648
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   649
            size.top = 0;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   650
            size.left = 0;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   651
            size.bottom = h;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   652
            size.right = w;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   653
3168
Sam Lantinga <slouken@libsdl.org>
parents: 3139
diff changeset
   654
            style = GetWindowLong(hwnd, GWL_STYLE);
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   655
            /* DJM - according to the docs for GetMenu(), the
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   656
               return value is undefined if hwnd is a child window.
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   657
               Aparently it's too difficult for MS to check
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   658
               inside their function, so I have to do it here.
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   659
             */
3168
Sam Lantinga <slouken@libsdl.org>
parents: 3139
diff changeset
   660
            menu = (style & WS_CHILDWINDOW) ? FALSE : (GetMenu(hwnd) != NULL);
Sam Lantinga <slouken@libsdl.org>
parents: 3139
diff changeset
   661
            AdjustWindowRectEx(&size, style, menu, 0);
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   662
            w = size.right - size.left;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   663
            h = size.bottom - size.top;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   664
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   665
            /* Fix our size to the current size */
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   666
            info = (MINMAXINFO *) lParam;
6682
a0cbe4e5a07a SetWindowMinimumSize Windows implementation
stopiccot
parents: 6523
diff changeset
   667
            if (SDL_GetWindowFlags(data->window) & SDL_WINDOW_RESIZABLE) {
a0cbe4e5a07a SetWindowMinimumSize Windows implementation
stopiccot
parents: 6523
diff changeset
   668
                info->ptMinTrackSize.x = w + min_w;
a0cbe4e5a07a SetWindowMinimumSize Windows implementation
stopiccot
parents: 6523
diff changeset
   669
                info->ptMinTrackSize.y = h + min_h;
6862
d189a1e771fe Fixed increasing the size of resizable windows
Sam Lantinga <slouken@libsdl.org>
parents: 6861
diff changeset
   670
                if (constrain_max_size) {
d189a1e771fe Fixed increasing the size of resizable windows
Sam Lantinga <slouken@libsdl.org>
parents: 6861
diff changeset
   671
                    info->ptMaxTrackSize.x = w + max_w;
d189a1e771fe Fixed increasing the size of resizable windows
Sam Lantinga <slouken@libsdl.org>
parents: 6861
diff changeset
   672
                    info->ptMaxTrackSize.y = h + max_h;
d189a1e771fe Fixed increasing the size of resizable windows
Sam Lantinga <slouken@libsdl.org>
parents: 6861
diff changeset
   673
                }
6682
a0cbe4e5a07a SetWindowMinimumSize Windows implementation
stopiccot
parents: 6523
diff changeset
   674
            } else {
a0cbe4e5a07a SetWindowMinimumSize Windows implementation
stopiccot
parents: 6523
diff changeset
   675
                info->ptMaxSize.x = w;
a0cbe4e5a07a SetWindowMinimumSize Windows implementation
stopiccot
parents: 6523
diff changeset
   676
                info->ptMaxSize.y = h;
a0cbe4e5a07a SetWindowMinimumSize Windows implementation
stopiccot
parents: 6523
diff changeset
   677
                info->ptMaxPosition.x = x;
a0cbe4e5a07a SetWindowMinimumSize Windows implementation
stopiccot
parents: 6523
diff changeset
   678
                info->ptMaxPosition.y = y;
a0cbe4e5a07a SetWindowMinimumSize Windows implementation
stopiccot
parents: 6523
diff changeset
   679
                info->ptMinTrackSize.x = w;
a0cbe4e5a07a SetWindowMinimumSize Windows implementation
stopiccot
parents: 6523
diff changeset
   680
                info->ptMinTrackSize.y = h;
a0cbe4e5a07a SetWindowMinimumSize Windows implementation
stopiccot
parents: 6523
diff changeset
   681
                info->ptMaxTrackSize.x = w;
a0cbe4e5a07a SetWindowMinimumSize Windows implementation
stopiccot
parents: 6523
diff changeset
   682
                info->ptMaxTrackSize.y = h;
a0cbe4e5a07a SetWindowMinimumSize Windows implementation
stopiccot
parents: 6523
diff changeset
   683
            }
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   684
        }
3566
07c8339c95c6 Fixed bug #905
Sam Lantinga <slouken@libsdl.org>
parents: 3565
diff changeset
   685
        returnCode = 0;
07c8339c95c6 Fixed bug #905
Sam Lantinga <slouken@libsdl.org>
parents: 3565
diff changeset
   686
        break;
5086
c2539ff054c8 Fixed compiling on Windows Mobile SDK 5.0 with Visual Studio 2008
Sam Lantinga <slouken@libsdl.org>
parents: 5062
diff changeset
   687
#endif /* WM_GETMINMAXINFO */
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   688
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   689
    case WM_WINDOWPOSCHANGED:
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   690
        {
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   691
            RECT rect;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   692
            int x, y;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   693
            int w, h;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   694
8036
d485906bd74a Fixed bug 2260 - SDL_SetCursorGrab() is buggy on Windows
Sam Lantinga <slouken@libsdl.org>
parents: 8035
diff changeset
   695
            if (!GetClientRect(hwnd, &rect) || IsRectEmpty(&rect)) {
3256
83c87f2b2aab Fixed bug where minimized windows get zero width/height
Sam Lantinga <slouken@libsdl.org>
parents: 3253
diff changeset
   696
                break;
83c87f2b2aab Fixed bug where minimized windows get zero width/height
Sam Lantinga <slouken@libsdl.org>
parents: 3253
diff changeset
   697
            }
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   698
            ClientToScreen(hwnd, (LPPOINT) & rect);
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   699
            ClientToScreen(hwnd, (LPPOINT) & rect + 1);
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   700
8036
d485906bd74a Fixed bug 2260 - SDL_SetCursorGrab() is buggy on Windows
Sam Lantinga <slouken@libsdl.org>
parents: 8035
diff changeset
   701
            WIN_UpdateClipCursor(data->window);
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   702
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   703
            x = rect.left;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   704
            y = rect.top;
3685
64ce267332c6 Switched from SDL_WindowID and SDL_TextureID to SDL_Window* and SDL_Texture* for code simplicity and improved performance.
Sam Lantinga <slouken@libsdl.org>
parents: 3566
diff changeset
   705
            SDL_SendWindowEvent(data->window, SDL_WINDOWEVENT_MOVED, x, y);
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   706
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   707
            w = rect.right - rect.left;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   708
            h = rect.bottom - rect.top;
3685
64ce267332c6 Switched from SDL_WindowID and SDL_TextureID to SDL_Window* and SDL_Texture* for code simplicity and improved performance.
Sam Lantinga <slouken@libsdl.org>
parents: 3566
diff changeset
   709
            SDL_SendWindowEvent(data->window, SDL_WINDOWEVENT_RESIZED, w,
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   710
                                h);
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   711
        }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   712
        break;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   713
7941
7c249ca44069 Fixed bug 2067 - Window size limit calculation issue when exiting fullscreen on Windows
Sam Lantinga <slouken@libsdl.org>
parents: 7912
diff changeset
   714
    case WM_SIZE:
7c249ca44069 Fixed bug 2067 - Window size limit calculation issue when exiting fullscreen on Windows
Sam Lantinga <slouken@libsdl.org>
parents: 7912
diff changeset
   715
        {
7c249ca44069 Fixed bug 2067 - Window size limit calculation issue when exiting fullscreen on Windows
Sam Lantinga <slouken@libsdl.org>
parents: 7912
diff changeset
   716
            switch (wParam)
7c249ca44069 Fixed bug 2067 - Window size limit calculation issue when exiting fullscreen on Windows
Sam Lantinga <slouken@libsdl.org>
parents: 7912
diff changeset
   717
            {
7c249ca44069 Fixed bug 2067 - Window size limit calculation issue when exiting fullscreen on Windows
Sam Lantinga <slouken@libsdl.org>
parents: 7912
diff changeset
   718
            case SIZE_MAXIMIZED:
7c249ca44069 Fixed bug 2067 - Window size limit calculation issue when exiting fullscreen on Windows
Sam Lantinga <slouken@libsdl.org>
parents: 7912
diff changeset
   719
                SDL_SendWindowEvent(data->window,
7c249ca44069 Fixed bug 2067 - Window size limit calculation issue when exiting fullscreen on Windows
Sam Lantinga <slouken@libsdl.org>
parents: 7912
diff changeset
   720
                    SDL_WINDOWEVENT_MAXIMIZED, 0, 0);
7c249ca44069 Fixed bug 2067 - Window size limit calculation issue when exiting fullscreen on Windows
Sam Lantinga <slouken@libsdl.org>
parents: 7912
diff changeset
   721
                break;
7c249ca44069 Fixed bug 2067 - Window size limit calculation issue when exiting fullscreen on Windows
Sam Lantinga <slouken@libsdl.org>
parents: 7912
diff changeset
   722
            case SIZE_MINIMIZED:
7c249ca44069 Fixed bug 2067 - Window size limit calculation issue when exiting fullscreen on Windows
Sam Lantinga <slouken@libsdl.org>
parents: 7912
diff changeset
   723
                SDL_SendWindowEvent(data->window,
7c249ca44069 Fixed bug 2067 - Window size limit calculation issue when exiting fullscreen on Windows
Sam Lantinga <slouken@libsdl.org>
parents: 7912
diff changeset
   724
                    SDL_WINDOWEVENT_MINIMIZED, 0, 0);
7c249ca44069 Fixed bug 2067 - Window size limit calculation issue when exiting fullscreen on Windows
Sam Lantinga <slouken@libsdl.org>
parents: 7912
diff changeset
   725
                break;
7c249ca44069 Fixed bug 2067 - Window size limit calculation issue when exiting fullscreen on Windows
Sam Lantinga <slouken@libsdl.org>
parents: 7912
diff changeset
   726
            default:
7c249ca44069 Fixed bug 2067 - Window size limit calculation issue when exiting fullscreen on Windows
Sam Lantinga <slouken@libsdl.org>
parents: 7912
diff changeset
   727
                SDL_SendWindowEvent(data->window,
7c249ca44069 Fixed bug 2067 - Window size limit calculation issue when exiting fullscreen on Windows
Sam Lantinga <slouken@libsdl.org>
parents: 7912
diff changeset
   728
                    SDL_WINDOWEVENT_RESTORED, 0, 0);
7c249ca44069 Fixed bug 2067 - Window size limit calculation issue when exiting fullscreen on Windows
Sam Lantinga <slouken@libsdl.org>
parents: 7912
diff changeset
   729
                break;
7c249ca44069 Fixed bug 2067 - Window size limit calculation issue when exiting fullscreen on Windows
Sam Lantinga <slouken@libsdl.org>
parents: 7912
diff changeset
   730
            }
7c249ca44069 Fixed bug 2067 - Window size limit calculation issue when exiting fullscreen on Windows
Sam Lantinga <slouken@libsdl.org>
parents: 7912
diff changeset
   731
        }
7c249ca44069 Fixed bug 2067 - Window size limit calculation issue when exiting fullscreen on Windows
Sam Lantinga <slouken@libsdl.org>
parents: 7912
diff changeset
   732
        break;
7c249ca44069 Fixed bug 2067 - Window size limit calculation issue when exiting fullscreen on Windows
Sam Lantinga <slouken@libsdl.org>
parents: 7912
diff changeset
   733
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   734
    case WM_SETCURSOR:
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   735
        {
3076
085e46423377 Use the default arrow cursor until we implement the cursor API
Sam Lantinga <slouken@libsdl.org>
parents: 3032
diff changeset
   736
            Uint16 hittest;
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   737
3076
085e46423377 Use the default arrow cursor until we implement the cursor API
Sam Lantinga <slouken@libsdl.org>
parents: 3032
diff changeset
   738
            hittest = LOWORD(lParam);
085e46423377 Use the default arrow cursor until we implement the cursor API
Sam Lantinga <slouken@libsdl.org>
parents: 3032
diff changeset
   739
            if (hittest == HTCLIENT) {
5421
f8588afb6486 Added support for Windows cursors
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   740
                SetCursor(SDL_cursor);
3566
07c8339c95c6 Fixed bug #905
Sam Lantinga <slouken@libsdl.org>
parents: 3565
diff changeset
   741
                returnCode = TRUE;
3076
085e46423377 Use the default arrow cursor until we implement the cursor API
Sam Lantinga <slouken@libsdl.org>
parents: 3032
diff changeset
   742
            }
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   743
        }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   744
        break;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   745
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   746
        /* We were occluded, refresh our display */
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   747
    case WM_PAINT:
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   748
        {
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   749
            RECT rect;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   750
            if (GetUpdateRect(hwnd, &rect, FALSE)) {
7295
737cc5bad795 Fixed bug 1897 - CPU spike on Windows with WM_EVENT and OpenGL
Sam Lantinga <slouken@libsdl.org>
parents: 7276
diff changeset
   751
                ValidateRect(hwnd, NULL);
3685
64ce267332c6 Switched from SDL_WindowID and SDL_TextureID to SDL_Window* and SDL_Texture* for code simplicity and improved performance.
Sam Lantinga <slouken@libsdl.org>
parents: 3566
diff changeset
   752
                SDL_SendWindowEvent(data->window, SDL_WINDOWEVENT_EXPOSED,
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   753
                                    0, 0);
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   754
            }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   755
        }
3566
07c8339c95c6 Fixed bug #905
Sam Lantinga <slouken@libsdl.org>
parents: 3565
diff changeset
   756
        returnCode = 0;
07c8339c95c6 Fixed bug #905
Sam Lantinga <slouken@libsdl.org>
parents: 3565
diff changeset
   757
        break;
3095
75483112b97f Date: Sat, 21 Mar 2009 19:41:52 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 3076
diff changeset
   758
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   759
        /* We'll do our own drawing, prevent flicker */
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   760
    case WM_ERASEBKGND:
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   761
        {
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   762
        }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   763
        return (1);
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   764
5086
c2539ff054c8 Fixed compiling on Windows Mobile SDK 5.0 with Visual Studio 2008
Sam Lantinga <slouken@libsdl.org>
parents: 5062
diff changeset
   765
#if defined(SC_SCREENSAVE) || defined(SC_MONITORPOWER)
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   766
    case WM_SYSCOMMAND:
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   767
        {
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   768
            /* Don't start the screensaver or blank the monitor in fullscreen apps */
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   769
            if ((wParam & 0xFFF0) == SC_SCREENSAVE ||
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   770
                (wParam & 0xFFF0) == SC_MONITORPOWER) {
3032
77c3e67f0740 Fixed Visual C++ build
Sam Lantinga <slouken@libsdl.org>
parents: 3025
diff changeset
   771
                if (SDL_GetVideoDevice()->suspend_screensaver) {
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   772
                    return (0);
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   773
                }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   774
            }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   775
        }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   776
        break;
5086
c2539ff054c8 Fixed compiling on Windows Mobile SDK 5.0 with Visual Studio 2008
Sam Lantinga <slouken@libsdl.org>
parents: 5062
diff changeset
   777
#endif /* System has screensaver support */
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   778
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   779
    case WM_CLOSE:
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   780
        {
3685
64ce267332c6 Switched from SDL_WindowID and SDL_TextureID to SDL_Window* and SDL_Texture* for code simplicity and improved performance.
Sam Lantinga <slouken@libsdl.org>
parents: 3566
diff changeset
   781
            SDL_SendWindowEvent(data->window, SDL_WINDOWEVENT_CLOSE, 0, 0);
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   782
        }
3566
07c8339c95c6 Fixed bug #905
Sam Lantinga <slouken@libsdl.org>
parents: 3565
diff changeset
   783
        returnCode = 0;
07c8339c95c6 Fixed bug #905
Sam Lantinga <slouken@libsdl.org>
parents: 3565
diff changeset
   784
        break;
4919
716b2cbf4c9e First pass at Windows multi-touch gesture support
Sam Lantinga <slouken@libsdl.org>
parents: 4902
diff changeset
   785
7191
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   786
    case WM_TOUCH:
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   787
        {
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   788
            UINT i, num_inputs = LOWORD(wParam);
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   789
            PTOUCHINPUT inputs = SDL_stack_alloc(TOUCHINPUT, num_inputs);
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   790
            if (data->videodata->GetTouchInputInfo((HTOUCHINPUT)lParam, num_inputs, inputs, sizeof(TOUCHINPUT))) {
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   791
                RECT rect;
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   792
                float x, y;
4919
716b2cbf4c9e First pass at Windows multi-touch gesture support
Sam Lantinga <slouken@libsdl.org>
parents: 4902
diff changeset
   793
7191
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   794
                if (!GetClientRect(hwnd, &rect) ||
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   795
                    (rect.right == rect.left && rect.bottom == rect.top)) {
7631
9fcda7425ccc Added missing call to SDL_stack_free().
Philipp Wiesemann <philipp.wiesemann@arcor.de>
parents: 7561
diff changeset
   796
                    if (inputs) {
9fcda7425ccc Added missing call to SDL_stack_free().
Philipp Wiesemann <philipp.wiesemann@arcor.de>
parents: 7561
diff changeset
   797
                        SDL_stack_free(inputs);
9fcda7425ccc Added missing call to SDL_stack_free().
Philipp Wiesemann <philipp.wiesemann@arcor.de>
parents: 7561
diff changeset
   798
                    }
7191
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   799
                    break;
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   800
                }
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   801
                ClientToScreen(hwnd, (LPPOINT) & rect);
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   802
                ClientToScreen(hwnd, (LPPOINT) & rect + 1);
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   803
                rect.top *= 100;
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   804
                rect.left *= 100;
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   805
                rect.bottom *= 100;
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   806
                rect.right *= 100;
4932
0d1bb1ce9d15 Removed carriage returns
Sam Lantinga <slouken@libsdl.org>
parents: 4919
diff changeset
   807
7191
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   808
                for (i = 0; i < num_inputs; ++i) {
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   809
                    PTOUCHINPUT input = &inputs[i];
4919
716b2cbf4c9e First pass at Windows multi-touch gesture support
Sam Lantinga <slouken@libsdl.org>
parents: 4902
diff changeset
   810
7543
a96f309059a1 Attempt to fix compiler warning.
Ryan C. Gordon <icculus@icculus.org>
parents: 7295
diff changeset
   811
                    const SDL_TouchID touchId = (SDL_TouchID)((size_t)input->hSource);
7191
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   812
                    if (!SDL_GetTouch(touchId)) {
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   813
                        if (SDL_AddTouch(touchId, "") < 0) {
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   814
                            continue;
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   815
                        }
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   816
                    }
4932
0d1bb1ce9d15 Removed carriage returns
Sam Lantinga <slouken@libsdl.org>
parents: 4919
diff changeset
   817
7191
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   818
                    /* Get the normalized coordinates for the window */
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   819
                    x = (float)(input->x - rect.left)/(rect.right - rect.left);
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   820
                    y = (float)(input->y - rect.top)/(rect.bottom - rect.top);
4932
0d1bb1ce9d15 Removed carriage returns
Sam Lantinga <slouken@libsdl.org>
parents: 4919
diff changeset
   821
7191
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   822
                    if (input->dwFlags & TOUCHEVENTF_DOWN) {
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   823
                        SDL_SendTouch(touchId, input->dwID, SDL_TRUE, x, y, 1.0f);
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   824
                    }
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   825
                    if (input->dwFlags & TOUCHEVENTF_MOVE) {
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   826
                        SDL_SendTouchMotion(touchId, input->dwID, x, y, 1.0f);
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   827
                    }
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   828
                    if (input->dwFlags & TOUCHEVENTF_UP) {
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   829
                        SDL_SendTouch(touchId, input->dwID, SDL_FALSE, x, y, 1.0f);
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   830
                    }
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   831
                }
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   832
            }
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   833
            SDL_stack_free(inputs);
4932
0d1bb1ce9d15 Removed carriage returns
Sam Lantinga <slouken@libsdl.org>
parents: 4919
diff changeset
   834
7191
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   835
            data->videodata->CloseTouchInputHandle((HTOUCHINPUT)lParam);
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   836
            return 0;
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   837
        }
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   838
        break;
6523
62d0193a7a02 Fixed bug 1593 - SDL_DROPFILE event doesn't work on Windows
Sam Lantinga <slouken@libsdl.org>
parents: 6430
diff changeset
   839
62d0193a7a02 Fixed bug 1593 - SDL_DROPFILE event doesn't work on Windows
Sam Lantinga <slouken@libsdl.org>
parents: 6430
diff changeset
   840
    case WM_DROPFILES:
62d0193a7a02 Fixed bug 1593 - SDL_DROPFILE event doesn't work on Windows
Sam Lantinga <slouken@libsdl.org>
parents: 6430
diff changeset
   841
        {
62d0193a7a02 Fixed bug 1593 - SDL_DROPFILE event doesn't work on Windows
Sam Lantinga <slouken@libsdl.org>
parents: 6430
diff changeset
   842
            UINT i;
62d0193a7a02 Fixed bug 1593 - SDL_DROPFILE event doesn't work on Windows
Sam Lantinga <slouken@libsdl.org>
parents: 6430
diff changeset
   843
            HDROP drop = (HDROP) wParam;
62d0193a7a02 Fixed bug 1593 - SDL_DROPFILE event doesn't work on Windows
Sam Lantinga <slouken@libsdl.org>
parents: 6430
diff changeset
   844
            UINT count = DragQueryFile(drop, 0xFFFFFFFF, NULL, 0);
62d0193a7a02 Fixed bug 1593 - SDL_DROPFILE event doesn't work on Windows
Sam Lantinga <slouken@libsdl.org>
parents: 6430
diff changeset
   845
            for (i = 0; i < count; ++i) {
62d0193a7a02 Fixed bug 1593 - SDL_DROPFILE event doesn't work on Windows
Sam Lantinga <slouken@libsdl.org>
parents: 6430
diff changeset
   846
                UINT size = DragQueryFile(drop, i, NULL, 0) + 1;
62d0193a7a02 Fixed bug 1593 - SDL_DROPFILE event doesn't work on Windows
Sam Lantinga <slouken@libsdl.org>
parents: 6430
diff changeset
   847
                LPTSTR buffer = SDL_stack_alloc(TCHAR, size);
62d0193a7a02 Fixed bug 1593 - SDL_DROPFILE event doesn't work on Windows
Sam Lantinga <slouken@libsdl.org>
parents: 6430
diff changeset
   848
                if (buffer) {
62d0193a7a02 Fixed bug 1593 - SDL_DROPFILE event doesn't work on Windows
Sam Lantinga <slouken@libsdl.org>
parents: 6430
diff changeset
   849
                    if (DragQueryFile(drop, i, buffer, size)) {
62d0193a7a02 Fixed bug 1593 - SDL_DROPFILE event doesn't work on Windows
Sam Lantinga <slouken@libsdl.org>
parents: 6430
diff changeset
   850
                        char *file = WIN_StringToUTF8(buffer);
62d0193a7a02 Fixed bug 1593 - SDL_DROPFILE event doesn't work on Windows
Sam Lantinga <slouken@libsdl.org>
parents: 6430
diff changeset
   851
                        SDL_SendDropFile(file);
62d0193a7a02 Fixed bug 1593 - SDL_DROPFILE event doesn't work on Windows
Sam Lantinga <slouken@libsdl.org>
parents: 6430
diff changeset
   852
                        SDL_free(file);
62d0193a7a02 Fixed bug 1593 - SDL_DROPFILE event doesn't work on Windows
Sam Lantinga <slouken@libsdl.org>
parents: 6430
diff changeset
   853
                    }
62d0193a7a02 Fixed bug 1593 - SDL_DROPFILE event doesn't work on Windows
Sam Lantinga <slouken@libsdl.org>
parents: 6430
diff changeset
   854
                    SDL_stack_free(buffer);
62d0193a7a02 Fixed bug 1593 - SDL_DROPFILE event doesn't work on Windows
Sam Lantinga <slouken@libsdl.org>
parents: 6430
diff changeset
   855
                }
62d0193a7a02 Fixed bug 1593 - SDL_DROPFILE event doesn't work on Windows
Sam Lantinga <slouken@libsdl.org>
parents: 6430
diff changeset
   856
            }
62d0193a7a02 Fixed bug 1593 - SDL_DROPFILE event doesn't work on Windows
Sam Lantinga <slouken@libsdl.org>
parents: 6430
diff changeset
   857
            DragFinish(drop);
62d0193a7a02 Fixed bug 1593 - SDL_DROPFILE event doesn't work on Windows
Sam Lantinga <slouken@libsdl.org>
parents: 6430
diff changeset
   858
            return 0;
62d0193a7a02 Fixed bug 1593 - SDL_DROPFILE event doesn't work on Windows
Sam Lantinga <slouken@libsdl.org>
parents: 6430
diff changeset
   859
        }
62d0193a7a02 Fixed bug 1593 - SDL_DROPFILE event doesn't work on Windows
Sam Lantinga <slouken@libsdl.org>
parents: 6430
diff changeset
   860
        break;
62d0193a7a02 Fixed bug 1593 - SDL_DROPFILE event doesn't work on Windows
Sam Lantinga <slouken@libsdl.org>
parents: 6430
diff changeset
   861
    }
3566
07c8339c95c6 Fixed bug #905
Sam Lantinga <slouken@libsdl.org>
parents: 3565
diff changeset
   862
07c8339c95c6 Fixed bug #905
Sam Lantinga <slouken@libsdl.org>
parents: 3565
diff changeset
   863
    /* If there's a window proc, assume it's going to handle messages */
07c8339c95c6 Fixed bug #905
Sam Lantinga <slouken@libsdl.org>
parents: 3565
diff changeset
   864
    if (data->wndproc) {
07c8339c95c6 Fixed bug #905
Sam Lantinga <slouken@libsdl.org>
parents: 3565
diff changeset
   865
        return CallWindowProc(data->wndproc, hwnd, msg, wParam, lParam);
07c8339c95c6 Fixed bug #905
Sam Lantinga <slouken@libsdl.org>
parents: 3565
diff changeset
   866
    } else if (returnCode >= 0) {
07c8339c95c6 Fixed bug #905
Sam Lantinga <slouken@libsdl.org>
parents: 3565
diff changeset
   867
        return returnCode;
07c8339c95c6 Fixed bug #905
Sam Lantinga <slouken@libsdl.org>
parents: 3565
diff changeset
   868
    } else {
07c8339c95c6 Fixed bug #905
Sam Lantinga <slouken@libsdl.org>
parents: 3565
diff changeset
   869
        return CallWindowProc(DefWindowProc, hwnd, msg, wParam, lParam);
07c8339c95c6 Fixed bug #905
Sam Lantinga <slouken@libsdl.org>
parents: 3565
diff changeset
   870
    }
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   871
}
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   872
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   873
void
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   874
WIN_PumpEvents(_THIS)
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   875
{
7561
65f2b183e2aa Windows: Unstick shift keys in a timely manner when the OS loses a KEYUP event.
Ryan C. Gordon <icculus@icculus.org>
parents: 7543
diff changeset
   876
    const Uint8 *keystate;
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   877
    MSG msg;
8218
cf153cc95173 Make sure we don't stay in the windows event loop forever if there are lots of events coming in quickly.
Sam Lantinga <slouken@libsdl.org>
parents: 8212
diff changeset
   878
    DWORD start_ticks = GetTickCount();
cf153cc95173 Make sure we don't stay in the windows event loop forever if there are lots of events coming in quickly.
Sam Lantinga <slouken@libsdl.org>
parents: 8212
diff changeset
   879
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   880
    while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) {
8143
ce90b743882a Document Michael's changes adding TranslateMessage() back to the SDL message loop.
Sam Lantinga <slouken@libsdl.org>
parents: 8142
diff changeset
   881
        /* Always translate the message in case it's a non-SDL window (e.g. with Qt integration) */
ce90b743882a Document Michael's changes adding TranslateMessage() back to the SDL message loop.
Sam Lantinga <slouken@libsdl.org>
parents: 8142
diff changeset
   882
        TranslateMessage(&msg);
8218
cf153cc95173 Make sure we don't stay in the windows event loop forever if there are lots of events coming in quickly.
Sam Lantinga <slouken@libsdl.org>
parents: 8212
diff changeset
   883
        DispatchMessage( &msg );
cf153cc95173 Make sure we don't stay in the windows event loop forever if there are lots of events coming in quickly.
Sam Lantinga <slouken@libsdl.org>
parents: 8212
diff changeset
   884
cf153cc95173 Make sure we don't stay in the windows event loop forever if there are lots of events coming in quickly.
Sam Lantinga <slouken@libsdl.org>
parents: 8212
diff changeset
   885
        /* Make sure we don't busy loop here forever if there are lots of events coming in */
cf153cc95173 Make sure we don't stay in the windows event loop forever if there are lots of events coming in quickly.
Sam Lantinga <slouken@libsdl.org>
parents: 8212
diff changeset
   886
        if (SDL_TICKS_PASSED(msg.time, start_ticks)) {
cf153cc95173 Make sure we don't stay in the windows event loop forever if there are lots of events coming in quickly.
Sam Lantinga <slouken@libsdl.org>
parents: 8212
diff changeset
   887
            break;
cf153cc95173 Make sure we don't stay in the windows event loop forever if there are lots of events coming in quickly.
Sam Lantinga <slouken@libsdl.org>
parents: 8212
diff changeset
   888
        }
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   889
    }
7561
65f2b183e2aa Windows: Unstick shift keys in a timely manner when the OS loses a KEYUP event.
Ryan C. Gordon <icculus@icculus.org>
parents: 7543
diff changeset
   890
65f2b183e2aa Windows: Unstick shift keys in a timely manner when the OS loses a KEYUP event.
Ryan C. Gordon <icculus@icculus.org>
parents: 7543
diff changeset
   891
    /* Windows loses a shift KEYUP event when you have both pressed at once and let go of one.
65f2b183e2aa Windows: Unstick shift keys in a timely manner when the OS loses a KEYUP event.
Ryan C. Gordon <icculus@icculus.org>
parents: 7543
diff changeset
   892
       You won't get a KEYUP until both are released, and that keyup will only be for the second
65f2b183e2aa Windows: Unstick shift keys in a timely manner when the OS loses a KEYUP event.
Ryan C. Gordon <icculus@icculus.org>
parents: 7543
diff changeset
   893
       key you released. Take heroic measures and check the keystate as of the last handled event,
65f2b183e2aa Windows: Unstick shift keys in a timely manner when the OS loses a KEYUP event.
Ryan C. Gordon <icculus@icculus.org>
parents: 7543
diff changeset
   894
       and if we think a key is pressed when Windows doesn't, unstick it in SDL's state. */
65f2b183e2aa Windows: Unstick shift keys in a timely manner when the OS loses a KEYUP event.
Ryan C. Gordon <icculus@icculus.org>
parents: 7543
diff changeset
   895
    keystate = SDL_GetKeyboardState(NULL);
65f2b183e2aa Windows: Unstick shift keys in a timely manner when the OS loses a KEYUP event.
Ryan C. Gordon <icculus@icculus.org>
parents: 7543
diff changeset
   896
    if ((keystate[SDL_SCANCODE_LSHIFT] == SDL_PRESSED) && !(GetKeyState(VK_LSHIFT) & 0x8000)) {
65f2b183e2aa Windows: Unstick shift keys in a timely manner when the OS loses a KEYUP event.
Ryan C. Gordon <icculus@icculus.org>
parents: 7543
diff changeset
   897
        SDL_SendKeyboardKey(SDL_RELEASED, SDL_SCANCODE_LSHIFT);
65f2b183e2aa Windows: Unstick shift keys in a timely manner when the OS loses a KEYUP event.
Ryan C. Gordon <icculus@icculus.org>
parents: 7543
diff changeset
   898
    }
65f2b183e2aa Windows: Unstick shift keys in a timely manner when the OS loses a KEYUP event.
Ryan C. Gordon <icculus@icculus.org>
parents: 7543
diff changeset
   899
    if ((keystate[SDL_SCANCODE_RSHIFT] == SDL_PRESSED) && !(GetKeyState(VK_RSHIFT) & 0x8000)) {
65f2b183e2aa Windows: Unstick shift keys in a timely manner when the OS loses a KEYUP event.
Ryan C. Gordon <icculus@icculus.org>
parents: 7543
diff changeset
   900
        SDL_SendKeyboardKey(SDL_RELEASED, SDL_SCANCODE_RSHIFT);
65f2b183e2aa Windows: Unstick shift keys in a timely manner when the OS loses a KEYUP event.
Ryan C. Gordon <icculus@icculus.org>
parents: 7543
diff changeset
   901
    }
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   902
}
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   903
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   904
static int app_registered = 0;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   905
LPTSTR SDL_Appname = NULL;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   906
Uint32 SDL_Appstyle = 0;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   907
HINSTANCE SDL_Instance = NULL;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   908
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   909
/* Register the class for this application */
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   910
int
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   911
SDL_RegisterApp(char *name, Uint32 style, void *hInst)
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   912
{
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   913
    WNDCLASS class;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   914
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   915
    /* Only do this once... */
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   916
    if (app_registered) {
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   917
        ++app_registered;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   918
        return (0);
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   919
    }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   920
    if (!name && !SDL_Appname) {
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   921
        name = "SDL_app";
5086
c2539ff054c8 Fixed compiling on Windows Mobile SDK 5.0 with Visual Studio 2008
Sam Lantinga <slouken@libsdl.org>
parents: 5062
diff changeset
   922
#if defined(CS_BYTEALIGNCLIENT) || defined(CS_OWNDC)
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   923
        SDL_Appstyle = (CS_BYTEALIGNCLIENT | CS_OWNDC);
5086
c2539ff054c8 Fixed compiling on Windows Mobile SDK 5.0 with Visual Studio 2008
Sam Lantinga <slouken@libsdl.org>
parents: 5062
diff changeset
   924
#endif
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   925
        SDL_Instance = hInst ? hInst : GetModuleHandle(NULL);
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   926
    }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   927
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   928
    if (name) {
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   929
        SDL_Appname = WIN_UTF8ToString(name);
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   930
        SDL_Appstyle = style;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   931
        SDL_Instance = hInst ? hInst : GetModuleHandle(NULL);
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   932
    }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   933
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   934
    /* Register the application class */
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   935
    class.hCursor = NULL;
2710
44e49d3fa6cf Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents: 2324
diff changeset
   936
    class.hIcon =
44e49d3fa6cf Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents: 2324
diff changeset
   937
        LoadImage(SDL_Instance, SDL_Appname, IMAGE_ICON, 0, 0,
44e49d3fa6cf Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents: 2324
diff changeset
   938
                  LR_DEFAULTCOLOR);
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   939
    class.lpszMenuName = NULL;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   940
    class.lpszClassName = SDL_Appname;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   941
    class.hbrBackground = NULL;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   942
    class.hInstance = SDL_Instance;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   943
    class.style = SDL_Appstyle;
4733
983eb9d5ed31 Change SDL to not use DefWindowProc as the window class' window procedure.
dewyatt
parents: 4429
diff changeset
   944
    class.lpfnWndProc = WIN_WindowProc;
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   945
    class.cbWndExtra = 0;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   946
    class.cbClsExtra = 0;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   947
    if (!RegisterClass(&class)) {
7037
3fedf1f25b94 Make SDL_SetError and friends unconditionally return -1.
Ryan C. Gordon <icculus@icculus.org>
parents: 7029
diff changeset
   948
        return SDL_SetError("Couldn't register application class");
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   949
    }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   950
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   951
    app_registered = 1;
7037
3fedf1f25b94 Make SDL_SetError and friends unconditionally return -1.
Ryan C. Gordon <icculus@icculus.org>
parents: 7029
diff changeset
   952
    return 0;
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   953
}
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   954
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   955
/* Unregisters the windowclass registered in SDL_RegisterApp above. */
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   956
void
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   957
SDL_UnregisterApp()
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   958
{
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   959
    WNDCLASS class;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   960
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   961
    /* SDL_RegisterApp might not have been called before */
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   962
    if (!app_registered) {
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   963
        return;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   964
    }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   965
    --app_registered;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   966
    if (app_registered == 0) {
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   967
        /* Check for any registered window classes. */
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   968
        if (GetClassInfo(SDL_Instance, SDL_Appname, &class)) {
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   969
            UnregisterClass(SDL_Appname, SDL_Instance);
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   970
        }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   971
        SDL_free(SDL_Appname);
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   972
        SDL_Appname = NULL;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   973
    }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   974
}
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   975
6044
35448a5ea044 Lots of fixes importing SDL source wholesale into a new iOS project
Sam Lantinga <slouken@libsdl.org>
parents: 5889
diff changeset
   976
#endif /* SDL_VIDEO_DRIVER_WINDOWS */
35448a5ea044 Lots of fixes importing SDL source wholesale into a new iOS project
Sam Lantinga <slouken@libsdl.org>
parents: 5889
diff changeset
   977
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   978
/* vi: set ts=4 sw=4 expandtab: */