annotate src/video/win32/SDL_win32events.c @ 3767:abc8acb8e3d7 gsoc2008_manymouse

Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
author Szymon Wilczek <kazeuser@gmail.com>
date Wed, 23 Jul 2008 16:12:43 +0000
parents 3202e4826c57
children 1b87a8beab9d
rev   line source
3767
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
1 /*
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
2 SDL - Simple DirectMedia Layer
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
3 Copyright (C) 1997-2006 Sam Lantinga
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
4
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
5 This library is free software; you can redistribute it and/or
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
6 modify it under the terms of the GNU Lesser General Public
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
7 License as published by the Free Software Foundation; either
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
8 version 2.1 of the License, or (at your option) any later version.
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
9
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
10 This library is distributed in the hope that it will be useful,
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
13 Lesser General Public License for more details.
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
14
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
15 You should have received a copy of the GNU Lesser General Public
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
16 License along with this library; if not, write to the Free Software
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
17 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
18
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
19 Sam Lantinga
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
20 slouken@libsdl.org
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
21 */
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
22 #include "SDL_config.h"
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
23
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
24 #include "SDL_win32video.h"
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
25 #include "SDL_syswm.h"
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
26 #include "SDL_vkeys.h"
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
27 #include "../../events/SDL_events_c.h"
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
28 #include <wintab.h>
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
29 #define PACKETDATA ( PK_X | PK_Y | PK_BUTTONS | PK_NORMAL_PRESSURE)
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
30 #define PACKETMODE 0
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
31 #include <pktdef.h>
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
32
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
33 /*#define WMMSG_DEBUG*/
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
34 #ifdef WMMSG_DEBUG
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
35 #include <stdio.h>
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
36 #include "wmmsg.h"
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
37 #endif
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
38
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
39 /* Masks for processing the windows KEYDOWN and KEYUP messages */
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
40 #define REPEATED_KEYMASK (1<<30)
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
41 #define EXTENDED_KEYMASK (1<<24)
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
42
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
43 #define VK_ENTER 10 /* Keypad Enter ... no VKEY defined? */
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
44
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
45 /* Make sure XBUTTON stuff is defined that isn't in older Platform SDKs... */
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
46 #ifndef WM_XBUTTONDOWN
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
47 #define WM_XBUTTONDOWN 0x020B
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
48 #endif
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
49 #ifndef WM_XBUTTONUP
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
50 #define WM_XBUTTONUP 0x020C
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
51 #endif
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
52 #ifndef GET_XBUTTON_WPARAM
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
53 #define GET_XBUTTON_WPARAM(w) (HIWORD(w))
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
54 #endif
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
55
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
56 #define pi 1.0
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
57
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
58 int first=1;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
59
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
60 LOGCONTEXT lc;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
61
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
62 static WPARAM
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
63 RemapVKEY(WPARAM wParam, LPARAM lParam)
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
64 {
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
65 int i;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
66 BYTE scancode = (BYTE) ((lParam >> 16) & 0xFF);
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
67
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
68 /* Windows remaps alphabetic keys based on current layout.
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
69 We try to provide USB scancodes, so undo this mapping.
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
70 */
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
71 if (wParam >= 'A' && wParam <= 'Z') {
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
72 if (scancode != alpha_scancodes[wParam - 'A']) {
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
73 for (i = 0; i < SDL_arraysize(alpha_scancodes); ++i) {
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
74 if (scancode == alpha_scancodes[i]) {
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
75 wParam = 'A' + i;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
76 break;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
77 }
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
78 }
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
79 }
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
80 }
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
81
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
82 /* Keypad keys are a little trickier, we always scan for them. */
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
83 for (i = 0; i < SDL_arraysize(keypad_scancodes); ++i) {
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
84 if (scancode == keypad_scancodes[i]) {
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
85 wParam = VK_NUMPAD0 + i;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
86 break;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
87 }
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
88 }
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
89
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
90 return wParam;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
91 }
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
92
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
93 LRESULT CALLBACK
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
94 WIN_WindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
95 {
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
96 SDL_WindowData *data;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
97
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
98 PACKET packet;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
99
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
100 /* Send a SDL_SYSWMEVENT if the application wants them */
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
101 if (SDL_ProcessEvents[SDL_SYSWMEVENT] == SDL_ENABLE) {
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
102 SDL_SysWMmsg wmmsg;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
103
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
104 SDL_VERSION(&wmmsg.version);
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
105 wmmsg.hwnd = hwnd;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
106 wmmsg.msg = msg;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
107 wmmsg.wParam = wParam;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
108 wmmsg.lParam = lParam;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
109 SDL_SendSysWMEvent(&wmmsg);
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
110 }
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
111
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
112 /* Get the window data for the window */
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
113 data = (SDL_WindowData *) GetProp(hwnd, TEXT("SDL_WindowData"));
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
114 if (!data) {
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
115 return CallWindowProc(DefWindowProc, hwnd, msg, wParam, lParam);
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
116 }
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
117 #ifdef WMMSG_DEBUG
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
118 {
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
119 FILE *log = fopen("wmmsg.txt", "a");
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
120 fprintf(log, "Received windows message: %p ", hwnd);
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
121 if (msg > MAX_WMMSG) {
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
122 fprintf(log, "%d", msg);
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
123 } else {
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
124 fprintf(log, "%s", wmtab[msg]);
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
125 }
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
126 fprintf(log, " -- 0x%X, 0x%X\n", wParam, lParam);
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
127 fclose(log);
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
128 }
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
129 #endif
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
130
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
131 switch (msg) {
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
132 case WT_PACKET:
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
133 {
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
134 if (WTPacket((HCTX)lParam, wParam, &packet))
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
135 {
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
136 SDL_SendMouseMotion(0,0,(int)packet.pkX,(int)packet.pkY,(int)packet.pkNormalPressure);
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
137 }
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
138 }
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
139 break;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
140 case WT_PROXIMITY:
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
141 {
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
142 int h_context=LOWORD(lParam);
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
143 if(h_context==0)
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
144 {
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
145 SDL_SendProximity(0, 0, 0, SDL_PROXIMITYOUT);
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
146 }
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
147 else
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
148 {
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
149 SDL_SendProximity(0, 0, 0, SDL_PROXIMITYIN);
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
150 }
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
151 }
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
152 break;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
153 case WM_SHOWWINDOW:
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
154 {
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
155 if (wParam) {
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
156 SDL_SendWindowEvent(data->windowID, SDL_WINDOWEVENT_SHOWN, 0,
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
157 0);
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
158 } else {
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
159 SDL_SendWindowEvent(data->windowID, SDL_WINDOWEVENT_HIDDEN, 0,
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
160 0);
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
161 }
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
162 }
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
163 break;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
164
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
165 case WM_ACTIVATE:
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
166 {
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
167 int index;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
168 SDL_Keyboard *keyboard;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
169 BOOL minimized;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
170
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
171 minimized = HIWORD(wParam);
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
172 index = data->videodata->keyboard;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
173 keyboard = SDL_GetKeyboard(index);
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
174 if (!minimized && (LOWORD(wParam) != WA_INACTIVE)) {
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
175 SDL_SendWindowEvent(data->windowID, SDL_WINDOWEVENT_SHOWN,
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
176 0, 0);
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
177 SDL_SendWindowEvent(data->windowID,
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
178 SDL_WINDOWEVENT_RESTORED, 0, 0);
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
179 if (IsZoomed(hwnd)) {
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
180 SDL_SendWindowEvent(data->windowID,
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
181 SDL_WINDOWEVENT_MAXIMIZED, 0, 0);
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
182 }
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
183 if (keyboard && keyboard->focus != data->windowID) {
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
184 SDL_SetKeyboardFocus(index, data->windowID);
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
185 }
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
186 /* FIXME: Update keyboard state */
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
187 } else {
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
188 if (keyboard && keyboard->focus == data->windowID) {
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
189 SDL_SetKeyboardFocus(index, 0);
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
190 }
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
191 if (minimized) {
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
192 SDL_SendWindowEvent(data->windowID,
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
193 SDL_WINDOWEVENT_MINIMIZED, 0, 0);
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
194 }
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
195 }
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
196 return (0);
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
197 }
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
198 break;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
199 case WT_CTXOPEN:
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
200 {
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
201 SDL_SendMouseMotion(0,1,1,0,0);
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
202 SDL_SendMouseMotion(0,1,-1,0,0);
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
203 }
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
204 case WM_MOUSEMOVE:
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
205 {
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
206 int index;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
207 SDL_Mouse *mouse;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
208 int x, y;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
209
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
210 index = data->videodata->mouse;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
211 mouse = SDL_GetMouse(index);
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
212
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
213 if (mouse->focus != data->windowID) {
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
214 TRACKMOUSEEVENT tme;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
215
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
216 tme.cbSize = sizeof(tme);
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
217 tme.dwFlags = TME_LEAVE;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
218 tme.hwndTrack = hwnd;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
219 TrackMouseEvent(&tme);
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
220
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
221 SDL_SetMouseFocus(index, data->windowID);
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
222 }
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
223
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
224 /* mouse has moved within the window */
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
225 x = LOWORD(lParam);
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
226 y = HIWORD(lParam);
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
227 //printf("index: %d\n",index);
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
228 if (mouse->relative_mode) {
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
229 int w, h;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
230 POINT center;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
231 SDL_GetWindowSize(data->windowID, &w, &h);
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
232 center.x = (w / 2);
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
233 center.y = (h / 2);
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
234 x -= center.x;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
235 y -= center.y;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
236 if (x || y) {
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
237 ClientToScreen(hwnd, &center);
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
238 SetCursorPos(center.x, center.y);
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
239 SDL_SendMouseMotion(index, 1, x, y,0);
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
240 }
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
241 } else {
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
242 SDL_SendMouseMotion(index, 0, x, y,0);
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
243 }
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
244 }
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
245 return (0);
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
246
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
247 case WM_MOUSELEAVE:
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
248 {
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
249 int index;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
250 SDL_Mouse *mouse;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
251
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
252 index = data->videodata->mouse;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
253 mouse = SDL_GetMouse(index);
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
254
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
255 if (mouse->focus == data->windowID) {
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
256 SDL_SetMouseFocus(index, 0);
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
257 }
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
258 }
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
259 return (0);
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
260
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
261 case WM_LBUTTONDOWN:
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
262 case WM_LBUTTONUP:
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
263 case WM_MBUTTONDOWN:
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
264 case WM_MBUTTONUP:
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
265 case WM_RBUTTONDOWN:
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
266 case WM_RBUTTONUP:
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
267 case WM_XBUTTONDOWN:
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
268 case WM_XBUTTONUP:
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
269 {
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
270 int xbuttonval = 0;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
271 int index;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
272 SDL_Mouse *mouse;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
273 Uint8 button, state;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
274
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
275 /* DJM:
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
276 We want the SDL window to take focus so that
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
277 it acts like a normal windows "component"
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
278 (e.g. gains keyboard focus on a mouse click).
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
279 */
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
280 SetFocus(hwnd);
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
281
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
282 index = data->videodata->mouse;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
283 mouse = SDL_GetMouse(index);
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
284
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
285 /* Figure out which button to use */
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
286 switch (msg) {
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
287 case WM_LBUTTONDOWN:
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
288 button = SDL_BUTTON_LEFT;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
289 state = SDL_PRESSED;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
290 break;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
291 case WM_LBUTTONUP:
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
292 button = SDL_BUTTON_LEFT;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
293 state = SDL_RELEASED;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
294 break;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
295 case WM_MBUTTONDOWN:
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
296 button = SDL_BUTTON_MIDDLE;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
297 state = SDL_PRESSED;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
298 break;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
299 case WM_MBUTTONUP:
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
300 button = SDL_BUTTON_MIDDLE;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
301 state = SDL_RELEASED;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
302 break;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
303 case WM_RBUTTONDOWN:
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
304 button = SDL_BUTTON_RIGHT;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
305 state = SDL_PRESSED;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
306 break;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
307 case WM_RBUTTONUP:
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
308 button = SDL_BUTTON_RIGHT;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
309 state = SDL_RELEASED;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
310 break;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
311 case WM_XBUTTONDOWN:
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
312 xbuttonval = GET_XBUTTON_WPARAM(wParam);
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
313 button = SDL_BUTTON_X1 + xbuttonval - 1;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
314 state = SDL_PRESSED;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
315 break;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
316 case WM_XBUTTONUP:
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
317 xbuttonval = GET_XBUTTON_WPARAM(wParam);
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
318 button = SDL_BUTTON_X1 + xbuttonval - 1;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
319 state = SDL_RELEASED;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
320 break;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
321 default:
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
322 /* Eh? Unknown button? */
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
323 return (0);
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
324 }
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
325 if (state == SDL_PRESSED) {
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
326 /* Grab mouse so we get up events */
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
327 if (++data->mouse_pressed > 0) {
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
328 SetCapture(hwnd);
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
329 }
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
330 } else {
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
331 /* Release mouse after all up events */
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
332 if (--data->mouse_pressed <= 0) {
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
333 ReleaseCapture();
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
334 data->mouse_pressed = 0;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
335 }
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
336 }
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
337
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
338 if (!mouse->relative_mode) {
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
339 int x, y;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
340 x = LOWORD(lParam);
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
341 y = HIWORD(lParam);
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
342 SDL_SendMouseMotion(index, 0, x, y,0);
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
343 }
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
344 SDL_SendMouseButton(index, state, button);
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
345
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
346 /*
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
347 * MSDN says:
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
348 * "Unlike the WM_LBUTTONUP, WM_MBUTTONUP, and WM_RBUTTONUP
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
349 * messages, an application should return TRUE from [an
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
350 * XBUTTON message] if it processes it. Doing so will allow
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
351 * software that simulates this message on Microsoft Windows
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
352 * systems earlier than Windows 2000 to determine whether
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
353 * the window procedure processed the message or called
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
354 * DefWindowProc to process it.
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
355 */
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
356 if (xbuttonval > 0) {
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
357 return (TRUE);
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
358 }
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
359 }
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
360 return (0);
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
361
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
362 case WM_MOUSEWHEEL:
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
363 {
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
364 int index;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
365 int motion = (short) HIWORD(wParam);
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
366
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
367 index = data->videodata->mouse;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
368 SDL_SendMouseWheel(index, 0, motion);
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
369 }
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
370 return (0);
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
371
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
372 case WM_SYSKEYDOWN:
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
373 case WM_KEYDOWN:
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
374 {
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
375 int index;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
376
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
377 /* Ignore repeated keys */
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
378 if (lParam & REPEATED_KEYMASK) {
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
379 return (0);
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
380 }
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
381
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
382 index = data->videodata->keyboard;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
383 wParam = RemapVKEY(wParam, lParam);
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
384 switch (wParam) {
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
385 case VK_CONTROL:
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
386 if (lParam & EXTENDED_KEYMASK)
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
387 wParam = VK_RCONTROL;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
388 else
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
389 wParam = VK_LCONTROL;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
390 break;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
391 case VK_SHIFT:
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
392 /* EXTENDED trick doesn't work here */
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
393 {
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
394 Uint8 *state = SDL_GetKeyboardState(NULL);
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
395 if (state[SDL_SCANCODE_LSHIFT] == SDL_RELEASED
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
396 && (GetKeyState(VK_LSHIFT) & 0x8000)) {
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
397 wParam = VK_LSHIFT;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
398 } else if (state[SDL_SCANCODE_RSHIFT] == SDL_RELEASED
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
399 && (GetKeyState(VK_RSHIFT) & 0x8000)) {
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
400 wParam = VK_RSHIFT;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
401 } else {
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
402 /* Probably a key repeat */
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
403 return (0);
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
404 }
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
405 }
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
406 break;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
407 case VK_MENU:
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
408 if (lParam & EXTENDED_KEYMASK)
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
409 wParam = VK_RMENU;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
410 else
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
411 wParam = VK_LMENU;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
412 break;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
413 case VK_RETURN:
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
414 if (lParam & EXTENDED_KEYMASK)
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
415 wParam = VK_ENTER;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
416 break;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
417 }
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
418 if (wParam < 256) {
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
419 SDL_SendKeyboardKey(index, SDL_PRESSED,
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
420 data->videodata->key_layout[wParam]);
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
421 }
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
422 }
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
423 return (0);
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
424
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
425 case WM_SYSKEYUP:
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
426 case WM_KEYUP:
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
427 {
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
428 int index;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
429
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
430 index = data->videodata->keyboard;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
431 wParam = RemapVKEY(wParam, lParam);
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
432 switch (wParam) {
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
433 case VK_CONTROL:
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
434 if (lParam & EXTENDED_KEYMASK)
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
435 wParam = VK_RCONTROL;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
436 else
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
437 wParam = VK_LCONTROL;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
438 break;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
439 case VK_SHIFT:
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
440 /* EXTENDED trick doesn't work here */
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
441 {
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
442 Uint8 *state = SDL_GetKeyboardState(NULL);
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
443 if (state[SDL_SCANCODE_LSHIFT] == SDL_PRESSED
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
444 && !(GetKeyState(VK_LSHIFT) & 0x8000)) {
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
445 wParam = VK_LSHIFT;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
446 } else if (state[SDL_SCANCODE_RSHIFT] == SDL_PRESSED
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
447 && !(GetKeyState(VK_RSHIFT) & 0x8000)) {
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
448 wParam = VK_RSHIFT;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
449 } else {
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
450 /* Probably a key repeat */
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
451 return (0);
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
452 }
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
453 }
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
454 break;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
455 case VK_MENU:
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
456 if (lParam & EXTENDED_KEYMASK)
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
457 wParam = VK_RMENU;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
458 else
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
459 wParam = VK_LMENU;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
460 break;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
461 case VK_RETURN:
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
462 if (lParam & EXTENDED_KEYMASK)
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
463 wParam = VK_ENTER;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
464 break;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
465 }
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
466 /* Windows only reports keyup for print screen */
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
467 if (wParam == VK_SNAPSHOT
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
468 && SDL_GetKeyboardState(NULL)[SDL_SCANCODE_PRINTSCREEN] ==
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
469 SDL_RELEASED) {
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
470 SDL_SendKeyboardKey(index, SDL_PRESSED,
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
471 data->videodata->key_layout[wParam]);
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
472 }
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
473 if (wParam < 256) {
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
474 SDL_SendKeyboardKey(index, SDL_RELEASED,
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
475 data->videodata->key_layout[wParam]);
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
476 }
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
477 }
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
478 return (0);
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
479
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
480 case WM_CHAR:
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
481 {
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
482 char text[4];
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
483
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
484 /* Convert to UTF-8 and send it on... */
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
485 if (wParam <= 0x7F) {
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
486 text[0] = (char) wParam;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
487 text[1] = '\0';
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
488 } else if (wParam <= 0x7FF) {
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
489 text[0] = 0xC0 | (char) ((wParam >> 6) & 0x1F);
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
490 text[1] = 0x80 | (char) (wParam & 0x3F);
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
491 text[2] = '\0';
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
492 } else {
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
493 text[0] = 0xE0 | (char) ((wParam >> 12) & 0x0F);
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
494 text[1] = 0x80 | (char) ((wParam >> 6) & 0x3F);
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
495 text[2] = 0x80 | (char) (wParam & 0x3F);
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
496 text[3] = '\0';
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
497 }
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
498 SDL_SendKeyboardText(data->videodata->keyboard, text);
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
499 }
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
500 return (0);
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
501
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
502 case WM_INPUTLANGCHANGE:
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
503 {
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
504 WIN_UpdateKeymap(data->videodata->keyboard);
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
505 }
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
506 return (1);
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
507
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
508 case WM_GETMINMAXINFO:
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
509 {
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
510 MINMAXINFO *info;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
511 RECT size;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
512 int x, y;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
513 int w, h;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
514 int style;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
515
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
516 /* If we allow resizing, let the resize happen naturally */
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
517 if (SDL_GetWindowFlags(data->windowID) & SDL_WINDOW_RESIZABLE) {
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
518 return (0);
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
519 }
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
520
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
521 /* Get the current position of our window */
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
522 GetWindowRect(hwnd, &size);
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
523 x = size.left;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
524 y = size.top;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
525
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
526 /* Calculate current size of our window */
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
527 SDL_GetWindowSize(data->windowID, &w, &h);
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
528 size.top = 0;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
529 size.left = 0;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
530 size.bottom = h;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
531 size.right = w;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
532
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
533 /* DJM - according to the docs for GetMenu(), the
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
534 return value is undefined if hwnd is a child window.
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
535 Aparently it's too difficult for MS to check
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
536 inside their function, so I have to do it here.
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
537 */
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
538 style = GetWindowLong(hwnd, GWL_STYLE);
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
539 AdjustWindowRect(&size,
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
540 style,
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
541 style & WS_CHILDWINDOW ? FALSE : GetMenu(hwnd) !=
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
542 NULL);
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
543
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
544 w = size.right - size.left;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
545 h = size.bottom - size.top;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
546
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
547 /* Fix our size to the current size */
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
548 info = (MINMAXINFO *) lParam;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
549 info->ptMaxSize.x = w;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
550 info->ptMaxSize.y = h;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
551 info->ptMaxPosition.x = x;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
552 info->ptMaxPosition.y = y;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
553 info->ptMinTrackSize.x = w;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
554 info->ptMinTrackSize.y = h;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
555 info->ptMaxTrackSize.x = w;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
556 info->ptMaxTrackSize.y = h;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
557 }
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
558 return (0);
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
559
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
560 case WM_WINDOWPOSCHANGED:
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
561 {
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
562 RECT rect;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
563 int x, y;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
564 int w, h;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
565 Uint32 window_flags;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
566
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
567 GetClientRect(hwnd, &rect);
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
568 ClientToScreen(hwnd, (LPPOINT) & rect);
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
569 ClientToScreen(hwnd, (LPPOINT) & rect + 1);
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
570
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
571 window_flags = SDL_GetWindowFlags(data->windowID);
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
572 if ((window_flags & SDL_WINDOW_INPUT_GRABBED) &&
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
573 (window_flags & SDL_WINDOW_INPUT_FOCUS)) {
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
574 ClipCursor(&rect);
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
575 }
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
576
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
577 x = rect.left;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
578 y = rect.top;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
579 SDL_SendWindowEvent(data->windowID, SDL_WINDOWEVENT_MOVED, x, y);
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
580
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
581 w = rect.right - rect.left;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
582 h = rect.bottom - rect.top;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
583 SDL_SendWindowEvent(data->windowID, SDL_WINDOWEVENT_RESIZED, w,
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
584 h);
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
585 }
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
586 break;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
587
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
588 case WM_SETCURSOR:
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
589 {
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
590 /*
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
591 Uint16 hittest;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
592
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
593 hittest = LOWORD(lParam);
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
594 if (hittest == HTCLIENT) {
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
595 SetCursor(SDL_hcursor);
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
596 return (TRUE);
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
597 }
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
598 */
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
599 }
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
600 break;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
601
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
602 /* We are about to get palette focus! */
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
603 case WM_QUERYNEWPALETTE:
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
604 {
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
605 /*
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
606 WIN_RealizePalette(current_video);
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
607 return (TRUE);
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
608 */
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
609 }
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
610 break;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
611
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
612 /* Another application changed the palette */
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
613 case WM_PALETTECHANGED:
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
614 {
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
615 /*
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
616 WIN_PaletteChanged(current_video, (HWND) wParam);
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
617 */
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
618 }
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
619 break;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
620
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
621 /* We were occluded, refresh our display */
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
622 case WM_PAINT:
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
623 {
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
624 RECT rect;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
625 if (GetUpdateRect(hwnd, &rect, FALSE)) {
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
626 ValidateRect(hwnd, &rect);
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
627 SDL_SendWindowEvent(data->windowID, SDL_WINDOWEVENT_EXPOSED,
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
628 0, 0);
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
629 }
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
630 }
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
631 return (0);
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
632
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
633 /* We'll do our own drawing, prevent flicker */
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
634 case WM_ERASEBKGND:
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
635 {
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
636 }
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
637 return (1);
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
638
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
639 case WM_SYSCOMMAND:
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
640 {
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
641 /* Don't start the screensaver or blank the monitor in fullscreen apps */
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
642 if ((wParam & 0xFFF0) == SC_SCREENSAVE ||
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
643 (wParam & 0xFFF0) == SC_MONITORPOWER) {
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
644 if (SDL_GetWindowFlags(data->windowID) &
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
645 SDL_WINDOW_FULLSCREEN) {
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
646 return (0);
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
647 }
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
648 }
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
649 }
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
650 break;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
651
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
652 case WM_CLOSE:
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
653 {
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
654 SDL_SendWindowEvent(data->windowID, SDL_WINDOWEVENT_CLOSE, 0, 0);
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
655 }
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
656 return (0);
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
657 }
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
658 return CallWindowProc(data->wndproc, hwnd, msg, wParam, lParam);
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
659 }
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
660
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
661 void
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
662 WIN_PumpEvents(_THIS)
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
663 {
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
664 MSG msg;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
665
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
666 while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) {
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
667 TranslateMessage(&msg);
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
668 DispatchMessage(&msg);
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
669
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
670 }
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
671 /*while (GetMessage(&msg, NULL, 0, 0)) {
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
672 TranslateMessage(&msg);
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
673 DispatchMessage(&msg);
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
674 }*/
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
675 //WTClose(g_hCtx);
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
676 }
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
677
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
678 static int app_registered = 0;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
679 LPTSTR SDL_Appname = NULL;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
680 Uint32 SDL_Appstyle = 0;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
681 HINSTANCE SDL_Instance = NULL;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
682
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
683 /* Register the class for this application */
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
684 int
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
685 SDL_RegisterApp(char *name, Uint32 style, void *hInst)
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
686 {
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
687 WNDCLASS class;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
688
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
689 /* Only do this once... */
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
690 if (app_registered) {
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
691 ++app_registered;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
692 return (0);
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
693 }
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
694 if (!name && !SDL_Appname) {
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
695 name = "SDL_app";
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
696 SDL_Appstyle = (CS_BYTEALIGNCLIENT | CS_OWNDC);
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
697 SDL_Instance = hInst ? hInst : GetModuleHandle(NULL);
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
698 }
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
699
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
700 if (name) {
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
701 SDL_Appname = WIN_UTF8ToString(name);
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
702 SDL_Appstyle = style;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
703 SDL_Instance = hInst ? hInst : GetModuleHandle(NULL);
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
704 }
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
705
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
706 /* Register the application class */
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
707 class.hCursor = NULL;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
708 class.hIcon = LoadImage(SDL_Instance, SDL_Appname,
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
709 IMAGE_ICON, 0, 0, LR_DEFAULTCOLOR);
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
710 class.lpszMenuName = NULL;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
711 class.lpszClassName = SDL_Appname;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
712 class.hbrBackground = NULL;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
713 class.hInstance = SDL_Instance;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
714 class.style = SDL_Appstyle;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
715 class.lpfnWndProc = DefWindowProc;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
716 class.cbWndExtra = 0;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
717 class.cbClsExtra = 0;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
718 if (!RegisterClass(&class)) {
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
719 SDL_SetError("Couldn't register application class");
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
720 return (-1);
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
721 }
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
722
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
723 app_registered = 1;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
724 return (0);
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
725 }
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
726
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
727 /* Unregisters the windowclass registered in SDL_RegisterApp above. */
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
728 void
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
729 SDL_UnregisterApp()
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
730 {
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
731 WNDCLASS class;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
732
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
733 /* SDL_RegisterApp might not have been called before */
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
734 if (!app_registered) {
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
735 return;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
736 }
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
737 --app_registered;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
738 if (app_registered == 0) {
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
739 /* Check for any registered window classes. */
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
740 if (GetClassInfo(SDL_Instance, SDL_Appname, &class)) {
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
741 UnregisterClass(SDL_Appname, SDL_Instance);
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
742 }
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
743 SDL_free(SDL_Appname);
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
744 SDL_Appname = NULL;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
745 }
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
746 }
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
747
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
748 /* Sets an error message based on GetLastError() */
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
749 void
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
750 WIN_SetError(const char *prefix)
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
751 {
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
752 TCHAR buffer[1024];
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
753 char *message;
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
754
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
755 FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM,
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
756 NULL,
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
757 GetLastError(), 0, buffer, SDL_arraysize(buffer), NULL);
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
758
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
759 message = WIN_StringToUTF8(buffer);
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
760 SDL_SetError("%s%s%s", prefix ? prefix : "", prefix ? ":" : "", message);
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
761 SDL_free(message);
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
762 }
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
763
abc8acb8e3d7 Proximity events, Pressure detection for multiple windows. Tablet button detection on the way.
Szymon Wilczek <kazeuser@gmail.com>
parents: 2324
diff changeset
764 /* vi: set ts=4 sw=4 expandtab: */