2015-02-15 20:23 UTC+0100 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)

* src/rtl/gtwin/gtwin.c
    * added hack to process characters generated without keydown event.
      It should fix issue #86.
This commit is contained in:
Przemysław Czerpak
2015-02-15 20:23:15 +01:00
parent 25b2825ee9
commit bbfe7a6a00
2 changed files with 35 additions and 6 deletions

View File

@@ -10,6 +10,11 @@
* Change, ! Fix, % Optimization, + Addition, - Removal, ; Comment
*/
2015-02-15 20:23 UTC+0100 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* src/rtl/gtwin/gtwin.c
* added hack to process characters generated without keydown event.
It should fix issue #86.
2015-02-13 17:08 UTC+0100 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* src/rtl/mlcfunc.c
! fixed MPosToLC() results for position in last line which have to

View File

@@ -1549,7 +1549,7 @@ static int hb_gt_win_ReadKey( PHB_GT pGT, int iEventMask )
WORD wChar = s_irInBuf[ s_cNumIndex ].Event.KeyEvent.wVirtualKeyCode;
DWORD dwState = s_irInBuf[ s_cNumIndex ].Event.KeyEvent.dwControlKeyState;
HB_BOOL bNotHandled = HB_TRUE;
HB_BOOL bHandled = HB_FALSE;
/* Only process key down events */
@@ -1573,7 +1573,7 @@ static int hb_gt_win_ReadKey( PHB_GT pGT, int iEventMask )
( dwState & NUMLOCK_ON ) )
{
s_altisdown = HB_TRUE;
bNotHandled = HB_FALSE;
bHandled = HB_TRUE;
#ifdef _TRACE
printf( "alt went down\n" );
#endif
@@ -1581,12 +1581,16 @@ static int hb_gt_win_ReadKey( PHB_GT pGT, int iEventMask )
}
}
if( s_irInBuf[ s_cNumIndex ].Event.KeyEvent.bKeyDown && bNotHandled )
if( bHandled )
{
/* key event already processed */
}
else if( s_irInBuf[ s_cNumIndex ].Event.KeyEvent.bKeyDown )
{
#if defined( UNICODE )
ch = s_irInBuf[ s_cNumIndex ].Event.KeyEvent.uChar.UnicodeChar;
#else
ch = s_irInBuf[ s_cNumIndex ].Event.KeyEvent.uChar.AsciiChar;
ch = ( HB_UCHAR ) s_irInBuf[ s_cNumIndex ].Event.KeyEvent.uChar.AsciiChar;
#endif
/*
@@ -1684,8 +1688,6 @@ static int hb_gt_win_ReadKey( PHB_GT pGT, int iEventMask )
clipKey = &s_stdKeyTab[ ch - K_SPACE ];
else if( ch > 0 && ch < K_SPACE && ( dwState & ( LEFT_CTRL_PRESSED | RIGHT_CTRL_PRESSED ) ) )
clipKey = &s_stdKeyTab[ ch + '@' ];
else if( ch < 0 ) /* international keys */
ch += 256;
if( extKey > -1 )
clipKey = &extKeyTab[ extKey ];
@@ -1723,6 +1725,28 @@ static int hb_gt_win_ReadKey( PHB_GT pGT, int iEventMask )
}
#endif
}
else if( s_irInBuf[ s_cNumIndex ].Event.KeyEvent.wVirtualKeyCode == 0x12 &&
s_irInBuf[ s_cNumIndex ].Event.KeyEvent.wVirtualScanCode == 0x38 )
{
#if defined( UNICODE )
ch = s_irInBuf[ s_cNumIndex ].Event.KeyEvent.uChar.UnicodeChar;
#else
ch = ( HB_UCHAR ) s_irInBuf[ s_cNumIndex ].Event.KeyEvent.uChar.AsciiChar;
#endif
if( ch != 0 )
{
#if defined( UNICODE )
if( ch >= 127 )
ch = HB_INKEY_NEW_UNICODE( ch );
#else
int u = HB_GTSELF_KEYTRANS( pGT, ch );
if( u )
ch = HB_INKEY_NEW_UNICODE( u );
#endif
}
else
ch = 0;
}
}
else if( s_bMouseEnable &&
s_irInBuf[ s_cNumIndex ].EventType == MOUSE_EVENT &&