2013-06-05 10:37 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* src/rtl/gtwvt/gtwvt.c
! added workaround for AltGR and German keyboard
* src/rtl/inkeyapi.c
! added missing 'static' in function declaration
* src/rtl/hbgtcore.c
! added workarounds for HB_GTI_COMPAT_BUFFER switched to .F. by
default.
* tests/gtkeys.prg
* switched to UTF8 CP by default
+ extended keycode information in Harbour
This commit is contained in:
@@ -10,6 +10,21 @@
|
||||
* Change, ! Fix, % Optimization, + Addition, - Removal, ; Comment
|
||||
*/
|
||||
|
||||
2013-06-05 10:37 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
|
||||
* src/rtl/gtwvt/gtwvt.c
|
||||
! added workaround for AltGR and German keyboard
|
||||
|
||||
* src/rtl/inkeyapi.c
|
||||
! added missing 'static' in function declaration
|
||||
|
||||
* src/rtl/hbgtcore.c
|
||||
! added workarounds for HB_GTI_COMPAT_BUFFER switched to .F. by
|
||||
default.
|
||||
|
||||
* tests/gtkeys.prg
|
||||
* switched to UTF8 CP by default
|
||||
+ extended keycode information in Harbour
|
||||
|
||||
2013-06-04 20:25 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
|
||||
* src/pp/hbpp.c
|
||||
! fixed memory leak due to unnecessary hb_strdup()
|
||||
|
||||
@@ -2589,6 +2589,9 @@ static HB_BOOL hb_gt_wvt_KeyEvent( PHB_GTWVT pWVT, UINT message, WPARAM wParam,
|
||||
break;
|
||||
|
||||
case WM_CHAR:
|
||||
if( ( iFlags & HB_KF_CTRL ) != 0 && ( iFlags & HB_KF_ALT ) != 0 )
|
||||
/* workaround for AltGR and German keyboard */
|
||||
iFlags &= ~( HB_KF_CTRL | HB_KF_ALT );
|
||||
case WM_SYSCHAR:
|
||||
if( ! pWVT->IgnoreWM_SYSCHAR )
|
||||
{
|
||||
|
||||
@@ -1354,7 +1354,7 @@ static void hb_gt_def_DrawShadow( PHB_GT pGT, int iTop, int iLeft, int iBottom,
|
||||
static void hb_gt_def_Scroll( PHB_GT pGT, int iTop, int iLeft, int iBottom, int iRight,
|
||||
int iColor, HB_USHORT usChar, int iRows, int iCols )
|
||||
{
|
||||
int iColOld, iColNew, iColSize, iColClear, iClrs, iLength;
|
||||
int iColOld, iColNew, iColSize, iColClear, iClrs, iLength, iFlag = 0;
|
||||
|
||||
iColSize = iRight - iLeft;
|
||||
iLength = iColSize + 1;
|
||||
@@ -1383,7 +1383,10 @@ static void hb_gt_def_Scroll( PHB_GT pGT, int iTop, int iLeft, int iBottom, int
|
||||
HB_SIZE nSize = HB_GTSELF_RECTSIZE( pGT, iTop, iColOld, iTop, iColOld + iColSize );
|
||||
|
||||
if( nSize )
|
||||
{
|
||||
pBuffer = hb_xgrab( nSize );
|
||||
iFlag = HB_GTSELF_SETFLAG( pGT, HB_GTI_COMPATBUFFER, 0 );
|
||||
}
|
||||
}
|
||||
|
||||
while( iTop <= iBottom )
|
||||
@@ -1409,6 +1412,8 @@ static void hb_gt_def_Scroll( PHB_GT pGT, int iTop, int iLeft, int iBottom, int
|
||||
|
||||
if( pBuffer )
|
||||
hb_xfree( pBuffer );
|
||||
if( iFlag != 0 )
|
||||
HB_GTSELF_SETFLAG( pGT, HB_GTI_COMPATBUFFER, iFlag );
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1873,7 +1878,9 @@ static HB_BOOL hb_gt_def_Info( PHB_GT pGT, int iType, PHB_GT_INFO pInfo )
|
||||
if( nSize )
|
||||
{
|
||||
void * pBuffer = hb_xgrab( nSize + 1 );
|
||||
int iFlag = HB_GTSELF_SETFLAG( pGT, HB_GTI_COMPATBUFFER, 0 );
|
||||
HB_GTSELF_SAVE( pGT, 0, 0, iRow, iCol, pBuffer );
|
||||
HB_GTSELF_SETFLAG( pGT, HB_GTI_COMPATBUFFER, iFlag );
|
||||
hb_arraySetCLPtr( pInfo->pResult, 7, ( char * ) pBuffer, nSize );
|
||||
}
|
||||
break;
|
||||
@@ -1885,9 +1892,11 @@ static HB_BOOL hb_gt_def_Info( PHB_GT pGT, int iType, PHB_GT_INFO pInfo )
|
||||
HB_GTSELF_DISPBEGIN( pGT );
|
||||
if( hb_arrayGetCLen( pInfo->pNewVal, 7 ) > 0 )
|
||||
{
|
||||
int iFlag = HB_GTSELF_SETFLAG( pGT, HB_GTI_COMPATBUFFER, 0 );
|
||||
HB_GTSELF_REST( pGT, 0, 0, hb_arrayGetNI( pInfo->pNewVal, 5 ),
|
||||
hb_arrayGetNI( pInfo->pNewVal, 6 ),
|
||||
hb_arrayGetCPtr( pInfo->pNewVal, 7 ) );
|
||||
HB_GTSELF_SETFLAG( pGT, HB_GTI_COMPATBUFFER, iFlag );
|
||||
}
|
||||
HB_GTSELF_SETPOS( pGT, hb_arrayGetNI( pInfo->pNewVal, 1 ),
|
||||
hb_arrayGetNI( pInfo->pNewVal, 2 ) );
|
||||
@@ -2014,6 +2023,7 @@ static int hb_gt_def_Alert( PHB_GT pGT, PHB_ITEM pMessage, PHB_ITEM pOptions,
|
||||
HB_UINT ulLines = 0, ulWidth = 0, ulCurrWidth = 0, ulMsg = 0, ulDst = 0,
|
||||
ulLast = 0, ulSpace1 = 0, ulSpace2 = 0, ulDefWidth, ulMaxWidth;
|
||||
HB_WCHAR * szMsgDsp;
|
||||
int iFlag = 0;
|
||||
|
||||
ulMaxWidth = iCols - 4;
|
||||
ulDefWidth = ( ulMaxWidth * 3 ) >> 2;
|
||||
@@ -2131,6 +2141,7 @@ static int hb_gt_def_Alert( PHB_GT pGT, PHB_ITEM pMessage, PHB_ITEM pOptions,
|
||||
if( nLen )
|
||||
{
|
||||
pBuffer = hb_xgrab( nLen );
|
||||
iFlag = HB_GTSELF_SETFLAG( pGT, HB_GTI_COMPATBUFFER, 0 );
|
||||
HB_GTSELF_SAVE( pGT, iTop, iLeft, iBottom, iRight, pBuffer );
|
||||
}
|
||||
HB_GTSELF_BOXS( pGT, iTop, iLeft, iBottom, iRight, NULL, iClrNorm );
|
||||
@@ -2246,6 +2257,8 @@ static int hb_gt_def_Alert( PHB_GT pGT, PHB_ITEM pMessage, PHB_ITEM pOptions,
|
||||
if( pBuffer )
|
||||
{
|
||||
HB_GTSELF_REST( pGT, iTop, iLeft, iBottom, iRight, pBuffer );
|
||||
if( iFlag != 0 )
|
||||
HB_GTSELF_SETFLAG( pGT, HB_GTI_COMPATBUFFER, iFlag );
|
||||
hb_xfree( pBuffer );
|
||||
}
|
||||
HB_GTSELF_SETPOS( pGT, iRow, iCol );
|
||||
@@ -2359,12 +2372,13 @@ static HB_BOOL hb_gt_def_Resize( PHB_GT pGT, int iRows, int iCols )
|
||||
void * pBuffer = NULL;
|
||||
HB_SIZE nLen = ( HB_SIZE ) iRows * iCols, nIndex;
|
||||
HB_SIZE nSize;
|
||||
int i;
|
||||
int iFlag = 0, i;
|
||||
|
||||
nSize = HB_GTSELF_RECTSIZE( pGT, 0, 0, iRows - 1, iCols - 1 );
|
||||
if( nSize )
|
||||
{
|
||||
pBuffer = hb_xgrab( nSize );
|
||||
iFlag = HB_GTSELF_SETFLAG( pGT, HB_GTI_COMPATBUFFER, 0 );
|
||||
HB_GTSELF_SAVE( pGT, 0, 0, iRows - 1, iCols - 1, pBuffer );
|
||||
}
|
||||
|
||||
@@ -2403,6 +2417,8 @@ static HB_BOOL hb_gt_def_Resize( PHB_GT pGT, int iRows, int iCols )
|
||||
if( nSize )
|
||||
{
|
||||
HB_GTSELF_REST( pGT, 0, 0, iRows - 1, iCols - 1, pBuffer );
|
||||
if( iFlag != 0 )
|
||||
HB_GTSELF_SETFLAG( pGT, HB_GTI_COMPATBUFFER, iFlag );
|
||||
hb_xfree( pBuffer );
|
||||
}
|
||||
}
|
||||
|
||||
@@ -377,7 +377,7 @@ HB_SIZE hb_inkeyKeyString( int iKey, char * buffer, HB_SIZE nSize )
|
||||
return nLen;
|
||||
}
|
||||
|
||||
int s_inkeyTransChar( int iKey, int iFlags, const HB_KEY_VALUE * pKeyVal )
|
||||
static int s_inkeyTransChar( int iKey, int iFlags, const HB_KEY_VALUE * pKeyVal )
|
||||
{
|
||||
if( ( iFlags & HB_KF_KEYPAD ) != 0 &&
|
||||
( iFlags & ( HB_KF_ALT | HB_KF_CTRL ) ) != 0 )
|
||||
|
||||
@@ -15,10 +15,12 @@ REQUEST HB_CODEPAGE_PLMAZ
|
||||
REQUEST HB_CODEPAGE_PLISO
|
||||
REQUEST HB_CODEPAGE_PL852
|
||||
REQUEST HB_CODEPAGE_PLWIN
|
||||
REQUEST HB_CODEPAGE_UTF8EX
|
||||
#else
|
||||
#define hb_keyCode( n ) Asc( n )
|
||||
#define hb_keyChar( c ) Chr( c )
|
||||
#define hb_ntos( n ) LTrim( Str( n ) )
|
||||
#xtranslate hb_keyStd( n ) ( n )
|
||||
#xtranslate hb_keyCode( n ) Asc( n )
|
||||
#xtranslate hb_keyChar( c ) iif( c >= 32 .AND. c <= 255, Chr( c ), "" )
|
||||
#xtranslate hb_ntos( n ) LTrim( Str( n ) )
|
||||
#endif
|
||||
#ifndef HB_K_RESIZE
|
||||
#define HB_K_RESIZE 1101
|
||||
@@ -26,7 +28,7 @@ REQUEST HB_CODEPAGE_PLWIN
|
||||
|
||||
PROCEDURE Main( cTermCP, cHostCP, lBoxChar )
|
||||
|
||||
LOCAL k, i, s
|
||||
LOCAL k, kX, i, s
|
||||
LOCAL aKeys := { ;
|
||||
{ "K_UP", 5, "Up arrow, Ctrl-E" }, ;
|
||||
{ "K_DOWN", 24, "Down arrow, Ctrl-X" }, ;
|
||||
@@ -242,7 +244,7 @@ PROCEDURE Main( cTermCP, cHostCP, lBoxChar )
|
||||
|
||||
|
||||
#ifdef __HARBOUR__
|
||||
Set( _SET_EVENTMASK, HB_INKEY_ALL )
|
||||
Set( _SET_EVENTMASK, HB_INKEY_ALL + HB_INKEY_EXT )
|
||||
hb_gtInfo( HB_GTI_CURSORBLINKRATE, 1000 )
|
||||
hb_gtInfo( HB_GTI_ESCDELAY, 50 )
|
||||
// hb_gtinfo( HB_GTI_FONTATTRIBUTE, 0 )
|
||||
@@ -259,12 +261,12 @@ PROCEDURE Main( cTermCP, cHostCP, lBoxChar )
|
||||
hb_gtInfo( HB_GTI_CLOSABLE, .F. )
|
||||
hb_gtInfo( HB_GTI_SELECTCOPY, .T. )
|
||||
IF Empty( cTermCP )
|
||||
cTermCP := "PLISO"
|
||||
cTermCP := "UTF8"
|
||||
ELSE
|
||||
cTermCP := Upper( cTermCP )
|
||||
ENDIF
|
||||
IF Empty( cHostCP )
|
||||
cHostCP := "PLMAZ"
|
||||
cHostCP := "UTF8"
|
||||
ELSE
|
||||
cHostCP := Upper( cHostCP )
|
||||
ENDIF
|
||||
@@ -290,14 +292,25 @@ PROCEDURE Main( cTermCP, cHostCP, lBoxChar )
|
||||
?
|
||||
|
||||
WHILE .T.
|
||||
k := Inkey( 0 )
|
||||
kX := Inkey( 0 )
|
||||
k := hb_keyStd( kX )
|
||||
IF ( i := AScan( aKeys, {| x | x[ 2 ] == k } ) ) != 0
|
||||
? " key:" + Str( aKeys[ i, 2 ], 7 ) + " " + PadR( aKeys[ i, 1 ], 18 ) + aKeys[ i, 3 ]
|
||||
ELSEIF k >= 32 .AND. k <= 126 .OR. ( k >= 160 .AND. k <= 255 ) .OR. ;
|
||||
Len( hb_keyChar( k ) ) > 0
|
||||
#ifdef __HARBOUR__
|
||||
? "char:" + iif( k > 256, " U+" + hb_numToHex( hb_keyVal( k ), 4 ), Str( k, 7 ) ) + ;
|
||||
" " + hb_keyChar( k )
|
||||
#else
|
||||
? "char:" + Str( k, 7 ) + " " + hb_keyChar( k )
|
||||
#endif
|
||||
ELSE
|
||||
#ifdef __HARBOUR__
|
||||
? " key:" + Str( k, 7 ) + " ext: 0x" + hb_numToHex( kX, 8 ) + " -> " + ;
|
||||
hb_numToHex( hb_keyMod( kX ), 2 ) + ":" + hb_numToHex( hb_keyVal( kX ), 8 )
|
||||
#else
|
||||
? " key:" + Str( k, 7 )
|
||||
#endif
|
||||
ENDIF
|
||||
// ?? " (" + hb_ntos( MaxRow() ) + ":" + hb_ntos( MaxCol() ) + ")"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user