From 4bd5c3836110f0c39742305391dab2e2f08e907b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Przemys=C5=82aw=20Czerpak?= Date: Tue, 5 Nov 2013 23:05:19 +0100 Subject: [PATCH] 2013-11-05 23:05 UTC+0100 Przemyslaw Czerpak (druzus/at/poczta.onet.pl) * src/rtl/gtwin/gtwin.c ! do not disable console control handler when terminal is suspended. ! ignore HB_K_BREAK event's caught when terminal was suspended. --- ChangeLog.txt | 5 +++++ src/rtl/gtwin/gtwin.c | 11 ++++++----- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/ChangeLog.txt b/ChangeLog.txt index 0b915a946e..fc2e22a4f2 100644 --- a/ChangeLog.txt +++ b/ChangeLog.txt @@ -10,6 +10,11 @@ * Change, ! Fix, % Optimization, + Addition, - Removal, ; Comment */ +2013-11-05 23:05 UTC+0100 Przemyslaw Czerpak (druzus/at/poczta.onet.pl) + * src/rtl/gtwin/gtwin.c + ! do not disable console control handler when terminal is suspended. + ! ignore HB_K_BREAK event's caught when terminal was suspended. + 2013-11-05 08:21 UTC+0100 Przemyslaw Czerpak (druzus/at/poczta.onet.pl) * src/rdd/dbcmd.c ! added missing ; in last commit diff --git a/src/rtl/gtwin/gtwin.c b/src/rtl/gtwin/gtwin.c index 4c0a80029d..ddc49d822f 100644 --- a/src/rtl/gtwin/gtwin.c +++ b/src/rtl/gtwin/gtwin.c @@ -201,6 +201,7 @@ static HB_BOOL s_bSpecialKeyHandling; static HB_BOOL s_bAltKeyHandling; static DWORD s_dwAltGrBits; /* JC: used to verify ALT+GR on different platforms */ static HB_BOOL s_bBreak; /* Used to signal Ctrl+Break to hb_inkeyPoll() */ +static HB_BOOL s_bSuspend; static int s_iCursorStyle; static int s_iOldCurStyle; static int s_iCurRow; @@ -598,7 +599,8 @@ static BOOL WINAPI hb_gt_win_CtrlHandler( DWORD dwCtrlType ) case CTRL_CLOSE_EVENT: case CTRL_BREAK_EVENT: - s_bBreak = HB_TRUE; + if( ! s_bSuspend ) + s_bBreak = HB_TRUE; bHandled = TRUE; break; @@ -878,7 +880,7 @@ static void hb_gt_win_Init( PHB_GT pGT, HB_FHANDLE hFilenoStdin, HB_FHANDLE hFil s_hStdOut = hFilenoStdout; s_hStdErr = hFilenoStderr; - s_bBreak = HB_FALSE; + s_bBreak = s_bSuspend = HB_FALSE; s_cNumRead = 0; s_cNumIndex = 0; s_iOldCurStyle = s_iCursorStyle = SC_NORMAL; @@ -1148,11 +1150,10 @@ static HB_BOOL hb_gt_win_Suspend( PHB_GT pGT ) if( s_pCharInfoScreen ) { - SetConsoleCtrlHandler( hb_gt_win_CtrlHandler, FALSE ); - SetConsoleCtrlHandler( NULL, TRUE ); SetConsoleMode( s_HOutput, s_dwomode ); SetConsoleMode( s_HInput, s_dwimode ); } + s_bSuspend = HB_TRUE; return HB_TRUE; } @@ -1162,13 +1163,13 @@ static HB_BOOL hb_gt_win_Resume( PHB_GT pGT ) if( s_pCharInfoScreen ) { - SetConsoleCtrlHandler( NULL, FALSE ); SetConsoleCtrlHandler( hb_gt_win_CtrlHandler, TRUE ); SetConsoleMode( s_HOutput, s_dwomode ); SetConsoleMode( s_HInput, s_bMouseEnable ? ENABLE_MOUSE_INPUT : 0x0000 ); hb_gt_win_xInitScreenParam( pGT ); hb_gt_win_xSetCursorStyle(); } + s_bSuspend = HB_FALSE; return HB_TRUE; }