src/windows/native/sun/windows/awt_Component.cpp
Print this page
*** 2134,2156 ****
}
return time;
}
jlong getMessageTimeUTC() {
! return windowsToUTC(getMessageTimeWindows());
! }
!
! // If calling order of GetTickCount and JVM_CurrentTimeMillis
! // is swapped, it would sometimes give different result.
! // Anyway, we would not always have determinism
! // and sortedness of time conversion here (due to Windows's
! // timers peculiarities). Having some euristic algorithm might
! // help here.
! jlong windowsToUTC(DWORD windowsTime) {
! jlong offset = ::GetTickCount() - windowsTime;
! jlong jvm_time = ::JVM_CurrentTimeMillis(NULL, 0);
! return jvm_time - offset;
}
} //TimeHelper
MsgRouting AwtComponent::WmPaint(HDC)
{
--- 2134,2144 ----
}
return time;
}
jlong getMessageTimeUTC() {
! return ::JVM_CurrentTimeMillis(NULL, 0);
}
} //TimeHelper
MsgRouting AwtComponent::WmPaint(HDC)
{
*** 3571,3591 ****
UINT jkey = WindowsKeyToJavaKey(wkey, modifiers, character, isDeadKey);
UpdateDynPrimaryKeymap(wkey, jkey, keyLocation, modifiers);
SendKeyEventToFocusOwner(java_awt_event_KeyEvent_KEY_PRESSED,
! TimeHelper::windowsToUTC(msg.time), jkey, character,
modifiers, keyLocation, (jlong)wkey, &msg);
// bugid 4724007: Windows does not create a WM_CHAR for the Del key
// for some reason, so we need to create the KEY_TYPED event on the
// WM_KEYDOWN. Use null msg so the character doesn't get sent back
// to the native window for processing (this event is synthesized
// for Java - we don't want Windows trying to process it).
if (jkey == java_awt_event_KeyEvent_VK_DELETE) {
SendKeyEventToFocusOwner(java_awt_event_KeyEvent_KEY_TYPED,
! TimeHelper::windowsToUTC(msg.time),
java_awt_event_KeyEvent_VK_UNDEFINED,
character, modifiers,
java_awt_event_KeyEvent_KEY_LOCATION_UNKNOWN, (jlong)0);
}
--- 3559,3579 ----
UINT jkey = WindowsKeyToJavaKey(wkey, modifiers, character, isDeadKey);
UpdateDynPrimaryKeymap(wkey, jkey, keyLocation, modifiers);
SendKeyEventToFocusOwner(java_awt_event_KeyEvent_KEY_PRESSED,
! TimeHelper::getMessageTimeUTC(), jkey, character,
modifiers, keyLocation, (jlong)wkey, &msg);
// bugid 4724007: Windows does not create a WM_CHAR for the Del key
// for some reason, so we need to create the KEY_TYPED event on the
// WM_KEYDOWN. Use null msg so the character doesn't get sent back
// to the native window for processing (this event is synthesized
// for Java - we don't want Windows trying to process it).
if (jkey == java_awt_event_KeyEvent_VK_DELETE) {
SendKeyEventToFocusOwner(java_awt_event_KeyEvent_KEY_TYPED,
! TimeHelper::getMessageTimeUTC(),
java_awt_event_KeyEvent_VK_UNDEFINED,
character, modifiers,
java_awt_event_KeyEvent_KEY_LOCATION_UNKNOWN, (jlong)0);
}
*** 3613,3623 ****
UINT character = WindowsKeyToJavaChar(wkey, modifiers, LOAD, isDeadKey);
UINT jkey = WindowsKeyToJavaKey(wkey, modifiers, character, isDeadKey);
UpdateDynPrimaryKeymap(wkey, jkey, keyLocation, modifiers);
SendKeyEventToFocusOwner(java_awt_event_KeyEvent_KEY_RELEASED,
! TimeHelper::windowsToUTC(msg.time), jkey, character,
modifiers, keyLocation, (jlong)wkey, &msg);
return mrConsume;
}
MsgRouting AwtComponent::WmInputLangChange(UINT charset, HKL hKeyboardLayout)
--- 3601,3611 ----
UINT character = WindowsKeyToJavaChar(wkey, modifiers, LOAD, isDeadKey);
UINT jkey = WindowsKeyToJavaKey(wkey, modifiers, character, isDeadKey);
UpdateDynPrimaryKeymap(wkey, jkey, keyLocation, modifiers);
SendKeyEventToFocusOwner(java_awt_event_KeyEvent_KEY_RELEASED,
! TimeHelper::getMessageTimeUTC(), jkey, character,
modifiers, keyLocation, (jlong)wkey, &msg);
return mrConsume;
}
MsgRouting AwtComponent::WmInputLangChange(UINT charset, HKL hKeyboardLayout)
*** 3658,3668 ****
InitMessage(&msg, WM_IME_CHAR, character,
MAKELPARAM(repCnt, flags));
jint modifiers = GetJavaModifiers();
SendKeyEventToFocusOwner(java_awt_event_KeyEvent_KEY_TYPED,
! TimeHelper::windowsToUTC(msg.time),
java_awt_event_KeyEvent_VK_UNDEFINED,
unicodeChar, modifiers,
java_awt_event_KeyEvent_KEY_LOCATION_UNKNOWN, (jlong)0,
&msg);
return mrConsume;
--- 3646,3656 ----
InitMessage(&msg, WM_IME_CHAR, character,
MAKELPARAM(repCnt, flags));
jint modifiers = GetJavaModifiers();
SendKeyEventToFocusOwner(java_awt_event_KeyEvent_KEY_TYPED,
! TimeHelper::getMessageTimeUTC(),
java_awt_event_KeyEvent_VK_UNDEFINED,
unicodeChar, modifiers,
java_awt_event_KeyEvent_KEY_LOCATION_UNKNOWN, (jlong)0,
&msg);
return mrConsume;
*** 3727,3737 ****
}
MSG msg;
InitMessage(&msg, message, character,
MAKELPARAM(repCnt, flags));
SendKeyEventToFocusOwner(java_awt_event_KeyEvent_KEY_TYPED,
! TimeHelper::windowsToUTC(msg.time),
java_awt_event_KeyEvent_VK_UNDEFINED,
unicodeChar, modifiers,
java_awt_event_KeyEvent_KEY_LOCATION_UNKNOWN, (jlong)0,
&msg);
return mrConsume;
--- 3715,3725 ----
}
MSG msg;
InitMessage(&msg, message, character,
MAKELPARAM(repCnt, flags));
SendKeyEventToFocusOwner(java_awt_event_KeyEvent_KEY_TYPED,
! TimeHelper::getMessageTimeUTC(),
java_awt_event_KeyEvent_VK_UNDEFINED,
unicodeChar, modifiers,
java_awt_event_KeyEvent_KEY_LOCATION_UNKNOWN, (jlong)0,
&msg);
return mrConsume;