|
@@ -1,159 +1,159 @@
|
|
-/*
|
|
|
|
- Simple DirectMedia Layer
|
|
|
|
- Copyright (C) 1997-2012 Sam Lantinga <[email protected]>
|
|
|
|
-
|
|
|
|
- This software is provided 'as-is', without any express or implied
|
|
|
|
- warranty. In no event will the authors be held liable for any damages
|
|
|
|
- arising from the use of this software.
|
|
|
|
-
|
|
|
|
- Permission is granted to anyone to use this software for any purpose,
|
|
|
|
- including commercial applications, and to alter it and redistribute it
|
|
|
|
- freely, subject to the following restrictions:
|
|
|
|
-
|
|
|
|
- 1. The origin of this software must not be misrepresented; you must not
|
|
|
|
- claim that you wrote the original software. If you use this software
|
|
|
|
- in a product, an acknowledgment in the product documentation would be
|
|
|
|
- appreciated but is not required.
|
|
|
|
- 2. Altered source versions must be plainly marked as such, and must not be
|
|
|
|
- misrepresented as being the original software.
|
|
|
|
- 3. This notice may not be removed or altered from any source distribution.
|
|
|
|
-*/
|
|
|
|
-
|
|
|
|
-#include "SDL_config.h"
|
|
|
|
-
|
|
|
|
-#if SDL_VIDEO_DRIVER_WINRT
|
|
|
|
-
|
|
|
|
-/*
|
|
|
|
- * Windows includes:
|
|
|
|
- */
|
|
|
|
-#include <Windows.h>
|
|
|
|
-using namespace Windows::UI::Core;
|
|
|
|
-using Windows::UI::Core::CoreCursor;
|
|
|
|
-
|
|
|
|
-/*
|
|
|
|
- * SDL includes:
|
|
|
|
- */
|
|
|
|
-extern "C" {
|
|
|
|
-#include "SDL_assert.h"
|
|
|
|
-#include "../../events/SDL_mouse_c.h"
|
|
|
|
-#include "../SDL_sysvideo.h"
|
|
|
|
-#include "SDL_events.h"
|
|
|
|
-#include "SDL_log.h"
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-#include "../../core/winrt/SDL_winrtapp.h"
|
|
|
|
-#include "SDL_winrtmouse.h"
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-static SDL_bool WINRT_UseRelativeMouseMode = SDL_FALSE;
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-static SDL_Cursor *
|
|
|
|
-WINRT_CreateSystemCursor(SDL_SystemCursor id)
|
|
|
|
-{
|
|
|
|
- SDL_Cursor *cursor;
|
|
|
|
- CoreCursorType cursorType = CoreCursorType::Arrow;
|
|
|
|
-
|
|
|
|
- switch(id)
|
|
|
|
- {
|
|
|
|
- default:
|
|
|
|
- SDL_assert(0);
|
|
|
|
- return NULL;
|
|
|
|
- case SDL_SYSTEM_CURSOR_ARROW: cursorType = CoreCursorType::Arrow; break;
|
|
|
|
- case SDL_SYSTEM_CURSOR_IBEAM: cursorType = CoreCursorType::IBeam; break;
|
|
|
|
- case SDL_SYSTEM_CURSOR_WAIT: cursorType = CoreCursorType::Wait; break;
|
|
|
|
- case SDL_SYSTEM_CURSOR_CROSSHAIR: cursorType = CoreCursorType::Cross; break;
|
|
|
|
- case SDL_SYSTEM_CURSOR_WAITARROW: cursorType = CoreCursorType::Wait; break;
|
|
|
|
- case SDL_SYSTEM_CURSOR_SIZENWSE: cursorType = CoreCursorType::SizeNorthwestSoutheast; break;
|
|
|
|
- case SDL_SYSTEM_CURSOR_SIZENESW: cursorType = CoreCursorType::SizeNortheastSouthwest; break;
|
|
|
|
- case SDL_SYSTEM_CURSOR_SIZEWE: cursorType = CoreCursorType::SizeWestEast; break;
|
|
|
|
- case SDL_SYSTEM_CURSOR_SIZENS: cursorType = CoreCursorType::SizeNorthSouth; break;
|
|
|
|
- case SDL_SYSTEM_CURSOR_SIZEALL: cursorType = CoreCursorType::SizeAll; break;
|
|
|
|
- case SDL_SYSTEM_CURSOR_NO: cursorType = CoreCursorType::UniversalNo; break;
|
|
|
|
- case SDL_SYSTEM_CURSOR_HAND: cursorType = CoreCursorType::Hand; break;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- cursor = (SDL_Cursor *) SDL_calloc(1, sizeof(*cursor));
|
|
|
|
- if (cursor) {
|
|
|
|
- /* Create a pointer to a COM reference to a cursor. The extra
|
|
|
|
- pointer is used (on top of the COM reference) to allow the cursor
|
|
|
|
- to be referenced by the SDL_cursor's driverdata field, which is
|
|
|
|
- a void pointer.
|
|
|
|
- */
|
|
|
|
- CoreCursor ^* theCursor = new CoreCursor^(nullptr);
|
|
|
|
- *theCursor = ref new CoreCursor(cursorType, 0);
|
|
|
|
- cursor->driverdata = (void *) theCursor;
|
|
|
|
- } else {
|
|
|
|
- SDL_OutOfMemory();
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- return cursor;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-static SDL_Cursor *
|
|
|
|
-WINRT_CreateDefaultCursor()
|
|
|
|
-{
|
|
|
|
- return WINRT_CreateSystemCursor(SDL_SYSTEM_CURSOR_ARROW);
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-static void
|
|
|
|
-WINRT_FreeCursor(SDL_Cursor * cursor)
|
|
|
|
-{
|
|
|
|
- if (cursor->driverdata) {
|
|
|
|
- CoreCursor ^* theCursor = (CoreCursor ^*) cursor->driverdata;
|
|
|
|
- *theCursor = nullptr; // Release the COM reference to the CoreCursor
|
|
|
|
- delete theCursor; // Delete the pointer to the COM reference
|
|
|
|
- }
|
|
|
|
- SDL_free(cursor);
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-static int
|
|
|
|
-WINRT_ShowCursor(SDL_Cursor * cursor)
|
|
|
|
-{
|
|
|
|
- if (cursor) {
|
|
|
|
- CoreCursor ^* theCursor = (CoreCursor ^*) cursor->driverdata;
|
|
|
|
- CoreWindow::GetForCurrentThread()->PointerCursor = *theCursor;
|
|
|
|
- } else {
|
|
|
|
- CoreWindow::GetForCurrentThread()->PointerCursor = nullptr;
|
|
|
|
- }
|
|
|
|
- return 0;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-static int
|
|
|
|
-WINRT_SetRelativeMouseMode(SDL_bool enabled)
|
|
|
|
-{
|
|
|
|
- WINRT_UseRelativeMouseMode = enabled;
|
|
|
|
- return 0;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-void
|
|
|
|
-WINRT_InitMouse(_THIS)
|
|
|
|
-{
|
|
|
|
- SDL_Mouse *mouse = SDL_GetMouse();
|
|
|
|
-
|
|
|
|
- /* DLudwig, Dec 3, 2012: Windows RT does not currently provide APIs for
|
|
|
|
- the following features, AFAIK:
|
|
|
|
- - custom cursors (multiple system cursors are, however, available)
|
|
|
|
- - programmatically moveable cursors
|
|
|
|
- */
|
|
|
|
-
|
|
|
|
-#if WINAPI_FAMILY != WINAPI_FAMILY_PHONE_APP
|
|
|
|
- //mouse->CreateCursor = WINRT_CreateCursor;
|
|
|
|
- mouse->CreateSystemCursor = WINRT_CreateSystemCursor;
|
|
|
|
- mouse->ShowCursor = WINRT_ShowCursor;
|
|
|
|
- mouse->FreeCursor = WINRT_FreeCursor;
|
|
|
|
- //mouse->WarpMouse = WINRT_WarpMouse;
|
|
|
|
- mouse->SetRelativeMouseMode = WINRT_SetRelativeMouseMode;
|
|
|
|
-
|
|
|
|
- SDL_SetDefaultCursor(WINRT_CreateDefaultCursor());
|
|
|
|
-#endif
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-void
|
|
|
|
-WINRT_QuitMouse(_THIS)
|
|
|
|
-{
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
|
|
+/*
|
|
|
|
+ Simple DirectMedia Layer
|
|
|
|
+ Copyright (C) 1997-2012 Sam Lantinga <[email protected]>
|
|
|
|
+
|
|
|
|
+ This software is provided 'as-is', without any express or implied
|
|
|
|
+ warranty. In no event will the authors be held liable for any damages
|
|
|
|
+ arising from the use of this software.
|
|
|
|
+
|
|
|
|
+ Permission is granted to anyone to use this software for any purpose,
|
|
|
|
+ including commercial applications, and to alter it and redistribute it
|
|
|
|
+ freely, subject to the following restrictions:
|
|
|
|
+
|
|
|
|
+ 1. The origin of this software must not be misrepresented; you must not
|
|
|
|
+ claim that you wrote the original software. If you use this software
|
|
|
|
+ in a product, an acknowledgment in the product documentation would be
|
|
|
|
+ appreciated but is not required.
|
|
|
|
+ 2. Altered source versions must be plainly marked as such, and must not be
|
|
|
|
+ misrepresented as being the original software.
|
|
|
|
+ 3. This notice may not be removed or altered from any source distribution.
|
|
|
|
+*/
|
|
|
|
+
|
|
|
|
+#include "SDL_config.h"
|
|
|
|
+
|
|
|
|
+#if SDL_VIDEO_DRIVER_WINRT
|
|
|
|
+
|
|
|
|
+/*
|
|
|
|
+ * Windows includes:
|
|
|
|
+ */
|
|
|
|
+#include <Windows.h>
|
|
|
|
+using namespace Windows::UI::Core;
|
|
|
|
+using Windows::UI::Core::CoreCursor;
|
|
|
|
+
|
|
|
|
+/*
|
|
|
|
+ * SDL includes:
|
|
|
|
+ */
|
|
|
|
+extern "C" {
|
|
|
|
+#include "SDL_assert.h"
|
|
|
|
+#include "../../events/SDL_mouse_c.h"
|
|
|
|
+#include "../SDL_sysvideo.h"
|
|
|
|
+#include "SDL_events.h"
|
|
|
|
+#include "SDL_log.h"
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+#include "../../core/winrt/SDL_winrtapp.h"
|
|
|
|
+#include "SDL_winrtmouse.h"
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+static SDL_bool WINRT_UseRelativeMouseMode = SDL_FALSE;
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+static SDL_Cursor *
|
|
|
|
+WINRT_CreateSystemCursor(SDL_SystemCursor id)
|
|
|
|
+{
|
|
|
|
+ SDL_Cursor *cursor;
|
|
|
|
+ CoreCursorType cursorType = CoreCursorType::Arrow;
|
|
|
|
+
|
|
|
|
+ switch(id)
|
|
|
|
+ {
|
|
|
|
+ default:
|
|
|
|
+ SDL_assert(0);
|
|
|
|
+ return NULL;
|
|
|
|
+ case SDL_SYSTEM_CURSOR_ARROW: cursorType = CoreCursorType::Arrow; break;
|
|
|
|
+ case SDL_SYSTEM_CURSOR_IBEAM: cursorType = CoreCursorType::IBeam; break;
|
|
|
|
+ case SDL_SYSTEM_CURSOR_WAIT: cursorType = CoreCursorType::Wait; break;
|
|
|
|
+ case SDL_SYSTEM_CURSOR_CROSSHAIR: cursorType = CoreCursorType::Cross; break;
|
|
|
|
+ case SDL_SYSTEM_CURSOR_WAITARROW: cursorType = CoreCursorType::Wait; break;
|
|
|
|
+ case SDL_SYSTEM_CURSOR_SIZENWSE: cursorType = CoreCursorType::SizeNorthwestSoutheast; break;
|
|
|
|
+ case SDL_SYSTEM_CURSOR_SIZENESW: cursorType = CoreCursorType::SizeNortheastSouthwest; break;
|
|
|
|
+ case SDL_SYSTEM_CURSOR_SIZEWE: cursorType = CoreCursorType::SizeWestEast; break;
|
|
|
|
+ case SDL_SYSTEM_CURSOR_SIZENS: cursorType = CoreCursorType::SizeNorthSouth; break;
|
|
|
|
+ case SDL_SYSTEM_CURSOR_SIZEALL: cursorType = CoreCursorType::SizeAll; break;
|
|
|
|
+ case SDL_SYSTEM_CURSOR_NO: cursorType = CoreCursorType::UniversalNo; break;
|
|
|
|
+ case SDL_SYSTEM_CURSOR_HAND: cursorType = CoreCursorType::Hand; break;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ cursor = (SDL_Cursor *) SDL_calloc(1, sizeof(*cursor));
|
|
|
|
+ if (cursor) {
|
|
|
|
+ /* Create a pointer to a COM reference to a cursor. The extra
|
|
|
|
+ pointer is used (on top of the COM reference) to allow the cursor
|
|
|
|
+ to be referenced by the SDL_cursor's driverdata field, which is
|
|
|
|
+ a void pointer.
|
|
|
|
+ */
|
|
|
|
+ CoreCursor ^* theCursor = new CoreCursor^(nullptr);
|
|
|
|
+ *theCursor = ref new CoreCursor(cursorType, 0);
|
|
|
|
+ cursor->driverdata = (void *) theCursor;
|
|
|
|
+ } else {
|
|
|
|
+ SDL_OutOfMemory();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ return cursor;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+static SDL_Cursor *
|
|
|
|
+WINRT_CreateDefaultCursor()
|
|
|
|
+{
|
|
|
|
+ return WINRT_CreateSystemCursor(SDL_SYSTEM_CURSOR_ARROW);
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+static void
|
|
|
|
+WINRT_FreeCursor(SDL_Cursor * cursor)
|
|
|
|
+{
|
|
|
|
+ if (cursor->driverdata) {
|
|
|
|
+ CoreCursor ^* theCursor = (CoreCursor ^*) cursor->driverdata;
|
|
|
|
+ *theCursor = nullptr; // Release the COM reference to the CoreCursor
|
|
|
|
+ delete theCursor; // Delete the pointer to the COM reference
|
|
|
|
+ }
|
|
|
|
+ SDL_free(cursor);
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+static int
|
|
|
|
+WINRT_ShowCursor(SDL_Cursor * cursor)
|
|
|
|
+{
|
|
|
|
+ if (cursor) {
|
|
|
|
+ CoreCursor ^* theCursor = (CoreCursor ^*) cursor->driverdata;
|
|
|
|
+ CoreWindow::GetForCurrentThread()->PointerCursor = *theCursor;
|
|
|
|
+ } else {
|
|
|
|
+ CoreWindow::GetForCurrentThread()->PointerCursor = nullptr;
|
|
|
|
+ }
|
|
|
|
+ return 0;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+static int
|
|
|
|
+WINRT_SetRelativeMouseMode(SDL_bool enabled)
|
|
|
|
+{
|
|
|
|
+ WINRT_UseRelativeMouseMode = enabled;
|
|
|
|
+ return 0;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+void
|
|
|
|
+WINRT_InitMouse(_THIS)
|
|
|
|
+{
|
|
|
|
+ SDL_Mouse *mouse = SDL_GetMouse();
|
|
|
|
+
|
|
|
|
+ /* DLudwig, Dec 3, 2012: WinRT does not currently provide APIs for
|
|
|
|
+ the following features, AFAIK:
|
|
|
|
+ - custom cursors (multiple system cursors are, however, available)
|
|
|
|
+ - programmatically moveable cursors
|
|
|
|
+ */
|
|
|
|
+
|
|
|
|
+#if WINAPI_FAMILY != WINAPI_FAMILY_PHONE_APP
|
|
|
|
+ //mouse->CreateCursor = WINRT_CreateCursor;
|
|
|
|
+ mouse->CreateSystemCursor = WINRT_CreateSystemCursor;
|
|
|
|
+ mouse->ShowCursor = WINRT_ShowCursor;
|
|
|
|
+ mouse->FreeCursor = WINRT_FreeCursor;
|
|
|
|
+ //mouse->WarpMouse = WINRT_WarpMouse;
|
|
|
|
+ mouse->SetRelativeMouseMode = WINRT_SetRelativeMouseMode;
|
|
|
|
+
|
|
|
|
+ SDL_SetDefaultCursor(WINRT_CreateDefaultCursor());
|
|
|
|
+#endif
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+void
|
|
|
|
+WINRT_QuitMouse(_THIS)
|
|
|
|
+{
|
|
|
|
+}
|
|
|
|
+
|
|
// Applies necessary geometric transformations to raw cursor positions:
|
|
// Applies necessary geometric transformations to raw cursor positions:
|
|
static Windows::Foundation::Point
|
|
static Windows::Foundation::Point
|
|
TransformCursor(SDL_Window * window, Windows::Foundation::Point rawPosition)
|
|
TransformCursor(SDL_Window * window, Windows::Foundation::Point rawPosition)
|
|
@@ -166,8 +166,8 @@ TransformCursor(SDL_Window * window, Windows::Foundation::Point rawPosition)
|
|
outputPosition.X = rawPosition.X * (((float32)window->w) / nativeWindow->Bounds.Width);
|
|
outputPosition.X = rawPosition.X * (((float32)window->w) / nativeWindow->Bounds.Width);
|
|
outputPosition.Y = rawPosition.Y * (((float32)window->h) / nativeWindow->Bounds.Height);
|
|
outputPosition.Y = rawPosition.Y * (((float32)window->h) / nativeWindow->Bounds.Height);
|
|
return outputPosition;
|
|
return outputPosition;
|
|
-}
|
|
|
|
-
|
|
|
|
|
|
+}
|
|
|
|
+
|
|
static inline int
|
|
static inline int
|
|
_lround(float arg)
|
|
_lround(float arg)
|
|
{
|
|
{
|
|
@@ -176,15 +176,15 @@ _lround(float arg)
|
|
} else {
|
|
} else {
|
|
return (int)ceil(arg - 0.5f);
|
|
return (int)ceil(arg - 0.5f);
|
|
}
|
|
}
|
|
-}
|
|
|
|
-
|
|
|
|
-void
|
|
|
|
-WINRT_ProcessMouseMovedEvent(SDL_Window * window, Windows::Devices::Input::MouseEventArgs ^args)
|
|
|
|
-{
|
|
|
|
- if (!window || !WINRT_UseRelativeMouseMode) {
|
|
|
|
- return;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+void
|
|
|
|
+WINRT_ProcessMouseMovedEvent(SDL_Window * window, Windows::Devices::Input::MouseEventArgs ^args)
|
|
|
|
+{
|
|
|
|
+ if (!window || !WINRT_UseRelativeMouseMode) {
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+
|
|
// DLudwig, 2012-12-28: On some systems, namely Visual Studio's Windows
|
|
// DLudwig, 2012-12-28: On some systems, namely Visual Studio's Windows
|
|
// Simulator, as well as Windows 8 in a Parallels 8 VM, MouseEventArgs'
|
|
// Simulator, as well as Windows 8 in a Parallels 8 VM, MouseEventArgs'
|
|
// MouseDelta field often reports very large values. More information
|
|
// MouseDelta field often reports very large values. More information
|
|
@@ -228,7 +228,7 @@ WINRT_ProcessMouseMovedEvent(SDL_Window * window, Windows::Devices::Input::Mouse
|
|
//
|
|
//
|
|
// One possible workaround would be to programmatically set the cursor's
|
|
// One possible workaround would be to programmatically set the cursor's
|
|
// position to the screen's center (when SDL's relative mouse mode is enabled),
|
|
// position to the screen's center (when SDL's relative mouse mode is enabled),
|
|
- // however Windows RT does not yet seem to have the ability to set the cursor's
|
|
|
|
|
|
+ // however WinRT does not yet seem to have the ability to set the cursor's
|
|
// position via a public API. Win32 did this via an API call, SetCursorPos,
|
|
// position via a public API. Win32 did this via an API call, SetCursorPos,
|
|
// however WinRT makes this function be private. Apps that use it won't get
|
|
// however WinRT makes this function be private. Apps that use it won't get
|
|
// approved for distribution in the Windows Store. I've yet to be able to find
|
|
// approved for distribution in the Windows Store. I've yet to be able to find
|
|
@@ -249,8 +249,8 @@ WINRT_ProcessMouseMovedEvent(SDL_Window * window, Windows::Devices::Input::Mouse
|
|
1,
|
|
1,
|
|
_lround(mouseDeltaInSDLWindowCoords.X),
|
|
_lround(mouseDeltaInSDLWindowCoords.X),
|
|
_lround(mouseDeltaInSDLWindowCoords.Y));
|
|
_lround(mouseDeltaInSDLWindowCoords.Y));
|
|
-}
|
|
|
|
-
|
|
|
|
|
|
+}
|
|
|
|
+
|
|
static Uint8
|
|
static Uint8
|
|
WINRT_GetSDLButtonForPointerPoint(Windows::UI::Input::PointerPoint ^pt)
|
|
WINRT_GetSDLButtonForPointerPoint(Windows::UI::Input::PointerPoint ^pt)
|
|
{
|
|
{
|
|
@@ -331,10 +331,10 @@ WINRT_LogPointerEvent(const char * header, PointerEventArgs ^ args, Windows::Fou
|
|
pt->FrameId,
|
|
pt->FrameId,
|
|
pt->PointerId,
|
|
pt->PointerId,
|
|
WINRT_ConvertPointerUpdateKindToString(args->CurrentPoint->Properties->PointerUpdateKind));
|
|
WINRT_ConvertPointerUpdateKindToString(args->CurrentPoint->Properties->PointerUpdateKind));
|
|
-}
|
|
|
|
-
|
|
|
|
-void
|
|
|
|
-WINRT_ProcessPointerMovedEvent(SDL_Window *window, Windows::UI::Core::PointerEventArgs ^args)
|
|
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+void
|
|
|
|
+WINRT_ProcessPointerMovedEvent(SDL_Window *window, Windows::UI::Core::PointerEventArgs ^args)
|
|
{
|
|
{
|
|
#if LOG_POINTER_EVENTS
|
|
#if LOG_POINTER_EVENTS
|
|
WINRT_LogPointerEvent("pointer moved", args, TransformCursor(args->CurrentPoint->Position));
|
|
WINRT_LogPointerEvent("pointer moved", args, TransformCursor(args->CurrentPoint->Position));
|
|
@@ -346,9 +346,9 @@ WINRT_ProcessPointerMovedEvent(SDL_Window *window, Windows::UI::Core::PointerEve
|
|
|
|
|
|
Windows::Foundation::Point transformedPoint = TransformCursor(window, args->CurrentPoint->Position);
|
|
Windows::Foundation::Point transformedPoint = TransformCursor(window, args->CurrentPoint->Position);
|
|
SDL_SendMouseMotion(window, 0, 0, (int)transformedPoint.X, (int)transformedPoint.Y);
|
|
SDL_SendMouseMotion(window, 0, 0, (int)transformedPoint.X, (int)transformedPoint.Y);
|
|
-}
|
|
|
|
-
|
|
|
|
-void
|
|
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+void
|
|
WINRT_ProcessPointerWheelChangedEvent(SDL_Window *window, Windows::UI::Core::PointerEventArgs ^args)
|
|
WINRT_ProcessPointerWheelChangedEvent(SDL_Window *window, Windows::UI::Core::PointerEventArgs ^args)
|
|
{
|
|
{
|
|
#if LOG_POINTER_EVENTS
|
|
#if LOG_POINTER_EVENTS
|
|
@@ -362,8 +362,8 @@ WINRT_ProcessPointerWheelChangedEvent(SDL_Window *window, Windows::UI::Core::Poi
|
|
// FIXME: This may need to accumulate deltas up to WHEEL_DELTA
|
|
// FIXME: This may need to accumulate deltas up to WHEEL_DELTA
|
|
short motion = args->CurrentPoint->Properties->MouseWheelDelta / WHEEL_DELTA;
|
|
short motion = args->CurrentPoint->Properties->MouseWheelDelta / WHEEL_DELTA;
|
|
SDL_SendMouseWheel(window, 0, 0, motion);
|
|
SDL_SendMouseWheel(window, 0, 0, motion);
|
|
-}
|
|
|
|
-
|
|
|
|
|
|
+}
|
|
|
|
+
|
|
void WINRT_ProcessPointerReleasedEvent(SDL_Window *window, Windows::UI::Core::PointerEventArgs ^args)
|
|
void WINRT_ProcessPointerReleasedEvent(SDL_Window *window, Windows::UI::Core::PointerEventArgs ^args)
|
|
{
|
|
{
|
|
#if LOG_POINTER_EVENTS
|
|
#if LOG_POINTER_EVENTS
|
|
@@ -378,8 +378,8 @@ void WINRT_ProcessPointerReleasedEvent(SDL_Window *window, Windows::UI::Core::Po
|
|
if (button) {
|
|
if (button) {
|
|
SDL_SendMouseButton(window, 0, SDL_RELEASED, button);
|
|
SDL_SendMouseButton(window, 0, SDL_RELEASED, button);
|
|
}
|
|
}
|
|
-}
|
|
|
|
-
|
|
|
|
|
|
+}
|
|
|
|
+
|
|
void WINRT_ProcessPointerPressedEvent(SDL_Window *window, Windows::UI::Core::PointerEventArgs ^args)
|
|
void WINRT_ProcessPointerPressedEvent(SDL_Window *window, Windows::UI::Core::PointerEventArgs ^args)
|
|
{
|
|
{
|
|
#if LOG_POINTER_EVENTS
|
|
#if LOG_POINTER_EVENTS
|
|
@@ -394,8 +394,8 @@ void WINRT_ProcessPointerPressedEvent(SDL_Window *window, Windows::UI::Core::Poi
|
|
if (button) {
|
|
if (button) {
|
|
SDL_SendMouseButton(window, 0, SDL_PRESSED, button);
|
|
SDL_SendMouseButton(window, 0, SDL_PRESSED, button);
|
|
}
|
|
}
|
|
-}
|
|
|
|
-
|
|
|
|
-#endif /* SDL_VIDEO_DRIVER_WINRT */
|
|
|
|
-
|
|
|
|
-/* vi: set ts=4 sw=4 expandtab: */
|
|
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+#endif /* SDL_VIDEO_DRIVER_WINRT */
|
|
|
|
+
|
|
|
|
+/* vi: set ts=4 sw=4 expandtab: */
|