--- old/src/java.desktop/windows/native/libawt/windows/awt_Toolkit.cpp 2017-09-18 20:54:16.698412500 +0530 +++ new/src/java.desktop/windows/native/libawt/windows/awt_Toolkit.cpp 2017-09-18 20:54:15.723821700 +0530 @@ -305,6 +305,10 @@ m_isDynamicLayoutSet = FALSE; m_areExtraMouseButtonsEnabled = TRUE; + m_isWin8OrLater = FALSE; + m_pEnableMouseInPointerHandle = NULL; + m_pGetPointerInfoHandle = NULL; + m_verifyComponents = FALSE; m_breakOnError = FALSE; @@ -517,6 +521,21 @@ awt_dnd_initialize(); + /* + * Initialization of the touch related variables. + */ + tk.m_isWin8OrLater = IS_WIN8; + + if (tk.m_isWin8OrLater) { + HMODULE hUser32Dll = ::LoadLibrary(_T("user32.dll")); + if (hUser32Dll != NULL) { + tk.m_pEnableMouseInPointerHandle = (EnableMouseInPointerHandleFunc) + ::GetProcAddress(hUser32Dll, "EnableMouseInPointer"); + tk.m_pGetPointerInfoHandle = (GetPointerInfoHandleFunc) + ::GetProcAddress(hUser32Dll, "GetPointerInfo"); + } + } + return TRUE; } @@ -541,6 +560,9 @@ awt_dnd_uninitialize(); awt_clipboard_uninitialize((JNIEnv *)JNU_GetEnv(jvm, JNI_VERSION_1_2)); + m_pEnableMouseInPointerHandle = NULL; + m_pGetPointerInfoHandle = NULL; + if (tk.m_inputMethodHWnd != NULL) { ::SendMessage(tk.m_inputMethodHWnd, WM_IME_CONTROL, IMC_OPENSTATUSWINDOW, 0); } @@ -2824,3 +2846,24 @@ UINT AwtToolkit::GetNumberOfButtons() { return MOUSE_BUTTONS_WINDOWS_SUPPORTED; } + +bool AwtToolkit::IsWin8OrLater() { + return m_isWin8OrLater; +} + +BOOL AwtToolkit::TIEnableMouseInPointer(BOOL enable) { + if (m_pEnableMouseInPointerHandle == NULL) { + return FALSE; + } + + return m_pEnableMouseInPointerHandle(enable); +} + +BOOL AwtToolkit::TIGetPointerInfo(UINT32 pointerID, POINTER_INFO *pointerInfo) +{ + if (m_pGetPointerInfoHandle == NULL) { + return FALSE; + } + + return m_pGetPointerInfoHandle(pointerID, pointerInfo); +}