src/video/windows/SDL_windowsevents.c
author Sam Lantinga <slouken@libsdl.org>
Fri, 16 Aug 2013 15:35:10 -0700
changeset 7645 cc775832d501
parent 7631 9fcda7425ccc
child 7646 42c3b0c24c6c
permissions -rw-r--r--
Fixed bug 1876 - SDL_TEXTINPUT only returns '?' (0x3F) in event.text.text with Khmer language input Andreas The issue comes down to this line on MSDN: "TranslateMessage produces WM_CHAR messages only for keys that are mapped to ASCII characters by the keyboard driver." "WM_KEYDOWN and WM_KEYUP combinations produce a WM_CHAR or WM_DEADCHAR message. WM_SYSKEYDOWN and WM_SYSKEYUP combinations produce a WM_SYSCHAR or WM_SYSDEADCHAR message." Except for WM_CHAR, none of these messages are used in SDL. Hence TranslateMessage should be dropped entirely and proper handling be included in the WM_KEYDOWN event. Currently TranslateMessage is called for every message even if it must not be called in certain cases (like "An application should not call TranslateMessage if the TranslateAccelerator function returns a nonzero value."). WM_CHAR message handling should remain for external processes posting these messages - additionally, WM_UNICHAR should be added. I made a patch for src/video/windows/SDL_windowsevents.c that seems to work fine. It doesn't solve the "missing" composition for Khmer, but at least input for languages that cannot be mapped to ASCII characters (and for which IME is not used) will now work on Windows.
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
6885
700f1b25f77f Happy New Year!
Sam Lantinga <slouken@libsdl.org>
parents: 6862
diff changeset
     3
  Copyright (C) 1997-2013 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
*/
6044
35448a5ea044 Lots of fixes importing SDL source wholesale into a new iOS project
Sam Lantinga <slouken@libsdl.org>
parents: 5889
diff changeset
    21
#include "SDL_config.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"
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
    28
#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
    29
#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
    30
#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
    31
#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
    32
6523
62d0193a7a02 Fixed bug 1593 - SDL_DROPFILE event doesn't work on Windows
Sam Lantinga <slouken@libsdl.org>
parents: 6430
diff changeset
    33
/* Dropfile support */
62d0193a7a02 Fixed bug 1593 - SDL_DROPFILE event doesn't work on Windows
Sam Lantinga <slouken@libsdl.org>
parents: 6430
diff changeset
    34
#include <shellapi.h>
62d0193a7a02 Fixed bug 1593 - SDL_DROPFILE event doesn't work on Windows
Sam Lantinga <slouken@libsdl.org>
parents: 6430
diff changeset
    35
7276
37814e7eeff3 Win32: Fix issue with SetCapture & negative values.
Jørgen P. Tjernø <jorgen@valvesoftware.com>
parents: 7275
diff changeset
    36
/* 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
    37
#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
    38
4868
d6adaafcfb10 Fixed compiling with Visual Studio 2008
Sam Lantinga <slouken@libsdl.org>
parents: 4862
diff changeset
    39
/*#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
    40
#ifdef WMMSG_DEBUG
7191
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
    41
#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
    42
#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
    43
#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
    44
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
/* 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
    46
#define REPEATED_KEYMASK    (1<<30)
f537a293b3da Windows also remaps the numeric keypad... grrr
Sam Lantinga <slouken@libsdl.org>
parents: 2313
diff changeset
    47
#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
    48
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
    49
#define VK_ENTER    10          /* Keypad Enter ... no VKEY defined? */
6931
843f9c1b16b8 Fixed cygwin compile
Sam Lantinga <slouken@libsdl.org>
parents: 6929
diff changeset
    50
#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
    51
#define VK_OEM_NEC_EQUAL 0x92
6931
843f9c1b16b8 Fixed cygwin compile
Sam Lantinga <slouken@libsdl.org>
parents: 6929
diff changeset
    52
#endif
2313
012ec5192dfa Added support for keypad enter
Sam Lantinga <slouken@libsdl.org>
parents: 2312
diff changeset
    53
2127
3bcc26b74e42 Merged r3087:3089 from branches/SDL-1.2: WM_XBUTTON support.
Ryan C. Gordon <icculus@icculus.org>
parents: 1951
diff changeset
    54
