diff --git a/harbour/ChangeLog b/harbour/ChangeLog index 656d9570f4..f2baa83466 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -17,6 +17,18 @@ past entries belonging to author(s): Viktor Szakats. */ +2009-06-22 23:39 UTC+0200 Viktor Szakats (harbour.01 syenar.hu) + * source/rtl/getsys.prg + ! GETACTIVE() function fixed to work even if an app + manages getlist on its own. In this case GETACTIVE() + will maintain the GET object in its own STATIC variable. + This should fix the SuperLib problem reported by Bruno Luciani. + + * examples/superlib/hbsuper.dif + + Will now automatically enable CLIPPER53 protected code + if Harbour was built with HB_COMPAT_C53 setting. This + enables SuperLib to use C53's build-in mouse functions. + 2009-06-22 23:13 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl) * harbour/source/compiler/hbcmplib.c ! fixed reverted order of parameters passed in arrays and missing last diff --git a/harbour/examples/superlib/hbsuper.dif b/harbour/examples/superlib/hbsuper.dif index b9049976a0..e4abaddd22 100644 --- a/harbour/examples/superlib/hbsuper.dif +++ b/harbour/examples/superlib/hbsuper.dif @@ -311,6 +311,23 @@ diff -u superori/s_appt.prg superpat/s_appt.prg lOk := .t. else msg("Problem finding/creating Appointments file") +diff -u superori/s_att.prg superpat/s_att.prg +--- superori/s_att.prg 1995-10-16 13:35:40.000000000 +0100 ++++ superpat/s_att.prg 2009-06-22 23:37:06.000000000 +0200 +@@ -42,6 +42,13 @@ + ³ + ΤνΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝ + */ ++ ++#ifdef HB_COMPAT_C53 ++ #ifndef CLIPPER53 ++ #define CLIPPER53 ++ #endif ++#endif ++ + #ifdef CLIPPER53 // if this is Clipper 5.3, check for graphics + function att(nTop,nLeft,nBottom,nRight,nAttribute) + local nLength := (nRight-nLeft+1)*(nBottom-nTop+1) diff -u superori/s_bdelim.prg superpat/s_bdelim.prg --- superori/s_bdelim.prg 1995-11-02 16:59:30.000000000 +0100 +++ superpat/s_bdelim.prg 2009-06-10 08:44:26.000000000 +0200 @@ -911,6 +928,23 @@ diff -u superori/s_mailm.prg superpat/s_mailm.prg do case case nRecordSele = REC_TAGGED tagit(aTagged,aFieldNames,aFieldDesc,"Merge Records") +diff -u superori/s_makeb.prg superpat/s_makeb.prg +--- superori/s_makeb.prg 1995-10-16 13:30:20.000000000 +0100 ++++ superpat/s_makeb.prg 2009-06-22 23:36:46.000000000 +0200 +@@ -62,6 +62,13 @@ + ³ + ΤνΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝ + */ ++ ++#ifdef HB_COMPAT_C53 ++ #ifndef CLIPPER53 ++ #define CLIPPER53 ++ #endif ++#endif ++ + #ifdef CLIPPER53 // in 5.3, makebox returns an array + FUNCTION makebox(nTop,nLeft,nBottom,nRight,cColorString,nShadowPos) + local aSaveUnder diff -u superori/s_mchoi.prg superpat/s_mchoi.prg --- superori/s_mchoi.prg 1995-11-02 17:06:00.000000000 +0100 +++ superpat/s_mchoi.prg 2009-06-10 08:44:27.000000000 +0200 @@ -967,17 +1001,23 @@ diff -u superori/s_modify.prg superpat/s_modify.prg EXIT diff -u superori/s_moose.prg superpat/s_moose.prg --- superori/s_moose.prg 1995-11-02 16:17:08.000000000 +0100 -+++ superpat/s_moose.prg 2009-06-10 08:44:27.000000000 +0200 -@@ -98,7 +98,7 @@ ++++ superpat/s_moose.prg 2009-06-22 23:36:57.000000000 +0200 +@@ -98,7 +98,13 @@ */ -#INCLUDE "inkey.ch" ++#ifdef HB_COMPAT_C53 ++ #ifndef CLIPPER53 ++ #define CLIPPER53 ++ #endif ++#endif ++ +#include "inkey.ch" #define MTOP 1 #define MLEFT 2 #define MBOTTOM 3 -@@ -747,7 +747,7 @@ +@@ -747,7 +753,7 @@ ³ ³ Examples: ³ --------- @@ -1356,6 +1396,22 @@ diff -u superori/s_todo.prg superpat/s_todo.prg BLDDBF(cTodoFile,"CATEGORY,C,10:ITEM,C,60:PRIORITY,C,2:DOBY,D:DONE,L:LONG_DESC,C,231") endif +diff -u superori/s_unbox.prg superpat/s_unbox.prg +--- superori/s_unbox.prg 1995-10-16 13:33:04.000000000 +0100 ++++ superpat/s_unbox.prg 2009-06-22 23:36:35.000000000 +0200 +@@ -64,6 +64,12 @@ + ΤνΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝ + */ + ++#ifdef HB_COMPAT_C53 ++ #ifndef CLIPPER53 ++ #define CLIPPER53 ++ #endif ++#endif ++ + #ifdef CLIPPER53 // in 5.3, makebox returns an array + FUNCTION UNBOX(cSavedScreen,nTop,nLeft,nBottom,nRight,bRest) + diff -u superori/s_viewp.prg superpat/s_viewp.prg --- superori/s_viewp.prg 1995-11-02 17:09:08.000000000 +0100 +++ superpat/s_viewp.prg 2009-06-10 08:44:27.000000000 +0200 diff --git a/harbour/source/rtl/getsys.prg b/harbour/source/rtl/getsys.prg index 3b22832c40..4cdfa47347 100644 --- a/harbour/source/rtl/getsys.prg +++ b/harbour/source/rtl/getsys.prg @@ -130,7 +130,23 @@ PROCEDURE GetReader( oGet ) FUNCTION GetActive( oGet ) LOCAL oGetList := __GetListActive() - IF oGetList != NIL + LOCAL oGetActiveOld + + THREAD STATIC t_oGetActive + + IF oGetList == NIL + /* NOTE: For complete compatibility we need to make sure this + function works even if there is no active getlist. + F.e. when 3rd party software manages getlists on its + own and still uses this function. [vszakats] */ + IF PCount() > 0 + oGetActiveOld := t_oGetActive + t_oGetActive := oGet + RETURN oGetActiveOld + ELSE + RETURN t_oGetActive + ENDIF + ELSE IF PCount() > 0 RETURN oGetList:GetActive( oGet ) ELSE