|
@@ -184,97 +184,48 @@ static void WINRT_SetDisplayOrientationsPreference(void *userdata, const char *n
|
|
|
}
|
|
|
|
|
|
static void
|
|
|
-WINRT_ProcessWindowSizeChange()
|
|
|
-{
|
|
|
- SDL_VideoDevice *_this = SDL_GetVideoDevice();
|
|
|
-
|
|
|
- // Make the new window size be the one true fullscreen mode.
|
|
|
- // This change was initially done, in part, to allow the Direct3D 11.1
|
|
|
- // renderer to receive window-resize events as a device rotates.
|
|
|
- // Before, rotating a device from landscape, to portrait, and then
|
|
|
- // back to landscape would cause the Direct3D 11.1 swap buffer to
|
|
|
- // not get resized appropriately. SDL would, on the rotation from
|
|
|
- // landscape to portrait, re-resize the SDL window to it's initial
|
|
|
- // size (landscape). On the subsequent rotation, SDL would drop the
|
|
|
- // window-resize event as it appeared the SDL window didn't change
|
|
|
- // size, and the Direct3D 11.1 renderer wouldn't resize its swap
|
|
|
- // chain.
|
|
|
- SDL_DisplayMode newDisplayMode;
|
|
|
- if (WINRT_CalcDisplayModeUsingNativeWindow(&newDisplayMode) != 0) {
|
|
|
- return;
|
|
|
- }
|
|
|
-
|
|
|
- // Make note of the old display mode, and it's old driverdata.
|
|
|
- SDL_DisplayMode oldDisplayMode;
|
|
|
- SDL_zero(oldDisplayMode);
|
|
|
- if (_this) {
|
|
|
- oldDisplayMode = _this->displays[0].desktop_mode;
|
|
|
- }
|
|
|
-
|
|
|
- // Setup the new display mode in the appropriate spots.
|
|
|
- if (_this) {
|
|
|
- // Make a full copy of the display mode for display_modes[0],
|
|
|
- // one with with a separately malloced 'driverdata' field.
|
|
|
- // SDL_VideoQuit(), if called, will attempt to free the driverdata
|
|
|
- // fields in 'desktop_mode' and each entry in the 'display_modes'
|
|
|
- // array.
|
|
|
- if (_this->displays[0].display_modes[0].driverdata) {
|
|
|
- // Free the previous mode's memory
|
|
|
- SDL_free(_this->displays[0].display_modes[0].driverdata);
|
|
|
- _this->displays[0].display_modes[0].driverdata = NULL;
|
|
|
- }
|
|
|
- if (WINRT_DuplicateDisplayMode(&(_this->displays[0].display_modes[0]), &newDisplayMode) != 0) {
|
|
|
- // Uh oh, something went wrong. A malloc call probably failed.
|
|
|
- SDL_free(newDisplayMode.driverdata);
|
|
|
- return;
|
|
|
- }
|
|
|
-
|
|
|
- // Install 'newDisplayMode' into 'current_mode' and 'desktop_mode'.
|
|
|
- _this->displays[0].current_mode = newDisplayMode;
|
|
|
- _this->displays[0].desktop_mode = newDisplayMode;
|
|
|
- }
|
|
|
-
|
|
|
- if (WINRT_GlobalSDLWindow) {
|
|
|
- // If the window size changed, send a resize event to SDL and its host app:
|
|
|
- int window_w = 0;
|
|
|
- int window_h = 0;
|
|
|
- SDL_GetWindowSize(WINRT_GlobalSDLWindow, &window_w, &window_h);
|
|
|
- if ((window_w != newDisplayMode.w) || (window_h != newDisplayMode.h)) {
|
|
|
- SDL_SendWindowEvent(
|
|
|
- WINRT_GlobalSDLWindow,
|
|
|
- SDL_WINDOWEVENT_RESIZED,
|
|
|
- newDisplayMode.w,
|
|
|
- newDisplayMode.h);
|
|
|
- } else {
|
|
|
-#if WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP
|
|
|
- // HACK: Make sure that orientation changes
|
|
|
- // lead to the Direct3D renderer's viewport getting updated:
|
|
|
- //
|
|
|
- // For some reason, this doesn't seem to need to be done on Windows 8.x,
|
|
|
- // even when going from Landscape to LandscapeFlipped. It only seems to
|
|
|
- // be needed on Windows Phone, at least when I tested on my devices.
|
|
|
- // I'm not currently sure why this is, but it seems to work fine. -- David L.
|
|
|
- //
|
|
|
- // TODO, WinRT: do more extensive research into why orientation changes on Win 8.x don't need D3D changes, or if they might, in some cases
|
|
|
- const DisplayOrientations oldOrientation = ((SDL_DisplayModeData *)oldDisplayMode.driverdata)->currentOrientation;
|
|
|
- const DisplayOrientations newOrientation = ((SDL_DisplayModeData *)newDisplayMode.driverdata)->currentOrientation;
|
|
|
- if (oldOrientation != newOrientation)
|
|
|
- {
|
|
|
- SDL_SendWindowEvent(
|
|
|
- WINRT_GlobalSDLWindow,
|
|
|
- SDL_WINDOWEVENT_SIZE_CHANGED,
|
|
|
- newDisplayMode.w,
|
|
|
- newDisplayMode.h);
|
|
|
+WINRT_ProcessWindowSizeChange() // TODO: Pass an SDL_Window-identifying thing into WINRT_ProcessWindowSizeChange()
|
|
|
+{
|
|
|
+ CoreWindow ^ coreWindow = CoreWindow::GetForCurrentThread();
|
|
|
+ if (coreWindow) {
|
|
|
+ if (WINRT_GlobalSDLWindow) {
|
|
|
+ SDL_Window * window = WINRT_GlobalSDLWindow;
|
|
|
+ SDL_WindowData * data = (SDL_WindowData *) window->driverdata;
|
|
|
+
|
|
|
+ int x = WINRT_DIPS_TO_PHYSICAL_PIXELS(data->coreWindow->Bounds.Left);
|
|
|
+ int y = WINRT_DIPS_TO_PHYSICAL_PIXELS(data->coreWindow->Bounds.Top);
|
|
|
+ int w = WINRT_DIPS_TO_PHYSICAL_PIXELS(data->coreWindow->Bounds.Width);
|
|
|
+ int h = WINRT_DIPS_TO_PHYSICAL_PIXELS(data->coreWindow->Bounds.Height);
|
|
|
+
|
|
|
+#if (WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP) && (NTDDI_VERSION == NTDDI_WIN8)
|
|
|
+ /* WinPhone 8.0 always keeps its native window size in portrait,
|
|
|
+ regardless of orientation. This changes in WinPhone 8.1,
|
|
|
+ in which the native window's size changes along with
|
|
|
+ orientation.
|
|
|
+
|
|
|
+ Attempt to emulate WinPhone 8.1's behavior on WinPhone 8.0, with
|
|
|
+ regards to window size. This fixes a rendering bug that occurs
|
|
|
+ when a WinPhone 8.0 app is rotated to either 90 or 270 degrees.
|
|
|
+ */
|
|
|
+ const DisplayOrientations currentOrientation = WINRT_DISPLAY_PROPERTY(CurrentOrientation);
|
|
|
+ switch (currentOrientation) {
|
|
|
+ case DisplayOrientations::Landscape:
|
|
|
+ case DisplayOrientations::LandscapeFlipped: {
|
|
|
+ int tmp = w;
|
|
|
+ w = h;
|
|
|
+ h = tmp;
|
|
|
+ } break;
|
|
|
}
|
|
|
#endif
|
|
|
+
|
|
|
+ WINRT_UpdateWindowFlags(window, SDL_WINDOW_MAXIMIZED | SDL_WINDOW_FULLSCREEN_DESKTOP);
|
|
|
+
|
|
|
+ /* The window can move during a resize event, such as when maximizing
|
|
|
+ or resizing from a corner */
|
|
|
+ SDL_SendWindowEvent(window, SDL_WINDOWEVENT_MOVED, x, y);
|
|
|
+ SDL_SendWindowEvent(window, SDL_WINDOWEVENT_RESIZED, w, h);
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
- // Finally, free the 'driverdata' field of the old 'desktop_mode'.
|
|
|
- if (oldDisplayMode.driverdata) {
|
|
|
- SDL_free(oldDisplayMode.driverdata);
|
|
|
- oldDisplayMode.driverdata = NULL;
|
|
|
- }
|
|
|
}
|
|
|
|
|
|
SDL_WinRTApp::SDL_WinRTApp() :
|
|
@@ -286,7 +237,7 @@ SDL_WinRTApp::SDL_WinRTApp() :
|
|
|
void SDL_WinRTApp::Initialize(CoreApplicationView^ applicationView)
|
|
|
{
|
|
|
applicationView->Activated +=
|
|
|
- ref new TypedEventHandler<CoreApplicationView^, IActivatedEventArgs^>(this, &SDL_WinRTApp::OnActivated);
|
|
|
+ ref new TypedEventHandler<CoreApplicationView^, IActivatedEventArgs^>(this, &SDL_WinRTApp::OnAppActivated);
|
|
|
|
|
|
CoreApplication::Suspending +=
|
|
|
ref new EventHandler<SuspendingEventArgs^>(this, &SDL_WinRTApp::OnSuspending);
|
|
@@ -305,35 +256,61 @@ void SDL_WinRTApp::OnOrientationChanged(Object^ sender)
|
|
|
#endif
|
|
|
{
|
|
|
#if LOG_ORIENTATION_EVENTS==1
|
|
|
- CoreWindow^ window = CoreWindow::GetForCurrentThread();
|
|
|
- if (window) {
|
|
|
- SDL_Log("%s, current orientation=%d, native orientation=%d, auto rot. pref=%d, CoreWindow Size={%f,%f}\n",
|
|
|
- __FUNCTION__,
|
|
|
- WINRT_DISPLAY_PROPERTY(CurrentOrientation),
|
|
|
- WINRT_DISPLAY_PROPERTY(NativeOrientation),
|
|
|
- WINRT_DISPLAY_PROPERTY(AutoRotationPreferences),
|
|
|
- window->Bounds.Width,
|
|
|
- window->Bounds.Height);
|
|
|
- } else {
|
|
|
- SDL_Log("%s, current orientation=%d, native orientation=%d, auto rot. pref=%d\n",
|
|
|
- __FUNCTION__,
|
|
|
- WINRT_DISPLAY_PROPERTY(CurrentOrientation),
|
|
|
- WINRT_DISPLAY_PROPERTY(NativeOrientation),
|
|
|
- WINRT_DISPLAY_PROPERTY(AutoRotationPreferences));
|
|
|
+ {
|
|
|
+ CoreWindow^ window = CoreWindow::GetForCurrentThread();
|
|
|
+ if (window) {
|
|
|
+ SDL_Log("%s, current orientation=%d, native orientation=%d, auto rot. pref=%d, CoreWindow Bounds={%f,%f,%f,%f}\n",
|
|
|
+ __FUNCTION__,
|
|
|
+ WINRT_DISPLAY_PROPERTY(CurrentOrientation),
|
|
|
+ WINRT_DISPLAY_PROPERTY(NativeOrientation),
|
|
|
+ WINRT_DISPLAY_PROPERTY(AutoRotationPreferences),
|
|
|
+ window->Bounds.X,
|
|
|
+ window->Bounds.Y,
|
|
|
+ window->Bounds.Width,
|
|
|
+ window->Bounds.Height);
|
|
|
+ } else {
|
|
|
+ SDL_Log("%s, current orientation=%d, native orientation=%d, auto rot. pref=%d\n",
|
|
|
+ __FUNCTION__,
|
|
|
+ WINRT_DISPLAY_PROPERTY(CurrentOrientation),
|
|
|
+ WINRT_DISPLAY_PROPERTY(NativeOrientation),
|
|
|
+ WINRT_DISPLAY_PROPERTY(AutoRotationPreferences));
|
|
|
+ }
|
|
|
}
|
|
|
#endif
|
|
|
|
|
|
WINRT_ProcessWindowSizeChange();
|
|
|
+
|
|
|
+#if WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP
|
|
|
+ // HACK: Make sure that orientation changes
|
|
|
+ // lead to the Direct3D renderer's viewport getting updated:
|
|
|
+ //
|
|
|
+ // For some reason, this doesn't seem to need to be done on Windows 8.x,
|
|
|
+ // even when going from Landscape to LandscapeFlipped. It only seems to
|
|
|
+ // be needed on Windows Phone, at least when I tested on my devices.
|
|
|
+ // I'm not currently sure why this is, but it seems to work fine. -- David L.
|
|
|
+ //
|
|
|
+ // TODO, WinRT: do more extensive research into why orientation changes on Win 8.x don't need D3D changes, or if they might, in some cases
|
|
|
+ SDL_Window * window = WINRT_GlobalSDLWindow;
|
|
|
+ if (window) {
|
|
|
+ SDL_WindowData * data = (SDL_WindowData *)window->driverdata;
|
|
|
+ int w = WINRT_DIPS_TO_PHYSICAL_PIXELS(data->coreWindow->Bounds.Width);
|
|
|
+ int h = WINRT_DIPS_TO_PHYSICAL_PIXELS(data->coreWindow->Bounds.Height);
|
|
|
+ SDL_SendWindowEvent(WINRT_GlobalSDLWindow, SDL_WINDOWEVENT_SIZE_CHANGED, w, h);
|
|
|
+ }
|
|
|
+#endif
|
|
|
+
|
|
|
}
|
|
|
|
|
|
void SDL_WinRTApp::SetWindow(CoreWindow^ window)
|
|
|
{
|
|
|
#if LOG_WINDOW_EVENTS==1
|
|
|
- SDL_Log("%s, current orientation=%d, native orientation=%d, auto rot. pref=%d, window Size={%f,%f}\n",
|
|
|
+ SDL_Log("%s, current orientation=%d, native orientation=%d, auto rot. pref=%d, window bounds={%f, %f, %f,%f}\n",
|
|
|
__FUNCTION__,
|
|
|
WINRT_DISPLAY_PROPERTY(CurrentOrientation),
|
|
|
WINRT_DISPLAY_PROPERTY(NativeOrientation),
|
|
|
WINRT_DISPLAY_PROPERTY(AutoRotationPreferences),
|
|
|
+ window->Bounds.X,
|
|
|
+ window->Bounds.Y,
|
|
|
window->Bounds.Width,
|
|
|
window->Bounds.Height);
|
|
|
#endif
|
|
@@ -344,6 +321,9 @@ void SDL_WinRTApp::SetWindow(CoreWindow^ window)
|
|
|
window->VisibilityChanged +=
|
|
|
ref new TypedEventHandler<CoreWindow^, VisibilityChangedEventArgs^>(this, &SDL_WinRTApp::OnVisibilityChanged);
|
|
|
|
|
|
+ window->Activated +=
|
|
|
+ ref new TypedEventHandler<CoreWindow^, WindowActivatedEventArgs^>(this, &SDL_WinRTApp::OnWindowActivated);
|
|
|
+
|
|
|
window->Closed +=
|
|
|
ref new TypedEventHandler<CoreWindow^, CoreWindowEventArgs^>(this, &SDL_WinRTApp::OnWindowClosed);
|
|
|
|
|
@@ -360,6 +340,12 @@ void SDL_WinRTApp::SetWindow(CoreWindow^ window)
|
|
|
window->PointerReleased +=
|
|
|
ref new TypedEventHandler<CoreWindow^, PointerEventArgs^>(this, &SDL_WinRTApp::OnPointerReleased);
|
|
|
|
|
|
+ window->PointerEntered +=
|
|
|
+ ref new TypedEventHandler<CoreWindow^, PointerEventArgs^>(this, &SDL_WinRTApp::OnPointerEntered);
|
|
|
+
|
|
|
+ window->PointerExited +=
|
|
|
+ ref new TypedEventHandler<CoreWindow^, PointerEventArgs^>(this, &SDL_WinRTApp::OnPointerExited);
|
|
|
+
|
|
|
window->PointerWheelChanged +=
|
|
|
ref new TypedEventHandler<CoreWindow^, PointerEventArgs^>(this, &SDL_WinRTApp::OnPointerWheelChanged);
|
|
|
|
|
@@ -535,9 +521,10 @@ void SDL_WinRTApp::OnSettingsPaneCommandsRequested(
|
|
|
void SDL_WinRTApp::OnWindowSizeChanged(CoreWindow^ sender, WindowSizeChangedEventArgs^ args)
|
|
|
{
|
|
|
#if LOG_WINDOW_EVENTS==1
|
|
|
- SDL_Log("%s, size={%f,%f}, current orientation=%d, native orientation=%d, auto rot. pref=%d, WINRT_GlobalSDLWindow?=%s\n",
|
|
|
+ SDL_Log("%s, size={%f,%f}, bounds={%f,%f,%f,%f}, current orientation=%d, native orientation=%d, auto rot. pref=%d, WINRT_GlobalSDLWindow?=%s\n",
|
|
|
__FUNCTION__,
|
|
|
args->Size.Width, args->Size.Height,
|
|
|
+ sender->Bounds.X, sender->Bounds.Y, sender->Bounds.Width, sender->Bounds.Height,
|
|
|
WINRT_DISPLAY_PROPERTY(CurrentOrientation),
|
|
|
WINRT_DISPLAY_PROPERTY(NativeOrientation),
|
|
|
WINRT_DISPLAY_PROPERTY(AutoRotationPreferences),
|
|
@@ -550,20 +537,26 @@ void SDL_WinRTApp::OnWindowSizeChanged(CoreWindow^ sender, WindowSizeChangedEven
|
|
|
void SDL_WinRTApp::OnVisibilityChanged(CoreWindow^ sender, VisibilityChangedEventArgs^ args)
|
|
|
{
|
|
|
#if LOG_WINDOW_EVENTS==1
|
|
|
- SDL_Log("%s, visible?=%s, WINRT_GlobalSDLWindow?=%s\n",
|
|
|
+ SDL_Log("%s, visible?=%s, bounds={%f,%f,%f,%f}, WINRT_GlobalSDLWindow?=%s\n",
|
|
|
__FUNCTION__,
|
|
|
(args->Visible ? "yes" : "no"),
|
|
|
+ sender->Bounds.X, sender->Bounds.Y,
|
|
|
+ sender->Bounds.Width, sender->Bounds.Height,
|
|
|
(WINRT_GlobalSDLWindow ? "yes" : "no"));
|
|
|
#endif
|
|
|
|
|
|
m_windowVisible = args->Visible;
|
|
|
if (WINRT_GlobalSDLWindow) {
|
|
|
SDL_bool wasSDLWindowSurfaceValid = WINRT_GlobalSDLWindow->surface_valid;
|
|
|
-
|
|
|
+ Uint32 latestWindowFlags = WINRT_DetectWindowFlags(WINRT_GlobalSDLWindow);
|
|
|
if (args->Visible) {
|
|
|
SDL_SendWindowEvent(WINRT_GlobalSDLWindow, SDL_WINDOWEVENT_SHOWN, 0, 0);
|
|
|
SDL_SendWindowEvent(WINRT_GlobalSDLWindow, SDL_WINDOWEVENT_FOCUS_GAINED, 0, 0);
|
|
|
- SDL_SendWindowEvent(WINRT_GlobalSDLWindow, SDL_WINDOWEVENT_RESTORED, 0, 0);
|
|
|
+ if (latestWindowFlags & SDL_WINDOW_MAXIMIZED) {
|
|
|
+ SDL_SendWindowEvent(WINRT_GlobalSDLWindow, SDL_WINDOWEVENT_MAXIMIZED, 0, 0);
|
|
|
+ } else {
|
|
|
+ SDL_SendWindowEvent(WINRT_GlobalSDLWindow, SDL_WINDOWEVENT_RESTORED, 0, 0);
|
|
|
+ }
|
|
|
} else {
|
|
|
SDL_SendWindowEvent(WINRT_GlobalSDLWindow, SDL_WINDOWEVENT_HIDDEN, 0, 0);
|
|
|
SDL_SendWindowEvent(WINRT_GlobalSDLWindow, SDL_WINDOWEVENT_FOCUS_LOST, 0, 0);
|
|
@@ -580,6 +573,59 @@ void SDL_WinRTApp::OnVisibilityChanged(CoreWindow^ sender, VisibilityChangedEven
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+void SDL_WinRTApp::OnWindowActivated(CoreWindow^ sender, WindowActivatedEventArgs^ args)
|
|
|
+{
|
|
|
+#if LOG_WINDOW_EVENTS==1
|
|
|
+ SDL_Log("%s, WINRT_GlobalSDLWindow?=%s\n\n",
|
|
|
+ __FUNCTION__,
|
|
|
+ (WINRT_GlobalSDLWindow ? "yes" : "no"));
|
|
|
+#endif
|
|
|
+
|
|
|
+ /* There's no property in Win 8.x to tell whether a window is active or
|
|
|
+ not. [De]activation events are, however, sent to the app. We'll just
|
|
|
+ record those, in case the CoreWindow gets wrapped by an SDL_Window at
|
|
|
+ some future time.
|
|
|
+ */
|
|
|
+ sender->CustomProperties->Insert("SDLHelperWindowActivationState", args->WindowActivationState);
|
|
|
+
|
|
|
+ SDL_Window * window = WINRT_GlobalSDLWindow;
|
|
|
+ if (window) {
|
|
|
+ if (args->WindowActivationState != CoreWindowActivationState::Deactivated) {
|
|
|
+ SDL_SendWindowEvent(window, SDL_WINDOWEVENT_SHOWN, 0, 0);
|
|
|
+ if (SDL_GetKeyboardFocus() != window) {
|
|
|
+ SDL_SetKeyboardFocus(window);
|
|
|
+ }
|
|
|
+
|
|
|
+ /* Send a mouse-motion event as appropriate.
|
|
|
+ This doesn't work when called from OnPointerEntered, at least
|
|
|
+ not in WinRT CoreWindow apps (as OnPointerEntered doesn't
|
|
|
+ appear to be called after window-reactivation, at least not
|
|
|
+ in Windows 10, Build 10586.3 (November 2015 update, non-beta).
|
|
|
+
|
|
|
+ Don't do it on WinPhone 8.0 though, as CoreWindow's 'PointerPosition'
|
|
|
+ property isn't available.
|
|
|
+ */
|
|
|
+#if (WINAPI_FAMILY != WINAPI_FAMILY_PHONE_APP) || (NTDDI_VERSION >= NTDDI_WINBLUE)
|
|
|
+ Point cursorPos = WINRT_TransformCursorPosition(window, sender->PointerPosition, TransformToSDLWindowSize);
|
|
|
+ SDL_SendMouseMotion(window, 0, 0, (int)cursorPos.X, (int)cursorPos.Y);
|
|
|
+#endif
|
|
|
+
|
|
|
+ /* TODO, WinRT: see if the Win32 bugfix from https://hg.libsdl.org/SDL/rev/d278747da408 needs to be applied (on window activation) */
|
|
|
+ //WIN_CheckAsyncMouseRelease(data);
|
|
|
+
|
|
|
+ /* TODO, WinRT: implement clipboard support, if possible */
|
|
|
+ ///*
|
|
|
+ // * FIXME: Update keyboard state
|
|
|
+ // */
|
|
|
+ //WIN_CheckClipboardUpdate(data->videodata);
|
|
|
+ } else {
|
|
|
+ if (SDL_GetKeyboardFocus() == window) {
|
|
|
+ SDL_SetKeyboardFocus(NULL);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
void SDL_WinRTApp::OnWindowClosed(CoreWindow^ sender, CoreWindowEventArgs^ args)
|
|
|
{
|
|
|
#if LOG_WINDOW_EVENTS==1
|
|
@@ -588,7 +634,7 @@ void SDL_WinRTApp::OnWindowClosed(CoreWindow^ sender, CoreWindowEventArgs^ args)
|
|
|
m_windowClosed = true;
|
|
|
}
|
|
|
|
|
|
-void SDL_WinRTApp::OnActivated(CoreApplicationView^ applicationView, IActivatedEventArgs^ args)
|
|
|
+void SDL_WinRTApp::OnAppActivated(CoreApplicationView^ applicationView, IActivatedEventArgs^ args)
|
|
|
{
|
|
|
CoreWindow::GetForCurrentThread()->Activate();
|
|
|
}
|
|
@@ -688,10 +734,28 @@ void SDL_WinRTApp::OnPointerReleased(CoreWindow^ sender, PointerEventArgs^ args)
|
|
|
#if LOG_POINTER_EVENTS
|
|
|
WINRT_LogPointerEvent("pointer released", args, WINRT_TransformCursorPosition(WINRT_GlobalSDLWindow, args->CurrentPoint->Position, TransformToSDLWindowSize));
|
|
|
#endif
|
|
|
-
|
|
|
+
|
|
|
WINRT_ProcessPointerReleasedEvent(WINRT_GlobalSDLWindow, args->CurrentPoint);
|
|
|
}
|
|
|
|
|
|
+void SDL_WinRTApp::OnPointerEntered(CoreWindow^ sender, PointerEventArgs^ args)
|
|
|
+{
|
|
|
+#if LOG_POINTER_EVENTS
|
|
|
+ WINRT_LogPointerEvent("pointer entered", args, WINRT_TransformCursorPosition(WINRT_GlobalSDLWindow, args->CurrentPoint->Position, TransformToSDLWindowSize));
|
|
|
+#endif
|
|
|
+
|
|
|
+ WINRT_ProcessPointerEnteredEvent(WINRT_GlobalSDLWindow, args->CurrentPoint);
|
|
|
+}
|
|
|
+
|
|
|
+void SDL_WinRTApp::OnPointerExited(CoreWindow^ sender, PointerEventArgs^ args)
|
|
|
+{
|
|
|
+#if LOG_POINTER_EVENTS
|
|
|
+ WINRT_LogPointerEvent("pointer exited", args, WINRT_TransformCursorPosition(WINRT_GlobalSDLWindow, args->CurrentPoint->Position, TransformToSDLWindowSize));
|
|
|
+#endif
|
|
|
+
|
|
|
+ WINRT_ProcessPointerExitedEvent(WINRT_GlobalSDLWindow, args->CurrentPoint);
|
|
|
+}
|
|
|
+
|
|
|
void SDL_WinRTApp::OnPointerWheelChanged(CoreWindow^ sender, PointerEventArgs^ args)
|
|
|
{
|
|
|
#if LOG_POINTER_EVENTS
|