/* 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
    55
#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
    56
#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
    57
#endif
3bcc26b74e42 Merged r3087:3089 from branches/SDL-1.2: WM_XBUTTON support.
Ryan C. Gordon <icculus@icculus.org>
parents: 1951
diff changeset
    58
#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
    59
#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
    60
#endif
3bcc26b74e42 Merged r3087:3089 from branches/SDL-1.2: WM_XBUTTON support.
Ryan C. Gordon <icculus@icculus.org>
parents: 1951
diff changeset
    61
#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
    62
#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
    63
#endif
2733
264037dd3c7a Fix for mingw compilation by Alam.
Edgar Simo <bobbens@gmail.com>
parents: 2726
diff changeset
    64
#ifndef WM_INPUT
264037dd3c7a Fix for mingw compilation by Alam.
Edgar Simo <bobbens@gmail.com>
parents: 2726
diff changeset
    65
#define WM_INPUT 0x00ff
264037dd3c7a Fix for mingw compilation by Alam.
Edgar Simo <bobbens@gmail.com>
parents: 2726
diff changeset
    66
#endif
4932
0d1bb1ce9d15 Removed carriage returns
Sam Lantinga <slouken@libsdl.org>
parents: 4919
diff changeset
    67
#ifndef WM_TOUCH
4868
d6adaafcfb10 Fixed compiling with Visual Studio 2008
Sam Lantinga <slouken@libsdl.org>
parents: 4862
diff changeset
    68
#define WM_TOUCH 0x0240
4932
0d1bb1ce9d15 Removed carriage returns
Sam Lantinga <slouken@libsdl.org>
parents: 4919
diff changeset
    69
#endif
4919
716b2cbf4c9e First pass at Windows multi-touch gesture support
Sam Lantinga <slouken@libsdl.org>
parents: 4902
diff changeset
    70
7191
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
    71
static SDL_Scancode
6973
ae30ec97694a Fixed 64-bit compile warnings on Visual C++
Sam Lantinga <slouken@libsdl.org>
parents: 6951
diff changeset
    72
WindowsScanCodeToSDLScanCode( LPARAM lParam, WPARAM wParam )
6922
Jørgen P. Tjernø <jorgen@valvesoftware.com>
parents: 6885
diff changeset
    73
{
7191
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
    74
    SDL_Scancode code;
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
    75
    char bIsExtended;
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
    76
    int nScanCode = ( lParam >> 16 ) & 0xFF;
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
    /* 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
    79
    if ( nScanCode == 0 || nScanCode == 0x45 )
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
    80
    {
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
    81
        switch( wParam )
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
    82
        {
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
    83
        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
    84
        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
    85
        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
    86
        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
    87
        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
    88
        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
    89
        case VK_NUMLOCK: return SDL_SCANCODE_NUMLOCKCLEAR;
6922
Jørgen P. Tjernø <jorgen@valvesoftware.com>
parents: 6885
diff changeset
    90
7191
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
    91
        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
    92
        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
    93
        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
    94
        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
    95
        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
    96
        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
    97
        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
    98
        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
    99
        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
   100
        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
   101
        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
   102
        case VK_F24: return SDL_SCANCODE_F24;
6922
Jørgen P. Tjernø <jorgen@valvesoftware.com>
parents: 6885
diff changeset
   103
7191
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   104
        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
   105
        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
   106
        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
   107
        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
   108
        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
   109
        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
   110
        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
   111
        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
   112
        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
   113
        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
   114
        case VK_VOLUME_UP: return SDL_SCANCODE_VOLUMEUP;
6922
Jørgen P. Tjernø <jorgen@valvesoftware.com>
parents: 6885
diff changeset
   115
7191
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   116
        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
   117
        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
   118
        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
   119
        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
   120
        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
   121
        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
   122
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   123
        case VK_OEM_102: return SDL_SCANCODE_NONUSBACKSLASH;
6922
Jørgen P. Tjernø <jorgen@valvesoftware.com>
parents: 6885
diff changeset
   124
7191
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   125
        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
   126
        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
   127
        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
   128
        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
   129
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   130
        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
   131
        case VK_LAUNCH_APP2: return SDL_SCANCODE_APP2;
6922
Jørgen P. Tjernø <jorgen@valvesoftware.com>
parents: 6885
diff changeset
   132
7191
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   133
        default: return SDL_SCANCODE_UNKNOWN;
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   134
        }
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   135
    }
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
    if ( nScanCode > 127 )
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   138
        return SDL_SCANCODE_UNKNOWN;
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   139
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   140
    code = windows_scancode_table[nScanCode];
6922
Jørgen P. Tjernø <jorgen@valvesoftware.com>
parents: 6885
diff changeset
   141
7191
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   142
    bIsExtended = ( lParam & ( 1 << 24 ) ) != 0;
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   143
    if ( !bIsExtended )
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   144
    {
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   145
        switch ( code )
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   146
        {
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   147
        case SDL_SCANCODE_HOME:
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   148
            return SDL_SCANCODE_KP_7;
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   149
        case SDL_SCANCODE_UP:
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   150
            return SDL_SCANCODE_KP_8;
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   151
        case SDL_SCANCODE_PAGEUP:
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   152
            return SDL_SCANCODE_KP_9;
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   153
        case SDL_SCANCODE_LEFT:
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   154
            return SDL_SCANCODE_KP_4;
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   155
        case SDL_SCANCODE_RIGHT:
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   156
            return SDL_SCANCODE_KP_6;
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   157
        case SDL_SCANCODE_END:
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   158
            return SDL_SCANCODE_KP_1;
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   159
        case SDL_SCANCODE_DOWN:
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   160
            return SDL_SCANCODE_KP_2;
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   161
        case SDL_SCANCODE_PAGEDOWN:
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   162
            return SDL_SCANCODE_KP_3;
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   163
        case SDL_SCANCODE_INSERT:
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   164
            return SDL_SCANCODE_KP_0;
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   165
        case SDL_SCANCODE_DELETE:
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   166
            return SDL_SCANCODE_KP_PERIOD;
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   167
        case SDL_SCANCODE_PRINTSCREEN:
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   168
            return SDL_SCANCODE_KP_MULTIPLY;
7029
377cc88f3dc8 Fixed compiler warning with Cygwin
Sam Lantinga <slouken@libsdl.org>
parents: 6973
diff changeset
   169
        default:
377cc88f3dc8 Fixed compiler warning with Cygwin
Sam Lantinga <slouken@libsdl.org>
parents: 6973
diff changeset
   170
            break;
7191
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   171
        }
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   172
    }
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   173
    else
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   174
    {
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   175
        switch ( code )
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
        case SDL_SCANCODE_RETURN:
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   178
            return SDL_SCANCODE_KP_ENTER;
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   179
        case SDL_SCANCODE_LALT:
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   180
            return SDL_SCANCODE_RALT;
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   181
        case SDL_SCANCODE_LCTRL:
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   182
            return SDL_SCANCODE_RCTRL;
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   183
        case SDL_SCANCODE_SLASH:
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   184
            return SDL_SCANCODE_KP_DIVIDE;
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   185
        case SDL_SCANCODE_CAPSLOCK:
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   186
            return SDL_SCANCODE_KP_PLUS;
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   187
        default:
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   188
            break;
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   189
        }
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   190
    }
6922
Jørgen P. Tjernø <jorgen@valvesoftware.com>
parents: 6885
diff changeset
   191
7191
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   192
    return code;
6922
Jørgen P. Tjernø <jorgen@valvesoftware.com>
parents: 6885
diff changeset
   193
}
Jørgen P. Tjernø <jorgen@valvesoftware.com>
parents: 6885
diff changeset
   194
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
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
   197
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
   198
{
7191
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   199
    if ( bwParamMousePressed && !bSDLMousePressed )
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   200
    {
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   201
        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
   202
    }
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   203
    else 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_RELEASED, button);
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   206
    }
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
   207
}
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
   208
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
   209
/*
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
   210
* 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
   211
*  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
   212
*/
7191
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   213
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
   214
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
   215
{
7191
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   216
    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
   217
    {
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   218
        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
   219
        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
   220
        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
   221
        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
   222
        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
   223
        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
   224
        data->mouse_button_flags = wParam;
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   225
    }
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
   226
}
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
   227
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
   228
7191
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   229
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
   230
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
   231
{
7191
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   232
    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
   233
    {
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   234
        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
   235
        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
   236
            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
   237
        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
   238
            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
   239
        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
   240
            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
   241
        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
   242
            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
   243
        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
   244
            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
   245
        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
   246
            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
   247
        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
   248
            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
   249
        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
   250
            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
   251
        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
   252
            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
   253
        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
   254
            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
   255
        data->mouse_button_flags = rawButtons;
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   256
    }
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
   257
}
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
   258
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
   259
