Changes for qnx(photon) platform only. They should not affect runtime/building other platforms.

Further changes for keyboard compose sequences.
This commit is contained in:
amardare%qnx.com 2004-05-27 20:16:05 +00:00
parent 35f102df56
commit 58c9211840

View File

@ -902,6 +902,19 @@ inline int key_sym_displayable(const PhKeyEvent_t *kevent)
return 0;
}
/* similar to PhKeyToMb */
inline int key_cap_displayable(const PhKeyEvent_t *kevent)
{
if(kevent->key_flags & Pk_KF_Cap_Valid) {
unsigned long const cap = kevent->key_cap;
if ( cap >= 0xF000
? cap >= 0xF100 && ( sizeof(wchar_t) > 2 || cap < 0x10000 )
: ( cap & ~0x9F ) != 0 // exclude 0...0x1F and 0x80...0x9F
) return 1;
}
return 0;
}
inline void nsWidget::InitKeyPressEvent(PhKeyEvent_t *aPhKeyEvent, nsKeyEvent &anEvent )
{
anEvent.isShift = ( aPhKeyEvent->key_mods & Pk_KM_Shift ) ? PR_TRUE : PR_FALSE;
@ -913,7 +926,7 @@ inline void nsWidget::InitKeyPressEvent(PhKeyEvent_t *aPhKeyEvent, nsKeyEvent &a
else {
/* in photon Ctrl<something> or Alt<something> is not a displayable character, but
mozilla wants the keypress event as a charCode+isControl+isAlt, instead of a keyCode */
if( anEvent.isControl || anEvent.isAlt )
if( ( anEvent.isControl || anEvent.isAlt ) && key_cap_displayable( aPhKeyEvent ) )
anEvent.charCode = aPhKeyEvent->key_cap;
else anEvent.keyCode = nsConvertKey( aPhKeyEvent );
}
@ -921,8 +934,6 @@ inline void nsWidget::InitKeyPressEvent(PhKeyEvent_t *aPhKeyEvent, nsKeyEvent &a
anEvent.time = PR_IntervalNow();
}
// used only once
inline PRBool nsWidget::HandleEvent( PtWidget_t *widget, PtCallbackInfo_t* aCbInfo ) {
PRBool result = PR_TRUE; // call the default nsWindow proc