From a9b645267e0ca436203545e3874cef6e54549475 Mon Sep 17 00:00:00 2001 From: Pritpal Bedi Date: Tue, 14 Apr 2009 16:07:43 +0000 Subject: [PATCH] 2009-04-14 09:04 UTC-0800 Pritpal Bedi (pritpal@vouchcac.com) * harbour/source/rtl/gtwvt/gtwvt.c * harbour/contrib/gtwvg/gtwvg.c ! Fixed a long standing bug - window mismanaged when clicking on titlebar. Processed WM_NCLBUTTONDCLK: --- harbour/ChangeLog | 6 ++++ harbour/contrib/gtwvg/gtwvg.c | 43 +++++++++++++++---------- harbour/source/rtl/gtwvt/gtwvt.c | 55 +++++++++++++++++++------------- 3 files changed, 66 insertions(+), 38 deletions(-) diff --git a/harbour/ChangeLog b/harbour/ChangeLog index f12880b41d..92ba2b53c2 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -8,6 +8,12 @@ 2009-12-31 13:59 UTC+0100 Foo Bar (foo.bar foobar.org) */ +2009-04-14 09:04 UTC-0800 Pritpal Bedi (pritpal@vouchcac.com) + * harbour/source/rtl/gtwvt/gtwvt.c + * harbour/contrib/gtwvg/gtwvg.c + ! Fixed a long standing bug - window mismanaged when clicking on titlebar. + Processed WM_NCLBUTTONDCLK: + 2009-04-14 15:57 UTC+0200 Viktor Szakats (harbour.01 syenar hu) * utils/hbmk2/hbmk2.prg ! Fixed Borland stub for both GUI and CUI mode. diff --git a/harbour/contrib/gtwvg/gtwvg.c b/harbour/contrib/gtwvg/gtwvg.c index 9d7cfaf254..99623d8901 100644 --- a/harbour/contrib/gtwvg/gtwvg.c +++ b/harbour/contrib/gtwvg/gtwvg.c @@ -919,6 +919,25 @@ static BOOL hb_gt_wvt_FitSizeRows( PHB_GTWVT pWVT ) return( bSizeChanged ); } +static void hb_gt_wvt_Maximize( PHB_GTWVT pWVT ) +{ + pWVT->bMaximized = TRUE; + hb_gt_wvt_FitSizeRows( pWVT ); + + /* Disable "maximize" button */ + { +#if (defined(_MSC_VER) && (_MSC_VER <= 1200 || defined(HB_OS_WIN_CE)) || defined(__DMC__)) && !defined(HB_ARCH_64BIT) + DWORD style = GetWindowLong( pWVT->hWnd, GWL_STYLE ); + SetWindowLong( pWVT->hWnd, GWL_STYLE, style &~ WS_MAXIMIZEBOX ); +#else + LONG_PTR style = GetWindowLongPtr( pWVT->hWnd, GWL_STYLE ); + SetWindowLongPtr( pWVT->hWnd, GWL_STYLE, ( HB_PTRDIFF ) style &~ WS_MAXIMIZEBOX ); +#endif + } + SetWindowPos( pWVT->hWnd, NULL, 0, 0, 0, 0, + SWP_NOACTIVATE | SWP_DRAWFRAME | SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_DEFERERASE ); +} + static void hb_gt_wvt_ResetWindowSize( PHB_GTWVT pWVT ) { HDC hdc; @@ -2073,27 +2092,19 @@ static LRESULT CALLBACK hb_gt_wvt_WndProc( HWND hWnd, UINT message, WPARAM wPara hb_gt_wvt_FitSizeRows( pWVT ); return 0; + case WM_NCLBUTTONDBLCLK: + if( !pWVT->bMaximized ) + { + hb_gt_wvt_Maximize( pWVT ); + } + return 0; + case WM_SYSCOMMAND: switch( wParam ) { case SC_MAXIMIZE: { - pWVT->bMaximized = TRUE; - - hb_gt_wvt_FitSizeRows( pWVT ); - - /* Disable "maximize" button */ - { -#if (defined(_MSC_VER) && (_MSC_VER <= 1200 || defined(HB_OS_WIN_CE)) || defined(__DMC__)) && !defined(HB_ARCH_64BIT) - DWORD style = GetWindowLong( pWVT->hWnd, GWL_STYLE ); - SetWindowLong( pWVT->hWnd, GWL_STYLE, style &~ WS_MAXIMIZEBOX ); -#else - LONG_PTR style = GetWindowLongPtr( pWVT->hWnd, GWL_STYLE ); - SetWindowLongPtr( pWVT->hWnd, GWL_STYLE, ( HB_PTRDIFF ) style &~ WS_MAXIMIZEBOX ); -#endif - } - SetWindowPos( pWVT->hWnd, NULL, 0, 0, 0, 0, - SWP_NOACTIVATE | SWP_DRAWFRAME | SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_DEFERERASE ); + hb_gt_wvt_Maximize( pWVT ); return 0; } case SYS_EV_MARK: diff --git a/harbour/source/rtl/gtwvt/gtwvt.c b/harbour/source/rtl/gtwvt/gtwvt.c index f775fbc776..a65b276352 100644 --- a/harbour/source/rtl/gtwvt/gtwvt.c +++ b/harbour/source/rtl/gtwvt/gtwvt.c @@ -729,6 +729,31 @@ static void hb_gt_wvt_FitSize( PHB_GTWVT pWVT ) } } +static void hb_gt_wvt_Maximize( PHB_GTWVT pWVT ) +{ + pWVT->bMaximized = TRUE; + + if( pWVT->ResizeMode == HB_GTI_RESIZEMODE_FONT ) + hb_gt_wvt_FitSize( pWVT ); + else + hb_gt_wvt_FitRows( pWVT ); + + /* Disable "maximize" button */ +#if (defined(_MSC_VER) && (_MSC_VER <= 1200 || defined(HB_OS_WIN_CE)) || defined(__DMC__)) && !defined(HB_ARCH_64BIT) + SetWindowLong( pWVT->hWnd, GWL_STYLE, WS_OVERLAPPED|WS_CAPTION|WS_SYSMENU|WS_MINIMIZEBOX|WS_THICKFRAME ); +#else + SetWindowLongPtr( pWVT->hWnd, GWL_STYLE, WS_OVERLAPPED|WS_CAPTION|WS_SYSMENU|WS_MINIMIZEBOX|WS_THICKFRAME ); +#endif + SetWindowPos( pWVT->hWnd, NULL, 0, 0, 0, 0, + SWP_NOACTIVATE | SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_DEFERERASE ); + ShowWindow( pWVT->hWnd, SW_HIDE ); + ShowWindow( pWVT->hWnd, SW_NORMAL ); + + hb_gt_wvt_FireEvent( pWVT, HB_GTE_RESIZED ); + if( pWVT->ResizeMode == HB_GTI_RESIZEMODE_ROWS ) + hb_gt_wvt_AddCharToInputQueue( pWVT, HB_K_RESIZE ); +} + static void hb_gt_wvt_ResetWindowSize( PHB_GTWVT pWVT ) { HDC hdc; @@ -1701,33 +1726,19 @@ static LRESULT CALLBACK hb_gt_wvt_WndProc( HWND hWnd, UINT message, WPARAM wPara } return 0; + case WM_NCLBUTTONDBLCLK: + if( !pWVT->bMaximized ) + { + hb_gt_wvt_Maximize( pWVT ); + } + return 0; + case WM_SYSCOMMAND: switch( wParam ) { case SC_MAXIMIZE: { - pWVT->bMaximized = TRUE; - - if( pWVT->ResizeMode == HB_GTI_RESIZEMODE_FONT ) - hb_gt_wvt_FitSize( pWVT ); - else - hb_gt_wvt_FitRows( pWVT ); - - /* Disable "maximize" button */ -#if (defined(_MSC_VER) && (_MSC_VER <= 1200 || defined(HB_OS_WIN_CE)) || defined(__DMC__)) && !defined(HB_ARCH_64BIT) - SetWindowLong( pWVT->hWnd, GWL_STYLE, WS_OVERLAPPED|WS_CAPTION|WS_SYSMENU|WS_MINIMIZEBOX|WS_THICKFRAME ); -#else - SetWindowLongPtr( pWVT->hWnd, GWL_STYLE, WS_OVERLAPPED|WS_CAPTION|WS_SYSMENU|WS_MINIMIZEBOX|WS_THICKFRAME ); -#endif - SetWindowPos( pWVT->hWnd, NULL, 0, 0, 0, 0, - SWP_NOACTIVATE | SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_DEFERERASE ); - ShowWindow( pWVT->hWnd, SW_HIDE ); - ShowWindow( pWVT->hWnd, SW_NORMAL ); - - hb_gt_wvt_FireEvent( pWVT, HB_GTE_RESIZED ); - if( pWVT->ResizeMode == HB_GTI_RESIZEMODE_ROWS ) - hb_gt_wvt_AddCharToInputQueue( pWVT, HB_K_RESIZE ); - + hb_gt_wvt_Maximize( pWVT ); return 0; }