static SDL_FORCE_INLINE BOOL
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
   260
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
   261
{
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
   262
    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
   263
        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
   264
        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
   265
    } 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
   266
        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
   267
        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
   268
        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
   269
    } 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
   270
        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
   271
        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
   272
        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
   273
        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
   274
    } 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
   275
        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
   276
        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
   277
        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
   278
        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
   279
        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
   280
    } 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
   281
        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
   282
    }
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
   283
    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
   284
}
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
   285
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
   286
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
   287
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
   288
{
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
   289
    SDL_WindowData *data;
3566
07c8339c95c6 Fixed bug #905
Sam Lantinga <slouken@libsdl.org>
parents: 3565
diff changeset
   290
    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
   291
1951
7177581dc9fa Initial work on X11 window code in.
Sam Lantinga <slouken@libsdl.org>
parents: 1913
diff changeset
   292
    /* 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
   293
    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
   294
        SDL_SysWMmsg wmmsg;
7177581dc9fa Initial work on X11 window code in.
Sam Lantinga <slouken@libsdl.org>
parents: 1913
diff changeset
   295
7177581dc9fa Initial work on X11 window code in.
Sam Lantinga <slouken@libsdl.org>
parents: 1913
diff changeset
   296
        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
   297
        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
   298
        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
   299
        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
   300
        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
   301
        wmmsg.msg.win.lParam = lParam;
1951
7177581dc9fa Initial work on X11 window code in.
Sam Lantinga <slouken@libsdl.org>
parents: 1913
diff changeset
   302
        SDL_SendSysWMEvent(&wmmsg);
7177581dc9fa Initial work on X11 window code in.
Sam Lantinga <slouken@libsdl.org>
parents: 1913
diff changeset
   303
    }
7177581dc9fa Initial work on X11 window code in.
Sam Lantinga <slouken@libsdl.org>
parents: 1913
diff changeset
   304
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
   305
    /* 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
   306
    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
   307
    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
   308
        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
   309
    }
4650
7ad7a473b086 More fixes for windows. Disabled tablet code.
jimtla
parents: 4429
diff changeset
   310
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
   311
#ifdef WMMSG_DEBUG
7191
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   312
    {
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   313
        FILE *log = fopen("wmmsg.txt", "a");
1913
83420da906a5 Implemented Windows OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents: 1895
diff changeset
   314
        fprintf(log, "Received windows message: %p ", hwnd);
83420da906a5 Implemented Windows OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents: 1895
diff changeset
   315
        if (msg > MAX_WMMSG) {
83420da906a5 Implemented Windows OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents: 1895
diff changeset
   316
            fprintf(log, "%d", msg);
83420da906a5 Implemented Windows OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents: 1895
diff changeset
   317
        } else {
83420da906a5 Implemented Windows OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents: 1895
diff changeset
   318
            fprintf(log, "%s", wmtab[msg]);
83420da906a5 Implemented Windows OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents: 1895
diff changeset
   319
        }
83420da906a5 Implemented Windows OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents: 1895
diff changeset
   320
        fprintf(log, " -- 0x%X, 0x%X\n", wParam, lParam);
83420da906a5 Implemented Windows OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents: 1895
diff changeset
   321
        fclose(log);
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
   322
    }
4868
d6adaafcfb10 Fixed compiling with Visual Studio 2008
Sam Lantinga <slouken@libsdl.org>
parents: 4862
diff changeset
   323
#endif
2710
44e49d3fa6cf Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents: 2324
diff changeset
   324
4752
dc7bdcf06367 Initial IMM implementation.
dewyatt
parents: 4746
diff changeset
   325
    if (IME_HandleMessage(hwnd, msg, wParam, &lParam, data->videodata))
dc7bdcf06367 Initial IMM implementation.
dewyatt
parents: 4746
diff changeset
   326
        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
   327
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
   328
    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
   329
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
   330
    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
   331
        {
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
   332
            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
   333
                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
   334
            } 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
   335
                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
   336
            }
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
        }
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
   338
        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
   339
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
   340
    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
   341
        {
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
   342
            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
   343
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
   344
            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
   345
            if (!minimized && (LOWORD(wParam) != WA_INACTIVE)) {
7191
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   346
                Uint32 mouseFlags;
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   347
                SHORT keyState;
6945
d97f9251ac3a sdl - check for both the up and down flags being set in the raw input calls. Also use WM_ACTIVE to resync mouse buttons on activate
Sam Lantinga <slouken@libsdl.org>
parents: 6944
diff changeset
   348
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
   349
                SDL_SendWindowEvent(data->window, SDL_WINDOWEVENT_SHOWN, 0, 0);
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
   350
                SDL_SendWindowEvent(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
   351
                                    SDL_WINDOWEVENT_RESTORED, 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
   352
                if (IsZoomed(hwnd)) {
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
   353
                    SDL_SendWindowEvent(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
   354
                                        SDL_WINDOWEVENT_MAXIMIZED, 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
   355
                }
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
   356
                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
   357
                    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
   358
                }
7191
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   359
                /* mouse buttons may have changed state here, we need
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   360
                to resync them, but we will get a WM_MOUSEMOVE right away which will fix
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   361
                things up if in non raw mode also
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   362
                */
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   363
                mouseFlags = SDL_GetMouseState( NULL, NULL );
6945
d97f9251ac3a sdl - check for both the up and down flags being set in the raw input calls. Also use WM_ACTIVE to resync mouse buttons on activate
Sam Lantinga <slouken@libsdl.org>
parents: 6944
diff changeset
   364
7191
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   365
                keyState = GetAsyncKeyState( VK_LBUTTON );
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   366
                WIN_CheckWParamMouseButton( ( keyState & 0x8000 ), (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
   367
                keyState = GetAsyncKeyState( VK_RBUTTON );
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   368
                WIN_CheckWParamMouseButton( ( keyState & 0x8000 ), (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
   369
                keyState = GetAsyncKeyState( VK_MBUTTON );
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   370
                WIN_CheckWParamMouseButton( ( keyState & 0x8000 ), (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
   371
                keyState = GetAsyncKeyState( VK_XBUTTON1 );
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   372
                WIN_CheckWParamMouseButton( ( keyState & 0x8000 ), (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
   373
                keyState = GetAsyncKeyState( VK_XBUTTON2 );
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   374
                WIN_CheckWParamMouseButton( ( keyState & 0x8000 ), (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
   375
                data->mouse_button_flags = 0;
6350
19545983ac76 Patrick Baggett implemented relative mouse mode on Win32
Sam Lantinga <slouken@libsdl.org>
parents: 6138
diff changeset
   376
7191
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   377
                if(SDL_GetMouse()->relative_mode) {
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   378
                    LONG cx, cy;
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   379
                    RECT rect;
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   380
                    GetWindowRect(hwnd, &rect);
6350
19545983ac76 Patrick Baggett implemented relative mouse mode on Win32
Sam Lantinga <slouken@libsdl.org>
parents: 6138
diff changeset
   381
7191
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   382
                    cx = (rect.left + rect.right) / 2;
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   383
                    cy = (rect.top + rect.bottom) / 2;
6350
19545983ac76 Patrick Baggett implemented relative mouse mode on Win32
Sam Lantinga <slouken@libsdl.org>
parents: 6138
diff changeset
   384
7191
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   385
                    /* Make an absurdly small clip rect */
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   386
                    rect.left = cx-1;
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   387
                    rect.right = cx+1;
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   388
                    rect.top = cy-1;
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   389
                    rect.bottom = cy+1;
6350
19545983ac76 Patrick Baggett implemented relative mouse mode on Win32
Sam Lantinga <slouken@libsdl.org>
parents: 6138
diff changeset
   390
7191
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   391
                    ClipCursor(&rect);
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   392
                }
6350
19545983ac76 Patrick Baggett implemented relative mouse mode on Win32
Sam Lantinga <slouken@libsdl.org>
parents: 6138
diff changeset
   393
4504
9faebccfefb3 Amazingly the Windows code is almost identical to the Mac OS X code. :)
Sam Lantinga <slouken@libsdl.org>
parents: 4500
diff changeset
   394
                /*
9faebccfefb3 Amazingly the Windows code is almost identical to the Mac OS X code. :)
Sam Lantinga <slouken@libsdl.org>
parents: 4500
diff changeset
   395
                 * 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
   396
                 */
9faebccfefb3 Amazingly the Windows code is almost identical to the Mac OS X code. :)
Sam Lantinga <slouken@libsdl.org>
parents: 4500
diff changeset
   397
                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
   398
            } 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
   399
                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
   400
                    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
   401
                }
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
   402
                if (minimized) {
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
   403
                    SDL_SendWindowEvent(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
   404
                                        SDL_WINDOWEVENT_MINIMIZED, 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
   405
                }
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
   406
            }
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
   407
        }
3566
07c8339c95c6 Fixed bug #905
Sam Lantinga <slouken@libsdl.org>
parents: 3565
diff changeset
   408
        returnCode = 0;
07c8339c95c6 Fixed bug #905
Sam Lantinga <slouken@libsdl.org>
parents: 3565
diff changeset
   409
        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
   410
7191
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   411
    case WM_MOUSEMOVE:
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   412
        if( !SDL_GetMouse()->relative_mode )
7276
37814e7eeff3 Win32: Fix issue with SetCapture & negative values.
Jørgen P. Tjernø <jorgen@valvesoftware.com>
parents: 7275
diff changeset
   413
            SDL_SendMouseMotion(data->window, 0, 0, GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam));
7191
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   414
        /* 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
   415
    case WM_LBUTTONUP:
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   416
    case WM_RBUTTONUP:
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   417
    case WM_MBUTTONUP:
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   418
    case WM_XBUTTONUP:
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   419
    case WM_LBUTTONDOWN:
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   420
    case WM_RBUTTONDOWN:
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   421
    case WM_MBUTTONDOWN:
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   422
    case WM_XBUTTONDOWN:
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   423
        if( !SDL_GetMouse()->relative_mode )
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   424
            WIN_CheckWParamMouseButtons( wParam, data );
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   425
        break;
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3102
diff changeset
   426
7191
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   427
    case WM_INPUT:
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   428
    {
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   429
        HRAWINPUT hRawInput = (HRAWINPUT)lParam;
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   430
        RAWINPUT inp;
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   431
        UINT size = sizeof(inp);
6782
582d35419e8a Improvements from Alfred:
Sam Lantinga <slouken@libsdl.org>
parents: 6682
diff changeset
   432
7191
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   433
        if(!SDL_GetMouse()->relative_mode)
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   434
            break;
6782
582d35419e8a Improvements from Alfred:
Sam Lantinga <slouken@libsdl.org>
parents: 6682
diff changeset
   435
7191
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   436
        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
   437
7191
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   438
        /* Mouse data */
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   439
        if(inp.header.dwType == RIM_TYPEMOUSE)
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   440
        {
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   441
            RAWMOUSE* mouse = &inp.data.mouse;
6350
19545983ac76 Patrick Baggett implemented relative mouse mode on Win32
Sam Lantinga <slouken@libsdl.org>
parents: 6138
diff changeset
   442
7191
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   443
            if((mouse->usFlags & 0x01) == MOUSE_MOVE_RELATIVE)
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   444
            {
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   445
                SDL_SendMouseMotion(data->window, 0, 1, (int)mouse->lLastX, (int)mouse->lLastY);
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   446
            }
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   447
            else
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   448
            {
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   449
                /* synthesize relative moves from the abs position */
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   450
                static SDL_Point initialMousePoint;
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   451
                if ( initialMousePoint.x == 0 && initialMousePoint.y == 0 )
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
                    initialMousePoint.x = mouse->lLastX;
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   454
                    initialMousePoint.y = mouse->lLastY;
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   455
                }
6350
19545983ac76 Patrick Baggett implemented relative mouse mode on Win32
Sam Lantinga <slouken@libsdl.org>
parents: 6138
diff changeset
   456
7191
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   457
                SDL_SendMouseMotion(data->window, 0, 1, (int)(mouse->lLastX-initialMousePoint.x), (int)(mouse->lLastY-initialMousePoint.y) );
6782
582d35419e8a Improvements from Alfred:
Sam Lantinga <slouken@libsdl.org>
parents: 6682
diff changeset
   458
7191
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   459
                initialMousePoint.x = mouse->lLastX;
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   460
                initialMousePoint.y = mouse->lLastY;
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   461
            }
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   462
            WIN_CheckRawMouseButtons( mouse->usButtonFlags, data );
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   463
        }
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   464
        break;
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   465
    }
6350
19545983ac76 Patrick Baggett implemented relative mouse mode on Win32
Sam Lantinga <slouken@libsdl.org>
parents: 6138
diff changeset
   466
5049
28003ba91f57 John Wilson 2010-08-17 17:09:16 PDT
Sam Lantinga <slouken@libsdl.org>
parents: 4932
diff changeset
   467
    case WM_MOUSEWHEEL:
28003ba91f57 John Wilson 2010-08-17 17:09:16 PDT
Sam Lantinga <slouken@libsdl.org>
parents: 4932
diff changeset
   468
        {
7191
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   469
            /* FIXME: This may need to accumulate deltas up to WHEEL_DELTA */
6861
c1c9eab3bd20 Fixed mouse wheel delta on Windows
Sam Lantinga <slouken@libsdl.org>
parents: 6837
diff changeset
   470
            short motion = GET_WHEEL_DELTA_WPARAM(wParam) / WHEEL_DELTA;
5049
28003ba91f57 John Wilson 2010-08-17 17:09:16 PDT
Sam Lantinga <slouken@libsdl.org>
parents: 4932
diff changeset
   471
6950
1ddb72193079 Added a mouse ID to the mouse events, which set to the special value SDL_TOUCH_MOUSEID for mouse events simulated by touch input.
Sam Lantinga <slouken@libsdl.org>
parents: 6947
diff changeset
   472
            SDL_SendMouseWheel(data->window, 0, 0, motion);
5049
28003ba91f57 John Wilson 2010-08-17 17:09:16 PDT
Sam Lantinga <slouken@libsdl.org>
parents: 4932
diff changeset
   473
            break;
28003ba91f57 John Wilson 2010-08-17 17:09:16 PDT
Sam Lantinga <slouken@libsdl.org>
parents: 4932
diff changeset
   474
        }
28003ba91f57 John Wilson 2010-08-17 17:09:16 PDT
Sam Lantinga <slouken@libsdl.org>
parents: 4932
diff changeset
   475
5086
c2539ff054c8 Fixed compiling on Windows Mobile SDK 5.0 with Visual Studio 2008
Sam Lantinga <slouken@libsdl.org>
parents: 5062
diff changeset
   476
#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
   477
    case WM_MOUSELEAVE:
7275
0a6b3b998814 Win32: Ignore WM_MOUSELEAVE in relative mode.
Jørgen P. Tjernø <jorgen@valvesoftware.com>
parents: 7191
diff changeset
   478
        if (SDL_GetMouseFocus() == data->window && !SDL_GetMouse()->relative_mode) {
0a6b3b998814 Win32: Ignore WM_MOUSELEAVE in relative mode.
Jørgen P. Tjernø <jorgen@valvesoftware.com>
parents: 7191
diff changeset
   479
            POINT cursorPos;
0a6b3b998814 Win32: Ignore WM_MOUSELEAVE in relative mode.
Jørgen P. Tjernø <jorgen@valvesoftware.com>
parents: 7191
diff changeset
   480
            GetCursorPos(&cursorPos);
0a6b3b998814 Win32: Ignore WM_MOUSELEAVE in relative mode.
Jørgen P. Tjernø <jorgen@valvesoftware.com>
parents: 7191
diff changeset
   481
            ScreenToClient(hwnd, &cursorPos);
0a6b3b998814 Win32: Ignore WM_MOUSELEAVE in relative mode.
Jørgen P. Tjernø <jorgen@valvesoftware.com>
parents: 7191
diff changeset
   482
            SDL_SendMouseMotion(data->window, 0, 0, cursorPos.x, cursorPos.y);
7191
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   483
            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
   484
        }
3566
07c8339c95c6 Fixed bug #905
Sam Lantinga <slouken@libsdl.org>
parents: 3565
diff changeset
   485
        returnCode = 0;
07c8339c95c6 Fixed bug #905
Sam Lantinga <slouken@libsdl.org>
parents: 3565
diff changeset
   486
        break;
5086
c2539ff054c8 Fixed compiling on Windows Mobile SDK 5.0 with Visual Studio 2008
Sam Lantinga <slouken@libsdl.org>
parents: 5062
diff changeset
   487
#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
   488
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
   489
    case WM_KEYDOWN:
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
   490
        {
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
   491
            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
   492
            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
   493
            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
   494
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
   495
            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
   496
            if (ToUnicode(wParam, (lParam >> 16) & 0xff, keyboardState, (LPWSTR)&utf32, 1, 0) > 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
   497
                WORD repitition;
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
   498
                for (repitition = lParam & 0xffff; repitition > 0; repitition--) {
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
   499
                    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
   500
                    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
   501
                }
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
   502
            }
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
   503
        }
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
   504
        // no 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
   505
    case WM_SYSKEYDOWN:
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
   506
        {
7191
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   507
            SDL_Scancode code = WindowsScanCodeToSDLScanCode( lParam, wParam );
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   508
            if ( code != SDL_SCANCODE_UNKNOWN ) {
6922
Jørgen P. Tjernø <jorgen@valvesoftware.com>
parents: 6885
diff changeset
   509
                SDL_SendKeyboardKey(SDL_PRESSED, code );
2308
514f7c1651fc Untested Win32 keyboard scancode code.
Sam Lantinga <slouken@libsdl.org>
parents: 2284
diff changeset
   510
            }
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
   511
        }
3566
07c8339c95c6 Fixed bug #905
Sam Lantinga <slouken@libsdl.org>
parents: 3565
diff changeset
   512
        returnCode = 0;
07c8339c95c6 Fixed bug #905
Sam Lantinga <slouken@libsdl.org>
parents: 3565
diff changeset
   513
        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
   514
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
   515
    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
   516
    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
   517
        {
6938
b272d47f70a7 Cleaned up and fixed the Windows keyboard mapping code.
Sam Lantinga <slouken@libsdl.org>
parents: 6931
diff changeset
   518
            SDL_Scancode code = WindowsScanCodeToSDLScanCode( lParam, wParam );
b272d47f70a7 Cleaned up and fixed the Windows keyboard mapping code.
Sam Lantinga <slouken@libsdl.org>
parents: 6931
diff changeset
   519
            if ( code != SDL_SCANCODE_UNKNOWN ) {
b272d47f70a7 Cleaned up and fixed the Windows keyboard mapping code.
Sam Lantinga <slouken@libsdl.org>
parents: 6931
diff changeset
   520
                if (code == SDL_SCANCODE_PRINTSCREEN &&
b272d47f70a7 Cleaned up and fixed the Windows keyboard mapping code.
Sam Lantinga <slouken@libsdl.org>
parents: 6931
diff changeset
   521
                    SDL_GetKeyboardState(NULL)[code] == SDL_RELEASED) {
b272d47f70a7 Cleaned up and fixed the Windows keyboard mapping code.
Sam Lantinga <slouken@libsdl.org>
parents: 6931
diff changeset
   522
                    SDL_SendKeyboardKey(SDL_PRESSED, code);
b272d47f70a7 Cleaned up and fixed the Windows keyboard mapping code.
Sam Lantinga <slouken@libsdl.org>
parents: 6931
diff changeset
   523
                }
b272d47f70a7 Cleaned up and fixed the Windows keyboard mapping code.
Sam Lantinga <slouken@libsdl.org>
parents: 6931
diff changeset
   524
                SDL_SendKeyboardKey(SDL_RELEASED, code);
2308
514f7c1651fc Untested Win32 keyboard scancode code.
Sam Lantinga <slouken@libsdl.org>
parents: 2284
diff changeset
   525
            }
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
   526
        }
3566
07c8339c95c6 Fixed bug #905
Sam Lantinga <slouken@libsdl.org>
parents: 3565
diff changeset
   527
        returnCode = 0;
07c8339c95c6 Fixed bug #905
Sam Lantinga <slouken@libsdl.org>
parents: 3565
diff changeset
   528
        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
   529
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
   530
    case WM_UNICHAR:
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
   531
        {
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
   532
            if (wParam == UNICODE_NOCHAR) {
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
   533
                returnCode = 1;
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
   534
                break;
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
   535
            }
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
   536
        }
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
   537
        // no break
2309
21591ae7355d Implemented text input event for Win32
Sam Lantinga <slouken@libsdl.org>
parents: 2308
diff changeset
   538
    case WM_CHAR:
21591ae7355d Implemented text input event for Win32
Sam Lantinga <slouken@libsdl.org>
parents: 2308
diff changeset
   539
        {
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
   540
            char text[5];
2309
21591ae7355d Implemented text input event for Win32
Sam Lantinga <slouken@libsdl.org>
parents: 2308
diff changeset
   541
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
   542
            WIN_ConvertUTF32toUTF8(wParam, text);
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
   543
            SDL_SendKeyboardText(text);
2309
21591ae7355d Implemented text input event for Win32
Sam Lantinga <slouken@libsdl.org>
parents: 2308
diff changeset
   544
        }
3566
07c8339c95c6 Fixed bug #905
Sam Lantinga <slouken@libsdl.org>
parents: 3565
diff changeset
   545
        returnCode = 0;
07c8339c95c6 Fixed bug #905
Sam Lantinga <slouken@libsdl.org>
parents: 3565
diff changeset
   546
        break;
2309
21591ae7355d Implemented text input event for Win32
Sam Lantinga <slouken@libsdl.org>
parents: 2308
diff changeset
   547
5086
c2539ff054c8 Fixed compiling on Windows Mobile SDK 5.0 with Visual Studio 2008
Sam Lantinga <slouken@libsdl.org>
parents: 5062
diff changeset
   548
#ifdef WM_INPUTLANGCHANGE
2311
54e21acfec5a Friggin' Windows remaps alphabetic keys based on keyboard layout.
Sam Lantinga <slouken@libsdl.org>
parents: 2310
diff changeset
   549
    case WM_INPUTLANGCHANGE:
54e21acfec5a Friggin' Windows remaps alphabetic keys based on keyboard layout.
Sam Lantinga <slouken@libsdl.org>
parents: 2310
diff changeset
   550
        {
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
   551
            WIN_UpdateKeymap();
2311
54e21acfec5a Friggin' Windows remaps alphabetic keys based on keyboard layout.
Sam Lantinga <slouken@libsdl.org>
parents: 2310
diff changeset
   552
        }
3566
07c8339c95c6 Fixed bug #905
Sam Lantinga <slouken@libsdl.org>
parents: 3565
diff changeset
   553
        returnCode = 1;
07c8339c95c6 Fixed bug #905
Sam Lantinga <slouken@libsdl.org>
parents: 3565
diff changeset
   554
        break;
5086
c2539ff054c8 Fixed compiling on Windows Mobile SDK 5.0 with Visual Studio 2008
Sam Lantinga <slouken@libsdl.org>
parents: 5062
diff changeset
   555
#endif /* WM_INPUTLANGCHANGE */
2311
54e21acfec5a Friggin' Windows remaps alphabetic keys based on keyboard layout.
Sam Lantinga <slouken@libsdl.org>
parents: 2310
diff changeset
   556
5086
c2539ff054c8 Fixed compiling on Windows Mobile SDK 5.0 with Visual Studio 2008
Sam Lantinga <slouken@libsdl.org>
parents: 5062
diff changeset
   557
#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
   558
    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
   559
        {
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
   560
            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
   561
            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
   562
            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
   563
            int w, h;
6682
a0cbe4e5a07a SetWindowMinimumSize Windows implementation
stopiccot
parents: 6523
diff changeset
   564
            int min_w, min_h;
6788
036f53f2f5aa Added SDL_SetWindowMaximumSize() and SDL_GetWindowMaximumSize()
Sam Lantinga <slouken@libsdl.org>
parents: 6782
diff changeset
   565
            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
   566
            int style;
3168
Sam Lantinga <slouken@libsdl.org>
parents: 3139
diff changeset
   567
            BOOL menu;
7191
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   568
            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
   569
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
   570
            /* If we allow resizing, let the resize happen naturally */
6682
a0cbe4e5a07a SetWindowMinimumSize Windows implementation
stopiccot
parents: 6523
diff changeset
   571
            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
   572
                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
   573
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
   574
            /* 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
   575
            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
   576
            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
   577
            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
   578
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
   579
            /* 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
   580
            SDL_GetWindowSize(data->window, &w, &h);
6682
a0cbe4e5a07a SetWindowMinimumSize Windows implementation
stopiccot
parents: 6523
diff changeset
   581
            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
   582
            SDL_GetWindowMaximumSize(data->window, &max_w, &max_h);
6682
a0cbe4e5a07a SetWindowMinimumSize Windows implementation
stopiccot
parents: 6523
diff changeset
   583
7191
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   584
            /* Store in min_w and min_h difference between current size and minimal
6682
a0cbe4e5a07a SetWindowMinimumSize Windows implementation
stopiccot
parents: 6523
diff changeset
   585
               size so we don't need to call AdjustWindowRectEx twice */
a0cbe4e5a07a SetWindowMinimumSize Windows implementation
stopiccot
parents: 6523
diff changeset
   586
            min_w -= w;
a0cbe4e5a07a SetWindowMinimumSize Windows implementation
stopiccot
parents: 6523
diff changeset
   587
            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
   588
            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
   589
                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
   590
                max_h -= h;
6862
d189a1e771fe Fixed increasing the size of resizable windows
Sam Lantinga <slouken@libsdl.org>
parents: 6861
diff changeset
   591
                constrain_max_size = TRUE;
d189a1e771fe Fixed increasing the size of resizable windows
Sam Lantinga <slouken@libsdl.org>
parents: 6861
diff changeset
   592
            } else {
d189a1e771fe Fixed increasing the size of resizable windows
Sam Lantinga <slouken@libsdl.org>
parents: 6861
diff changeset
   593
                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
   594
            }
6682
a0cbe4e5a07a SetWindowMinimumSize Windows implementation
stopiccot
parents: 6523
diff changeset
   595
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
   596
            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
   597
            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
   598
            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
   599
            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
   600
3168
Sam Lantinga <slouken@libsdl.org>
parents: 3139
diff changeset
   601
            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
   602
            /* 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
   603
               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
   604
               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
   605
               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
   606
             */
3168
Sam Lantinga <slouken@libsdl.org>
parents: 3139
diff changeset
   607
            menu = (style & WS_CHILDWINDOW) ? FALSE : (GetMenu(hwnd) != NULL);
Sam Lantinga <slouken@libsdl.org>
parents: 3139
diff changeset
   608
            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
   609
            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
   610
            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
   611
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
            /* 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
   613
            info = (MINMAXINFO *) lParam;
6682
a0cbe4e5a07a SetWindowMinimumSize Windows implementation
stopiccot
parents: 6523
diff changeset
   614
            if (SDL_GetWindowFlags(data->window) & SDL_WINDOW_RESIZABLE) {
a0cbe4e5a07a SetWindowMinimumSize Windows implementation
stopiccot
parents: 6523
diff changeset
   615
                info->ptMinTrackSize.x = w + min_w;
a0cbe4e5a07a SetWindowMinimumSize Windows implementation
stopiccot
parents: 6523
diff changeset
   616
                info->ptMinTrackSize.y = h + min_h;
6862
d189a1e771fe Fixed increasing the size of resizable windows
Sam Lantinga <slouken@libsdl.org>
parents: 6861
diff changeset
   617
                if (constrain_max_size) {
d189a1e771fe Fixed increasing the size of resizable windows
Sam Lantinga <slouken@libsdl.org>
parents: 6861
diff changeset
   618
                    info->ptMaxTrackSize.x = w + max_w;
d189a1e771fe Fixed increasing the size of resizable windows
Sam Lantinga <slouken@libsdl.org>
parents: 6861
diff changeset
   619
                    info->ptMaxTrackSize.y = h + max_h;
d189a1e771fe Fixed increasing the size of resizable windows
Sam Lantinga <slouken@libsdl.org>
parents: 6861
diff changeset
   620
                }
6682
a0cbe4e5a07a SetWindowMinimumSize Windows implementation
stopiccot
parents: 6523
diff changeset
   621
            } else {
a0cbe4e5a07a SetWindowMinimumSize Windows implementation
stopiccot
parents: 6523
diff changeset
   622
                info->ptMaxSize.x = w;
a0cbe4e5a07a SetWindowMinimumSize Windows implementation
stopiccot
parents: 6523
diff changeset
   623
                info->ptMaxSize.y = h;
a0cbe4e5a07a SetWindowMinimumSize Windows implementation
stopiccot
parents: 6523
diff changeset
   624
                info->ptMaxPosition.x = x;
a0cbe4e5a07a SetWindowMinimumSize Windows implementation
stopiccot
parents: 6523
diff changeset
   625
                info->ptMaxPosition.y = y;
a0cbe4e5a07a SetWindowMinimumSize Windows implementation
stopiccot
parents: 6523
diff changeset
   626
                info->ptMinTrackSize.x = w;
a0cbe4e5a07a SetWindowMinimumSize Windows implementation
stopiccot
parents: 6523
diff changeset
   627
                info->ptMinTrackSize.y = h;
a0cbe4e5a07a SetWindowMinimumSize Windows implementation
stopiccot
parents: 6523
diff changeset
   628
                info->ptMaxTrackSize.x = w;
a0cbe4e5a07a SetWindowMinimumSize Windows implementation
stopiccot
parents: 6523
diff changeset
   629
                info->ptMaxTrackSize.y = h;
a0cbe4e5a07a SetWindowMinimumSize Windows implementation
stopiccot
parents: 6523
diff changeset
   630
            }
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
   631
        }
3566
07c8339c95c6 Fixed bug #905
Sam Lantinga <slouken@libsdl.org>
parents: 3565
diff changeset
   632
        returnCode = 0;
07c8339c95c6 Fixed bug #905
Sam Lantinga <slouken@libsdl.org>
parents: 3565
diff changeset
   633
        break;
5086
c2539ff054c8 Fixed compiling on Windows Mobile SDK 5.0 with Visual Studio 2008
Sam Lantinga <slouken@libsdl.org>
parents: 5062
diff changeset
   634
#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
   635
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
   636
    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
   637
        {
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
   638
            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
   639
            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
   640
            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
   641
            Uint32 window_flags;
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
   642
3256
83c87f2b2aab Fixed bug where minimized windows get zero width/height
Sam Lantinga <slouken@libsdl.org>
parents: 3253
diff changeset
   643
            if (!GetClientRect(hwnd, &rect) ||
83c87f2b2aab Fixed bug where minimized windows get zero width/height
Sam Lantinga <slouken@libsdl.org>
parents: 3253
diff changeset
   644
                (rect.right == rect.left && rect.bottom == rect.top)) {
83c87f2b2aab Fixed bug where minimized windows get zero width/height
Sam Lantinga <slouken@libsdl.org>
parents: 3253
diff changeset
   645
                break;
83c87f2b2aab Fixed bug where minimized windows get zero width/height
Sam Lantinga <slouken@libsdl.org>
parents: 3253
diff changeset
   646
            }
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
   647
            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
   648
            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
   649
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
   650
            window_flags = SDL_GetWindowFlags(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
   651
            if ((window_flags & SDL_WINDOW_INPUT_GRABBED) &&
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
                (window_flags & SDL_WINDOW_INPUT_FOCUS)) {
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
                ClipCursor(&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
   654
            }
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
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
            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
   657
            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
   658
            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
   659
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
   660
            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
   661
            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
   662
            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
   663
                                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
   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
        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
   666
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
   667
    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
   668
        {
3076
085e46423377 Use the default arrow cursor until we implement the cursor API
Sam Lantinga <slouken@libsdl.org>
parents: 3032
diff changeset
   669
            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
   670
3076
085e46423377 Use the default arrow cursor until we implement the cursor API
Sam Lantinga <slouken@libsdl.org>
parents: 3032
diff changeset
   671
            hittest = LOWORD(lParam);
085e46423377 Use the default arrow cursor until we implement the cursor API
Sam Lantinga <slouken@libsdl.org>
parents: 3032
diff changeset
   672
            if (hittest == HTCLIENT) {
5421
f8588afb6486 Added support for Windows cursors
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   673
                SetCursor(SDL_cursor);
3566
07c8339c95c6 Fixed bug #905
Sam Lantinga <slouken@libsdl.org>
parents: 3565
diff changeset
   674
                returnCode = TRUE;
3076
085e46423377 Use the default arrow cursor until we implement the cursor API
Sam Lantinga <slouken@libsdl.org>
parents: 3032
diff changeset
   675
            }
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
   676
        }
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
   677
        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
   678
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
   679
        /* 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
   680
    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
   681
        {
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
   682
            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
   683
            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
   684
                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
   685
                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
   686
                                    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
   687
            }
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
        }
3566
07c8339c95c6 Fixed bug #905
Sam Lantinga <slouken@libsdl.org>
parents: 3565
diff changeset
   689
        returnCode = 0;
07c8339c95c6 Fixed bug #905
Sam Lantinga <slouken@libsdl.org>
parents: 3565
diff changeset
   690
        break;
3095
75483112b97f Date: Sat, 21 Mar 2009 19:41:52 -0700 (PDT)
Sam Lantinga <slouken@libsdl.org>
parents: 3076
diff changeset
   691
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
   692
        /* 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
   693
    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
   694
        {
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
   695
        }
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
   696
        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
   697
5086
c2539ff054c8 Fixed compiling on Windows Mobile SDK 5.0 with Visual Studio 2008
Sam Lantinga <slouken@libsdl.org>
parents: 5062
diff changeset
   698
#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
   699
    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
   700
        {
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
   701
            /* 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
   702
            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
   703
                (wParam & 0xFFF0) == SC_MONITORPOWER) {
3032
77c3e67f0740 Fixed Visual C++ build
Sam Lantinga <slouken@libsdl.org>
parents: 3025
diff changeset
   704
                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
   705
                    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
   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
            }
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
        }
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
   709
        break;
5086
c2539ff054c8 Fixed compiling on Windows Mobile SDK 5.0 with Visual Studio 2008
Sam Lantinga <slouken@libsdl.org>
parents: 5062
diff changeset
   710
#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
   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
    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
   713
        {
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
   714
            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
   715
        }
3566
07c8339c95c6 Fixed bug #905
Sam Lantinga <slouken@libsdl.org>
parents: 3565
diff changeset
   716
        returnCode = 0;
07c8339c95c6 Fixed bug #905
Sam Lantinga <slouken@libsdl.org>
parents: 3565
diff changeset
   717
        break;
4919
716b2cbf4c9e First pass at Windows multi-touch gesture support
Sam Lantinga <slouken@libsdl.org>
parents: 4902
diff changeset
   718
7191
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   719
    case WM_TOUCH:
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   720
        {
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   721
            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
   722
            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
   723
            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
   724
                RECT rect;
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   725
                float x, y;
4919
716b2cbf4c9e First pass at Windows multi-touch gesture support
Sam Lantinga <slouken@libsdl.org>
parents: 4902
diff changeset
   726
7191
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   727
                if (!GetClientRect(hwnd, &rect) ||
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   728
                    (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
   729
                    if (inputs) {
9fcda7425ccc Added missing call to SDL_stack_free().
Philipp Wiesemann <philipp.wiesemann@arcor.de>
parents: 7561
diff changeset
   730
                        SDL_stack_free(inputs);
9fcda7425ccc Added missing call to SDL_stack_free().
Philipp Wiesemann <philipp.wiesemann@arcor.de>
parents: 7561
diff changeset
   731
                    }
7191
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   732
                    break;
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   733
                }
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   734
                ClientToScreen(hwnd, (LPPOINT) & rect);
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   735
                ClientToScreen(hwnd, (LPPOINT) & rect + 1);
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   736
                rect.top *= 100;
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   737
                rect.left *= 100;
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   738
                rect.bottom *= 100;
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   739
                rect.right *= 100;
4932
0d1bb1ce9d15 Removed carriage returns
Sam Lantinga <slouken@libsdl.org>
parents: 4919
diff changeset
   740
7191
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   741
                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
   742
                    PTOUCHINPUT input = &inputs[i];
4919
716b2cbf4c9e First pass at Windows multi-touch gesture support
Sam Lantinga <slouken@libsdl.org>
parents: 4902
diff changeset
   743
7543
a96f309059a1 Attempt to fix compiler warning.
Ryan C. Gordon <icculus@icculus.org>
parents: 7295
diff changeset
   744
                    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
   745
                    if (!SDL_GetTouch(touchId)) {
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   746
                        if (SDL_AddTouch(touchId, "") < 0) {
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   747
                            continue;
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   748
                        }
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   749
                    }
4932
0d1bb1ce9d15 Removed carriage returns
Sam Lantinga <slouken@libsdl.org>
parents: 4919
diff changeset
   750
7191
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   751
                    /* 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
   752
                    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
   753
                    y = (float)(input->y - rect.top)/(rect.bottom - rect.top);
4932
0d1bb1ce9d15 Removed carriage returns
Sam Lantinga <slouken@libsdl.org>
parents: 4919
diff changeset
   754
7191
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   755
                    if (input->dwFlags & TOUCHEVENTF_DOWN) {
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   756
                        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
   757
                    }
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   758
                    if (input->dwFlags & TOUCHEVENTF_MOVE) {
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   759
                        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
   760
                    }
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   761
                    if (input->dwFlags & TOUCHEVENTF_UP) {
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   762
                        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
   763
                    }
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   764
                }
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   765
            }
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   766
            SDL_stack_free(inputs);
4932
0d1bb1ce9d15 Removed carriage returns
Sam Lantinga <slouken@libsdl.org>
parents: 4919
diff changeset
   767
7191
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   768
            data->videodata->CloseTouchInputHandle((HTOUCHINPUT)lParam);
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   769
            return 0;
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   770
        }
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 7089
diff changeset
   771
        break;
6523
62d0193a7a02 Fixed bug 1593 - SDL_DROPFILE event doesn't work on Windows
Sam Lantinga <slouken@libsdl.org>
parents: 6430
diff changeset
   772
62d0193a7a02 Fixed bug 1593 - SDL_DROPFILE event doesn't work on Windows
Sam Lantinga <slouken@libsdl.org>
parents: 6430
diff changeset
   773
    case WM_DROPFILES:
62d0193a7a02 Fixed bug 1593 - SDL_DROPFILE event doesn't work on Windows
Sam Lantinga <slouken@libsdl.org>
parents: 6430
diff changeset
   774
        {
62d0193a7a02 Fixed bug 1593 - SDL_DROPFILE event doesn't work on Windows
Sam Lantinga <slouken@libsdl.org>
parents: 6430
diff changeset
   775
            UINT i;
62d0193a7a02 Fixed bug 1593 - SDL_DROPFILE event doesn't work on Windows
Sam Lantinga <slouken@libsdl.org>
parents: 6430
diff changeset
   776
            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
   777
            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
   778
            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
   779
                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
   780
                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
   781
                if (buffer) {
62d0193a7a02 Fixed bug 1593 - SDL_DROPFILE event doesn't work on Windows
Sam Lantinga <slouken@libsdl.org>
parents: 6430
diff changeset
   782
                    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
   783
                        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
   784
                        SDL_SendDropFile(file);
62d0193a7a02 Fixed bug 1593 - SDL_DROPFILE event doesn't work on Windows
Sam Lantinga <slouken@libsdl.org>
parents: 6430
diff changeset
   785
                        SDL_free(file);
62d0193a7a02 Fixed bug 1593 - SDL_DROPFILE event doesn't work on Windows
Sam Lantinga <slouken@libsdl.org>
parents: 6430
diff changeset
   786
                    }
62d0193a7a02 Fixed bug 1593 - SDL_DROPFILE event doesn't work on Windows
Sam Lantinga <slouken@libsdl.org>
parents: 6430
diff changeset
   787
                    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
   788
                }
62d0193a7a02 Fixed bug 1593 - SDL_DROPFILE event doesn't work on Windows
Sam Lantinga <slouken@libsdl.org>
parents: 6430
diff changeset
   789
            }
62d0193a7a02 Fixed bug 1593 - SDL_DROPFILE event doesn't work on Windows
Sam Lantinga <slouken@libsdl.org>
parents: 6430
diff changeset
   790
            DragFinish(drop);
62d0193a7a02 Fixed bug 1593 - SDL_DROPFILE event doesn't work on Windows
Sam Lantinga <slouken@libsdl.org>
parents: 6430
diff changeset
   791
            return 0;
62d0193a7a02 Fixed bug 1593 - SDL_DROPFILE event doesn't work on Windows
Sam Lantinga <slouken@libsdl.org>
parents: 6430
diff changeset
   792
        }
62d0193a7a02 Fixed bug 1593 - SDL_DROPFILE event doesn't work on Windows
Sam Lantinga <slouken@libsdl.org>
parents: 6430
diff changeset
   793
        break;
62d0193a7a02 Fixed bug 1593 - SDL_DROPFILE event doesn't work on Windows
Sam Lantinga <slouken@libsdl.org>
parents: 6430
diff changeset
   794
    }
3566
07c8339c95c6 Fixed bug #905
Sam Lantinga <slouken@libsdl.org>
parents: 3565
diff changeset
   795
07c8339c95c6 Fixed bug #905
Sam Lantinga <slouken@libsdl.org>
parents: 3565
diff changeset
   796
    /* 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
   797
    if (data->wndproc) {
07c8339c95c6 Fixed bug #905
Sam Lantinga <slouken@libsdl.org>
parents: 3565
diff changeset
   798
        return CallWindowProc(data->wndproc, hwnd, msg, wParam, lParam);
07c8339c95c6 Fixed bug #905
Sam Lantinga <slouken@libsdl.org>
parents: 3565
diff changeset
   799
    } else if (returnCode >= 0) {
07c8339c95c6 Fixed bug #905
Sam Lantinga <slouken@libsdl.org>
parents: 3565
diff changeset
   800
        return returnCode;
07c8339c95c6 Fixed bug #905
Sam Lantinga <slouken@libsdl.org>
parents: 3565
diff changeset
   801
    } else {
07c8339c95c6 Fixed bug #905
Sam Lantinga <slouken@libsdl.org>
parents: 3565
diff changeset
   802
        return CallWindowProc(DefWindowProc, hwnd, msg, wParam, lParam);
07c8339c95c6 Fixed bug #905
Sam Lantinga <slouken@libsdl.org>
parents: 3565
diff changeset
   803
    }
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
   804
}
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
   805
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
   806
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
   807
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
   808
{
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
   809
    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
   810
    MSG 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
   811
    while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) {
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
   812
        DispatchMessage(&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
   813
    }
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
   814
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
   815
    /* 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
   816
       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
   817
       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
   818
       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
   819
    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
   820
    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
   821
        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
   822
    }
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
   823
    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
   824
        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
   825
    }
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
   826
}
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
   827
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
   828
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
   829
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
   830
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
   831
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
   832
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
   833
/* 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
   834
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
   835
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
   836
{
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
   837
    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
   838
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
   839
    /* 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
   840
    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
   841
        ++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
   842
        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
   843
    }
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
   844
    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
   845
        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
   846
#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
   847
        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
   848
#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
   849
        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
   850
    }
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
   851
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
   852
    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
   853
        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
   854
        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
   855
        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
   856
    }
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
   857
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
   858
    /* 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
   859
    class.hCursor = NULL;
2710
44e49d3fa6cf Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents: 2324
diff changeset
   860
    class.hIcon =
44e49d3fa6cf Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents: 2324
diff changeset
   861
        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
   862
                  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
   863
    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
   864
    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
   865
    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
   866
    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
   867
    class.style = SDL_Appstyle;
4733
983eb9d5ed31 Change SDL to not use DefWindowProc as the window class' window procedure.
dewyatt
parents: 4429
diff changeset
   868
    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
   869
    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
   870
    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
   871
    if (!RegisterClass(&class)) {
7037
3fedf1f25b94 Make SDL_SetError and friends unconditionally return -1.
Ryan C. Gordon <icculus@icculus.org>
parents: 7029
diff changeset
   872
        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
   873
    }
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
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
    app_registered = 1;
7037
3fedf1f25b94 Make SDL_SetError and friends unconditionally return -1.
Ryan C. Gordon <icculus@icculus.org>
parents: 7029
diff changeset
   876
    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
   877
}
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
   878
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
   879
/* 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
   880
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
   881
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
   882
{
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
   883
    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
   884
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
   885
    /* 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
   886
    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
   887
        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
   888
    }
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
    --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
   890
    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
   891
        /* 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
   892
        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
   893
            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
   894
        }
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
   895
        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
   896
        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
   897
    }
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
   898
}
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
   899
6044
35448a5ea044 Lots of fixes importing SDL source wholesale into a new iOS project
Sam Lantinga <slouken@libsdl.org>
parents: 5889
diff changeset
   900
#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
   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
/* vi: set ts=4 sw=4 expandtab: */