< prev index next >
src/java.desktop/windows/native/libawt/windows/awt_Component.cpp
Print this page
@@ -580,10 +580,15 @@
LinkObjects(env, peer);
/* Subclass the window now so that we can snoop on its messages */
SubclassHWND();
+ AwtToolkit& tk = AwtToolkit::GetInstance();
+ if (tk.IsWin8OrLater()) {
+ tk.TIEnableMouseInPointer(true);
+ }
+
/*
* Fix for 4046446.
*/
SetWindowPos(GetHWnd(), 0, x, y, w, h, SWP_NOZORDER | SWP_NOCOPYBITS | SWP_NOACTIVATE);
@@ -1711,10 +1716,80 @@
GET_WHEEL_DELTA_WPARAM(wParam),
switchMessage == WM_MOUSEHWHEEL);
break;
}
break;
+
+ /* WM_POINTER is enabled for the TOUCH type 'pointer' input
+ This touch typed 'pointer' would map to the mouse functionality */
+ case WM_POINTERENTER:
+ {
+ AwtToolkit& tk = AwtToolkit::GetInstance();
+ UINT32 pointerId = GET_POINTERID_WPARAM(wParam);
+ POINTER_INFO pinfo;
+
+ if(tk.TIGetPointerInfo(pointerId, &pinfo)) {
+ if (pinfo.pointerType == PT_TOUCH) {
+ POINT pdDnPoint = pinfo.ptPixelLocation;
+ if(::ScreenToClient(GetHWnd(), &pdDnPoint)) {
+ mr = WmMouseEnter(static_cast<UINT>(wParam), pdDnPoint.x, pdDnPoint.y);
+ }
+ }
+ }
+ }
+ break;
+ case WM_POINTERLEAVE:
+ {
+ AwtToolkit& tk = AwtToolkit::GetInstance();
+ UINT32 pointerId = GET_POINTERID_WPARAM(wParam);
+ POINTER_INFO pinfo;
+
+ if(tk.TIGetPointerInfo(pointerId, &pinfo)) {
+ if (pinfo.pointerType == PT_TOUCH) {
+ POINT pdDnPoint = pinfo.ptPixelLocation;
+ if(::ScreenToClient(GetHWnd(), &pdDnPoint)) {
+ mr = WmMouseExit(static_cast<UINT>(wParam), pdDnPoint.x, pdDnPoint.y);
+ }
+ }
+ }
+ }
+ break;
+ case WM_POINTERDOWN:
+ {
+ AwtToolkit& tk = AwtToolkit::GetInstance();
+ UINT32 pointerId = GET_POINTERID_WPARAM(wParam);
+ POINTER_INFO pinfo;
+
+ if(tk.TIGetPointerInfo(pointerId, &pinfo)) {
+ if (pinfo.pointerType == PT_TOUCH) {
+ POINT pdDnPoint = pinfo.ptPixelLocation;
+ if(::ScreenToClient(GetHWnd(), &pdDnPoint)) {
+ mr = WmMouseDown(static_cast<UINT>(wParam), pdDnPoint.x, pdDnPoint.y,
+ LEFT_BUTTON);
+ }
+ }
+ }
+ }
+ break;
+ case WM_POINTERUP:
+ {
+ AwtToolkit& tk = AwtToolkit::GetInstance();
+ UINT32 pointerId = GET_POINTERID_WPARAM(wParam);
+ POINTER_INFO pinfo;
+
+ if(tk.TIGetPointerInfo(pointerId, &pinfo)) {
+ if (pinfo.pointerType == PT_TOUCH) {
+ POINT pdUpPoint = pinfo.ptPixelLocation;
+ if(::ScreenToClient(GetHWnd(), &pdUpPoint)) {
+ mr = WmMouseUp(static_cast<UINT>(wParam), pdUpPoint.x, pdUpPoint.y,
+ LEFT_BUTTON);
+ }
+ }
+ }
+ }
+ break;
+
case WM_SETCURSOR:
mr = mrDoDefault;
if (LOWORD(lParam) == HTCLIENT) {
if (AwtComponent* comp =
AwtComponent::GetComponent((HWND)wParam)) {
< prev index next >