From 948d042fc8a2a6efc7b06a0620acd6b74d9a7874 Mon Sep 17 00:00:00 2001 From: Viktor Szakats Date: Fri, 22 Jan 2010 00:27:53 +0000 Subject: [PATCH] 2010-01-22 01:25 UTC+0100 Viktor Szakats (harbour.01 syenar.hu) * contrib/hbtip/sendmail.prg ! Applied set of HB_SENDMAIL() patches sent by Francesco Perillo: - nTimeOut defaults to 10 seconds - check for actually receiving "250 " to EHLO and not waiting for timeout - don't wait for timeout - check for actually receiving "250 " to HELO and not waiting for timeout [TOMERGE 2.0] * contrib/hbwin/wapi_wingdi.c + Added TODO to WAPI_SELECTOBJECT() to implement reference counting when assigning an GC collected object to another one (DC). Any idea how to do this properly? * contrib/hbwin/wapi_winuser.c + Added WAPI_GETSYSTEMMETRICS(). * contrib/hbwin/hbwin.ch + Added WIN_SM_* constants for WAPI_GETSYSTEMMETRICS().. * contrib/hbwin/wapi_winuser.c * contrib/hbwin/wapi_shellapi.c - Deleted unnecessary Windows headers. * contrib/hbwin/win_dlg.c + WAPI_PRINTDLGDC() now sets owner window for better results (f.e. in GTWVT it will block clicking on app window and newer style printer dialog will be presented) * contrib/hbwin/win_prn1.c * Minor. --- harbour/ChangeLog | 32 +++++++++ harbour/contrib/hbtip/sendmail.prg | 8 ++- harbour/contrib/hbwin/hbwin.ch | 96 +++++++++++++++++++++++++++ harbour/contrib/hbwin/wapi_shellapi.c | 2 - harbour/contrib/hbwin/wapi_wingdi.c | 3 +- harbour/contrib/hbwin/wapi_winuser.c | 7 +- harbour/contrib/hbwin/win_dlg.c | 1 + harbour/contrib/hbwin/win_prn1.c | 4 +- 8 files changed, 145 insertions(+), 8 deletions(-) diff --git a/harbour/ChangeLog b/harbour/ChangeLog index dd6d99b519..53af08d945 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -17,6 +17,38 @@ past entries belonging to author(s): Viktor Szakats. */ +2010-01-22 01:25 UTC+0100 Viktor Szakats (harbour.01 syenar.hu) + * contrib/hbtip/sendmail.prg + ! Applied set of HB_SENDMAIL() patches sent by Francesco Perillo: + - nTimeOut defaults to 10 seconds + - check for actually receiving "250 " to EHLO and not waiting for timeout + - don't wait for timeout + - check for actually receiving "250 " to HELO and not waiting for timeout + [TOMERGE 2.0] + + * contrib/hbwin/wapi_wingdi.c + + Added TODO to WAPI_SELECTOBJECT() to implement reference counting + when assigning an GC collected object to another one (DC). + Any idea how to do this properly? + + * contrib/hbwin/wapi_winuser.c + + Added WAPI_GETSYSTEMMETRICS(). + + * contrib/hbwin/hbwin.ch + + Added WIN_SM_* constants for WAPI_GETSYSTEMMETRICS().. + + * contrib/hbwin/wapi_winuser.c + * contrib/hbwin/wapi_shellapi.c + - Deleted unnecessary Windows headers. + + * contrib/hbwin/win_dlg.c + + WAPI_PRINTDLGDC() now sets owner window for better + results (f.e. in GTWVT it will block clicking on + app window and newer style printer dialog will be presented) + + * contrib/hbwin/win_prn1.c + * Minor. + 2010-01-22 00:33 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl) * harbour/src/rtl/gtxwc/gtxwc.c + added support for independent CP setting for BOX and normal characters diff --git a/harbour/contrib/hbtip/sendmail.prg b/harbour/contrib/hbtip/sendmail.prg index f2b03a1ef6..62853e7e7e 100644 --- a/harbour/contrib/hbtip/sendmail.prg +++ b/harbour/contrib/hbtip/sendmail.prg @@ -135,7 +135,7 @@ FUNCTION hb_SendMail( cServer, nPort, cFrom, xTo, xCC, xBCC, cBody, cSubject, aF lNoAuth := .F. ENDIF IF ! ISNUMBER( nTimeOut ) - nTimeOut := 1000 + nTimeOut := 10000 ENDIF IF ! ISCHARACTER( cReplyTo ) cReplyTo := "" @@ -311,6 +311,8 @@ FUNCTION hb_SendMail( cServer, nPort, cFrom, xTo, xCC, xBCC, cBody, cSubject, aF ELSEIF "STARTTLS" $ oInMail:cReply lAuthTLS := .T. #endif + ELSEIF Left( oInMail:cReply, 4 ) == "250 " + EXIT ENDIF ENDDO @@ -328,7 +330,6 @@ FUNCTION hb_SendMail( cServer, nPort, cFrom, xTo, xCC, xBCC, cBody, cSubject, aF ENDIF ELSE IF ! lConnectPlain - oInmail:GetOk() lConnect := .F. ENDIF ENDIF @@ -359,6 +360,9 @@ FUNCTION hb_SendMail( cServer, nPort, cFrom, xTo, xCC, xBCC, cBody, cSubject, aF ENDIF DO WHILE .T. + IF Left( oInMail:cReply, 4 ) == "250 " + EXIT + ENDIF IF ! oInMail:GetOk() EXIT ENDIF diff --git a/harbour/contrib/hbwin/hbwin.ch b/harbour/contrib/hbwin/hbwin.ch index 9913ca5f00..79e4bbad3b 100644 --- a/harbour/contrib/hbwin/hbwin.ch +++ b/harbour/contrib/hbwin/hbwin.ch @@ -319,6 +319,102 @@ #define WIN_SCALINGFACTORX 114 // Scaling factor x #define WIN_SCALINGFACTORY 115 // Scaling factor y +/* WAPI_GETSYSTEMMETRICS() parameters */ +#define WIN_SM_CXSCREEN 0 +#define WIN_SM_CYSCREEN 1 +#define WIN_SM_CXVSCROLL 2 +#define WIN_SM_CYHSCROLL 3 +#define WIN_SM_CYCAPTION 4 +#define WIN_SM_CXBORDER 5 +#define WIN_SM_CYBORDER 6 +#define WIN_SM_CXDLGFRAME 7 +#define WIN_SM_CXFIXEDFRAME 7 +#define WIN_SM_CYDLGFRAME 8 +#define WIN_SM_CYFIXEDFRAME 8 +#define WIN_SM_CYVTHUMB 9 +#define WIN_SM_CXHTHUMB 10 +#define WIN_SM_CXICON 11 +#define WIN_SM_CYICON 12 +#define WIN_SM_CXCURSOR 13 +#define WIN_SM_CYCURSOR 14 +#define WIN_SM_CYMENU 15 +#define WIN_SM_CXFULLSCREEN 16 +#define WIN_SM_CYFULLSCREEN 17 +#define WIN_SM_CYKANJIWINDOW 18 +#define WIN_SM_MOUSEPRESENT 19 +#define WIN_SM_CYVSCROLL 20 +#define WIN_SM_CXHSCROLL 21 +#define WIN_SM_DEBUG 22 +#define WIN_SM_SWAPBUTTON 23 +#define WIN_SM_RESERVED1 24 +#define WIN_SM_RESERVED2 25 +#define WIN_SM_RESERVED3 26 +#define WIN_SM_RESERVED4 27 +#define WIN_SM_CXMIN 28 +#define WIN_SM_CYMIN 29 +#define WIN_SM_CXSIZE 30 +#define WIN_SM_CYSIZE 31 +#define WIN_SM_CXSIZEFRAME 32 +#define WIN_SM_CXFRAME 32 +#define WIN_SM_CYSIZEFRAME 33 +#define WIN_SM_CYFRAME 33 +#define WIN_SM_CXMINTRACK 34 +#define WIN_SM_CYMINTRACK 35 +#define WIN_SM_CXDOUBLECLK 36 +#define WIN_SM_CYDOUBLECLK 37 +#define WIN_SM_CXICONSPACING 38 +#define WIN_SM_CYICONSPACING 39 +#define WIN_SM_MENUDROPALIGNMENT 40 +#define WIN_SM_PENWINDOWS 41 +#define WIN_SM_DBCSENABLED 42 +#define WIN_SM_CMOUSEBUTTONS 43 +#define WIN_SM_SECURE 44 +#define WIN_SM_CXEDGE 45 +#define WIN_SM_CYEDGE 46 +#define WIN_SM_CXMINSPACING 47 +#define WIN_SM_CYMINSPACING 48 +#define WIN_SM_CXSMICON 49 +#define WIN_SM_CYSMICON 50 +#define WIN_SM_CYSMCAPTION 51 +#define WIN_SM_CXSMSIZE 52 +#define WIN_SM_CYSMSIZE 53 +#define WIN_SM_CXMENUSIZE 54 +#define WIN_SM_CYMENUSIZE 55 +#define WIN_SM_ARRANGE 56 +#define WIN_SM_CXMINIMIZED 57 +#define WIN_SM_CYMINIMIZED 58 +#define WIN_SM_CXMAXTRACK 59 +#define WIN_SM_CYMAXTRACK 60 +#define WIN_SM_CXMAXIMIZED 61 +#define WIN_SM_CYMAXIMIZED 62 +#define WIN_SM_NETWORK 63 +#define WIN_SM_CLEANBOOT 67 +#define WIN_SM_CXDRAG 68 +#define WIN_SM_CYDRAG 69 +#define WIN_SM_SHOWSOUNDS 70 +#define WIN_SM_CXMENUCHECK 71 +#define WIN_SM_CYMENUCHECK 72 +#define WIN_SM_SLOWMACHINE 73 +#define WIN_SM_MIDEASTENABLED 74 +#define WIN_SM_MOUSEWHEELPRESENT 75 +#define WIN_SM_XVIRTUALSCREEN 76 +#define WIN_SM_YVIRTUALSCREEN 77 +#define WIN_SM_CXVIRTUALSCREEN 78 +#define WIN_SM_CYVIRTUALSCREEN 79 +#define WIN_SM_CMONITORS 80 +#define WIN_SM_SAMEDISPLAYFORMAT 81 +#define WIN_SM_IMMENABLED 82 +#define WIN_SM_CXFOCUSBORDER 83 +#define WIN_SM_CYFOCUSBORDER 84 +#define WIN_SM_TABLETPC 86 +#define WIN_SM_MEDIACENTER 87 +#define WIN_SM_STARTER 88 +#define WIN_SM_SERVERR2 89 +#define WIN_SM_REMOTESESSION 4096 +#define WIN_SM_SHUTTINGDOWN 8192 +#define WIN_SM_REMOTECONTROL 8193 +#define WIN_SM_CARETBLINKINGENABLED 8194 + /* WIN_TEXTOUT() text alignment modes */ #define WIN_TA_NOUPDATECP 0 #define WIN_TA_UPDATECP 1 diff --git a/harbour/contrib/hbwin/wapi_shellapi.c b/harbour/contrib/hbwin/wapi_shellapi.c index 6ff5188c4e..fd8bb2077b 100644 --- a/harbour/contrib/hbwin/wapi_shellapi.c +++ b/harbour/contrib/hbwin/wapi_shellapi.c @@ -55,8 +55,6 @@ #include "hbapi.h" #include "hbwinuni.h" -#include - HB_FUNC( WAPI_SHELLEXECUTE ) { #if defined( HB_OS_WIN_CE ) diff --git a/harbour/contrib/hbwin/wapi_wingdi.c b/harbour/contrib/hbwin/wapi_wingdi.c index 905d2e8e2c..d46d94e2e8 100644 --- a/harbour/contrib/hbwin/wapi_wingdi.c +++ b/harbour/contrib/hbwin/wapi_wingdi.c @@ -456,6 +456,7 @@ HB_FUNC( WAPI_SELECTOBJECT ) if( hDC && h ) { + /* TODO: Solve reference counting to 'h' handle. Also for returned one. */ if( bRegion ) hb_retni( ( int ) SelectObject( hDC, h ) ); else @@ -479,7 +480,7 @@ HB_FUNC( WAPI_MOVETOEX ) hb_retl( MoveToEx( hDC, hb_parni( 2 ) /* X */, hb_parni( 3 ) /* Y */, &p ) ); - /* TODO: Support both has and array */ + /* TODO: Support both hash and array */ hb_arraySetNL( pPOINT, 1, p.x ); hb_arraySetNL( pPOINT, 2, p.y ); } diff --git a/harbour/contrib/hbwin/wapi_winuser.c b/harbour/contrib/hbwin/wapi_winuser.c index b4ad14604b..0e5d7676d1 100644 --- a/harbour/contrib/hbwin/wapi_winuser.c +++ b/harbour/contrib/hbwin/wapi_winuser.c @@ -58,7 +58,12 @@ #include "hbwinuni.h" #include "hbwapi.h" -#include +HB_FUNC( WAPI_GETSYSTEMMETRICS ) +{ + int iResult = GetSystemMetrics( hb_parni( 1 ) ); + hbwapi_SetLastError( GetLastError() ); + hb_retni( iResult ); +} HB_FUNC( WAPI_GETKEYSTATE ) { diff --git a/harbour/contrib/hbwin/win_dlg.c b/harbour/contrib/hbwin/win_dlg.c index da9d448aa4..5d3a094138 100644 --- a/harbour/contrib/hbwin/win_dlg.c +++ b/harbour/contrib/hbwin/win_dlg.c @@ -65,6 +65,7 @@ HB_FUNC( WIN_PRINTDLGDC ) memset( &pd, 0, sizeof( PRINTDLG ) ); pd.lStructSize = sizeof( PRINTDLG ); + pd.hwndOwner = GetActiveWindow(); pd.Flags = PD_RETURNDC | PD_USEDEVMODECOPIESANDCOLLATE; pd.nFromPage = ( WORD ) hb_parnidef( 2, 1 ); pd.nToPage = ( WORD ) hb_parnidef( 3, 1 ); diff --git a/harbour/contrib/hbwin/win_prn1.c b/harbour/contrib/hbwin/win_prn1.c index a011ad1ccc..0246223618 100644 --- a/harbour/contrib/hbwin/win_prn1.c +++ b/harbour/contrib/hbwin/win_prn1.c @@ -327,10 +327,10 @@ HB_FUNC( WIN_CREATEFONT ) DEFAULT_PITCH | FF_DONTCARE, HB_PARSTR( 2, &hFontFace, NULL ) ); - hb_strfree( hFontFace ); - hbwapi_ret_HFONT( hFont ); + hb_strfree( hFontFace ); + if( hFont ) SelectObject( hDC, hFont ); }