< prev index next >

src/java.desktop/windows/native/libawt/windows/awt_Robot.cpp

Print this page

        

*** 1,7 **** /* ! * Copyright (c) 1998, 2017, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. Oracle designates this --- 1,7 ---- /* ! * Copyright (c) 1998, 2018, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. Oracle designates this
*** 41,106 **** AwtRobot::~AwtRobot() { } ! #ifndef SPI_GETMOUSESPEED ! #define SPI_GETMOUSESPEED 112 ! #endif ! ! #ifndef SPI_SETMOUSESPEED ! #define SPI_SETMOUSESPEED 113 ! #endif void AwtRobot::MouseMove( jint x, jint y) { ! // Fix for Bug 4288230. See Q193003 from MSDN. ! int oldAccel[3], newAccel[3]; ! INT_PTR oldSpeed, newSpeed; ! BOOL bResult; ! ! // The following values set mouse ballistics to 1 mickey/pixel. ! newAccel[0] = 0; ! newAccel[1] = 0; ! newAccel[2] = 0; ! newSpeed = 10; ! ! // Save the Current Mouse Acceleration Constants ! bResult = SystemParametersInfo(SPI_GETMOUSE,0,oldAccel,0); ! bResult = SystemParametersInfo(SPI_GETMOUSESPEED, 0, &oldSpeed,0); ! // Set the new Mouse Acceleration Constants (Disabled). ! bResult = SystemParametersInfo(SPI_SETMOUSE,0,newAccel,SPIF_SENDCHANGE); ! bResult = SystemParametersInfo(SPI_SETMOUSESPEED, 0, ! // 4504963: Though the third argument to SystemParameterInfo is ! // declared as a PVOID, as of Windows 2000 it is apparently ! // interpreted as an int. (The MSDN docs for SPI_SETMOUSESPEED ! // say that it's an integer between 1 and 20, the default being ! // 10). Instead of passing the @ of the desired value, the ! // value itself is now passed, cast as a PVOID so as to ! // compile. -bchristi 10/02/2001 ! (PVOID)newSpeed, ! SPIF_SENDCHANGE); ! ! int primaryIndex = AwtWin32GraphicsDevice::GetDefaultDeviceIndex(); ! Devices::InstanceAccess devices; ! AwtWin32GraphicsDevice *device = devices->GetDevice(primaryIndex); ! ! x = (device == NULL) ? x : device->ScaleUpX(x); ! y = (device == NULL) ? y : device->ScaleUpY(y); ! ! POINT curPos; ! ::GetCursorPos(&curPos); ! x -= curPos.x; ! y -= curPos.y; ! ! mouse_event(MOUSEEVENTF_MOVE,x,y,0,0); ! // Move the cursor to the desired coordinates. ! ! // Restore the old Mouse Acceleration Constants. ! bResult = SystemParametersInfo(SPI_SETMOUSE,0, oldAccel, SPIF_SENDCHANGE); ! bResult = SystemParametersInfo(SPI_SETMOUSESPEED, 0, (PVOID)oldSpeed, ! SPIF_SENDCHANGE); } void AwtRobot::MousePress( jint buttonMask ) { DWORD dwFlags = 0L; --- 41,64 ---- AwtRobot::~AwtRobot() { } ! static int signum(int i) { ! // special version of signum which returns 1 when value is 0 ! return i >= 0 ? 1 : -1; ! } void AwtRobot::MouseMove( jint x, jint y) { ! INPUT mouseInput = {0}; ! mouseInput.type = INPUT_MOUSE; ! mouseInput.mi.time = 0; ! mouseInput.mi.dwFlags = MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_MOVE; ! mouseInput.mi.dx = (x * 65536 /::GetSystemMetrics(SM_CXSCREEN)) + signum(x); ! mouseInput.mi.dy = (y * 65536 /::GetSystemMetrics(SM_CYSCREEN)) + signum(y); ! ::SendInput(1, &mouseInput, sizeof(mouseInput)); } void AwtRobot::MousePress( jint buttonMask ) { DWORD dwFlags = 0L;
< prev index next >