* harbour/include/hbexprb.c
! fixed possible GPF/internal memory corruption in code like:
? HB_I18N_GETTEXT_NOOP( "Ala ma kota" + " !!!" )
Mindaugas, the fix is also the answer for the question you left
in TODO.
* harbour/source/vm/dynlibhb.c
* forced casting in OS2 builds to eliminate problems with possible
differences between compilers in 'char' type sign
* harbour/source/rtl/filesys.c
! use _getcwd1() only in GCC OS2 builds - it's local GCC function
* removed some header files from OS2 build - please test if it does
not break GCC builds
* harbour/contrib/gtwvg/gtwvg.c
* harbour/contrib/gtwvg/gtwvg.h
* harbour/contrib/gtwvg/hbgtwvg.ch
* harbour/contrib/gtwvg/wvgpaint.prg
! Synchronized with GTWVT.
+ Added HB_GTI_* hb_gtInfo() constants:
HB_GTI_PRESPARAMS // provides mechanism to configure windows appearance and behavior
HB_GTI_ENABLE // enables window to receive input focus with specified GT
HB_GTI_DISABLE // disables window to accept input focus with specified GT
HB_GTI_SETFOCUS // sets the input focus to specified GT
+ Added HB_GT_PP structure supporting design-time presentation
parameters via HB_GTI_PRESPARAMS:
HB_GTI_PP_EXSTYLE // extended style of the window
HB_GTI_PP_STYLE // normal style of the window
HB_GTI_PP_X // left position by pixel | top position by row
HB_GTI_PP_Y // top position by pixel | left position by col
HB_GTI_PP_WIDTH // width of the window by pixel | number of rows in window
HB_GTI_PP_HEIGHT // height of the window by pixel | number of columns in window
HB_GTI_PP_PARENT // parent GT if window needs to be modal and/or other usage
HB_GTI_PP_VISIBLE // flag to specify if the window is made visible immediate after this call
HB_GTI_PP_ROWCOLS // flag to interpret X,Y,WIDTH,HEIGHT as Top,Left,Rows,Cols
;IMPLEMENTS the behavioral changes to current GT window invoked
either by hb_gtCreate() or hb_gtSelect() functions by specifying
an array of 9 elements ( bound to increase in future ) via
hb_gtInfo( HB_GTI_PRESPARAMS, aPresParams ) where <aPresParams>
contains elements described as above:
1. ExStyle N [D] 0
2. Style N WS_OVERLAPPEDWINDOW
3. x[pxl] top[row] N 0
4. y[pxl] left[col] N 0
5. width[pxl] rows[row] N CW_USEDEFAULT
6. height[pxl] cols[col] N CW_USEDEFAULT
7. Parent GT P NIL
8. Visibility L FALSE
9. RowCols L FALSE
<aPresParams> must be passed with all 9 elements even if
you want only few to be changed.
* harbour/contrib/gtwvg/tests/demowvg.prg
! Updated to demonstrate above concept to show up a modal dialog in the
same thread on top of a threaded window. Try to click on the parent window.
<Traditional><Browser><F3> will show up this modal dialog.
;NOTE : Please do not use literals to define members, always use
#defines from hbgtwvg.ch as it is a work in progress and is possible
that few of the definitions may change in future.
* source/rtl/hbi18n.c
* Modified __I18N_GETTEXT() to not RTE when trs table
is non-array (like NIL).
* USHORT -> ULONG in a few places.
* source/rtl/gtwvt/gtwvt.c
* Minor formatting.
* source/rtl/gtwvt/gtwvt.c
+ Added support for HB_GTI_ICONRES, HB_GTI_ICONFILE
before the window is created.
! Fixed resource leak when HB_GTI_ICONFILE was used.
! Fixed problem with HB_GTI_ICONRES when it was resetting
the icon if a non-string/non-numeric parameter was passed
passed, which included simply trying to read the value
using hb_gtInfo( HB_GTI_ICONRES ). If this was an intented
feature, pls speak up.
; Please review these changes.
(this file somehow didn't get committed previously)
* harbour/source/rtl/itemseri.c
! fixed 8-bytes integer numbers deserialization
+ added support for serializing number with information about size
and decimal places. It can be activated by passing .T. as second
parameter to HB_SERIALIZE() function.
Mindaugas please test if this is what you asked for.
* harbour/source/rtl/hbi18n.c
* changed USHORT to ULONG to pacify warning and minor speed increase
(it eliminates later conversions to 32bits when variable is used)
* harbour/source/rtl/gtwvt/gtwvt.h
* harbour/source/rtl/gtwvt/gtwvt.c
! fixed HB_GTI_SETPOS_ROWCOL and HB_GTI_SETPOS_XY parameters decoding
* automatically resize caret when cell size is changed
* show window after setting its all parameters to eliminate visible
resizing and repositioning. It did not eliminate multiple calls to
hb_gt_wvt_FitSize() when windows is created. This has to be fixed
yet or at least low level actions in this function not repeated
when window and font dimensions are the same as in last call.
Please test it in real MS-Windows. It should reduce startup
flickering and increase the speed of initial code.
* source/rtl/gtwvt/gtwvt.h
* source/rtl/gtwvt/gtwvt.c
+ Added support for HB_GTI_ICONRES, HB_GTI_ICONFILE
before the window is created.
! Fixed resource leak when HB_GTI_ICONFILE was used.
! Fixed problem with HB_GTI_ICONRES when it was resetting
the icon if a non-string/non-numeric parameter was passed
passed, which included simply trying to read the value
using hb_gtInfo( HB_GTI_ICONRES ). If this was an intented
feature, pls speak up.
; Please review these changes.
* source/rtl/hbi18n.c
% Removed 'comment' field from language file header. Any text
can be added simply by adding it to the translation table.
* contrib/Makefile
! Missing hbdbgfx added here, too.
; BTW, I've intentionally left this lib out from the liblist
until we decide where to put these functions. There is
not much point maintaining for the sake of just a few functions.
If there are no objections, I'll be moving these functions
to hbwin (until someone updates the code to work outside
Windows).
* harbour/include/hbdefs.h
+ added #define INCL_LONGLONG to include native compiler LONGLONG
definition. It's necessary for OpenWatcom. Please check how it will
interact with other OS2 compilers (GCC)
* include/hbextern.ch
* source/rtl/memofile.c
+ Added HB_MEMOREAD() which is identical to MEMOREAD()
except it won't truncate the last byte (on non-UNIX
compatible systems) if it's a EOF char.
See also existing HB_MEMOWRIT().
[TOMERGE 1.0]
* include/hbextern.ch
* source/rtl/hbi18n.c
% Using buffered hb_file*() API in __I18N_LOAD()
instead of plain hb_fs*(). This will cause speedup when
buffering gets implemented in hb_file*(), because
currently two hb_fsRead() will be executed for each
string stored in the language file.
- __I18N_LOAD(): Because of the above, passing a file handle
is no longer possible.
+ Added __I18N_LOADFROMMEMORY( <mem> ) => trs
% Minor internal cleanups.
* include/hbextern.ch
* common.mak
* source/rtl/Makefile
+ source/rtl/hbi18n.c
+ Added basic/low level i18n functions:
__I18N_SAVE( cFileName | nHandle, aSortedTable [, cComment ] ) => lSuccess
__I18N_LOAD( cFileName | nHandle ) => trs
__I18N_GETTEXT( @cText, trs ) => NIL
; NOTE: These were originally based on Giancarlo Niccolai's work in xhb,
but everything was completely reworked, fixed, internals removed,
made portable, lighter, shorter and probably quicker. The used file
format is incompatible, slightly smaller and portable.
; NOTE: The internal format of 'trs' (loaded translation) is also
different. For minimal memory/speed overhead, I've choosen a one
dimensional array, as opposed to the original two dimensional
(like the input aSortedTable array).
; TODO: Higher level functions to handle selecting a default
language, loading files automatically, possibly caching
multiple loaded language translations in memory and providing
a high level HB_I18N_GETTEXT() function. We may also readd
a low-level function to create 'trs' from a memory object
instead of loading it from the disk. We should in any case make
the higher level the lightest and less app specific as possible.
* include/hbver.ch
* source/rtl/version.c
* utils/hbtest/rt_str.prg
* ChangeLog
! Fixed returning bit width.
* Reworked hb_version() parameter values as follows:
(also fixed some differences between docs here in the
previous entry and actual code)
HB_VERSION_HARBOUR (was: HB_V_HARBOUR )
HB_VERSION_COMPILER (was: HB_V_COMPILER )
HB_VERSION_MAJOR (was: HB_V_MAJOR )
HB_VERSION_MINOR (was: HB_V_MINOR )
HB_VERSION_MICRO (was: HB_V_REV )
HB_VERSION_STATUS (was: HB_V_STATUS )
HB_VERSION_REVISION (was: HB_V_COUNT )
HB_VERSION_BLD_DATE_STR (was: HB_V_DATE_TIME )
HB_VERSION_BLD_DATE (was: HB_V_DATE )
HB_VERSION_BLD_TIME (was: HB_V_TIME )
HB_VERSION_PCODE_VER (was: HB_V_PCODE )
HB_VERSION_PCODE_VER_STR (was: HB_V_PCODE_STR )
HB_VERSION_CHANGELOG_LAST (was: HB_V_CHANGELOG_LAST )
HB_VERSION_CHANGELOG_REV (was: HB_V_CHANGELOG_REV )
HB_VERSION_FLAG_PRG (was: HB_V_FLAG_HARBOUR )
HB_VERSION_FLAG_C (was: HB_V_FLAG_C )
HB_VERSION_FLAG_LINKER (was: HB_V_FLAG_LINKER )
HB_VERSION_BITWIDTH (was: HB_V_BITWIDTH )
HB_VERSION_ENDIANNESS (was: HB_V_ENDIANNESS )
This function makes deprecated following functions:
- HB_COMPILER() => hb_version( HB_VERSION_COMPILER )
- HB_PCODEVER() => hb_version( HB_VERSION_PCODE_VER_STR )
- HB_BUILDDATE() => hb_version( HB_VERSION_BLD_DATE_STR )
and macros:
- __ARCH16BIT__
- __ARCH32BIT__
- __ARCH64BIT__
- __LITTLE_ENDIAN__
- __BIG_ENDIAN__
- __PDP_ENDIAN__
- HB_VER_SVNID
- HB_VER_CHLID
- HB_VER_LENTRY
- HB_VER_C_USR
- HB_VER_L_USR
- HB_VER_PRG_USR
; TOFIX: Some term anomalies regarding 'REVISION'.
* source/vm/runner.c
* Minor formatting and added "s_" prefix to static var.
* make_b32.mak
* contrib/mtpl_b32.mak
* config/w32/bcc32.cf
- Added -4 switch, which means Intel 386 CPUs are not
not supported by default.
* make_vc.mak
+ Added -GA switch to MSVC 32/64 which creates smaller
(and only slightly faster) TLS access code.
* source/compiler/cmdcheck.c
* source/compiler/hbusage.c
+ Added -/+ suboptions to -k? options to make it
possible to set them to the opposite setting.
; NOTE: BTW, shouldn't -ki option also disable
#pragma BEGINDUMP/ENDDUMP? IMO it should,
otherwise it doesn't really enforce C
out of .prg code.
* config/w32/gcc.cf
* config/w32/mingw.cf
* Changed -march=i486 to -march=i586.
; NOTE: Please comment on CPU optimization switches, IMO
we can quite safely target Pentium/586 as the
minimum CPU requirement these days for default
Harbour builds. If someone needs to run it on
386 (Win95) or 486 (Win98/WinME), a special built
can be created.
* contrib/make_b32_all.bat
* contrib/make_vc_all.bat
* contrib/make_gcc_all.sh
+ Added support for GNU-make features HB_CONTRIBLIBS,
and HB_CONTRIB_ADDONS.
Not tested in make_gcc_all.sh.
* config/w32/msvc.cf
* config/w32/msvcce.cf
- Removed -D_CRT_SECURE_NO_DEPRECATE.
(sync with non-GNU make)
* harbour/include/hbvmpub.h
+ added HB_VM_ISFUNC(), HB_VM_FUNCUNREF() and HB_VM_EXECUTE()
macros to operate on HB_SYMB structure
* harbour/source/vm/hvm.c
* harbour/source/vm/classes.c
* use HB_VM_ISFUNC()/HB_VM_FUNCUNREF()/HB_VM_EXECUTE() macros
for executing function inside HB_SYMB structure to avoid possible
synchronization problems during modifications
* harbour/contrib/gtwvg/gtwvg.c
* harbour/contrib/gtwvg/gtwvg.h
* harbour/contrib/gtwvg/hbgtwvg.ch
+ Added the possibility to have transparency on Window. Work-in-progress
! Rearranged .H structure for future seggregations into
smaller structures
* harbour/contrib/gtwvg/tests/demowvg.prg
+ Added functionality to make a window transparent.
; <Traditional><Browser> : Press F11 and F12 to increase/decrese transparency.
* ChangeLog
+ Clarification to previous entry.
* source/common/hbgete.c
* source/common/hbfsapi.c
! Blind fix for OS/2 compiler warnings. David, please test.
* source/rtl/philes.c
* Minor (0 -> '\0').
* source/compiler/hbusage.c
! Fixed old typo in help text.
; BTW: What is missing for gettext support?
* harbour/contrib/gtwvg/gtwvg.c
* harbour/contrib/gtwvg/gtwvg.h
! Updated to respect latest features of GTWVT.
* harbour/contrib/gtwvg/tests/demowvg.prg
! Updated to honor procol the way console is visible
* harbour/include/hbstack.h
* harbour/source/vm/estack.c
+ added hb_stackReleaseTSD() function - this function can be called
only in HVM cleanup state when all threads except the main one are
released
* harbour/source/rdd/dbf1.c
* harbour/source/rdd/dbffpt/dbffpt1.c
* harbour/source/rdd/dbfntx/dbfntx1.c
* harbour/source/rdd/dbfcdx/dbfcdx1.c
* make RDDINFO settings in BDF* based RDDs thread local
* harbour/include/hbclass.ch
* minor modification
* harbour/source/rtl/gtwvt/gtwvt.h
* harbour/source/rtl/gtwvt/gtwvt.c
+ added support for creating console window after 1-st screen update
Please remember that it interacts with inkey() code which does not
work until windows is not created.
Now it should be quite easy to add support for some initializations
before window is created. Probably it will be necessary to change
INFO() method and store settings in some pWVT variables if pWVT->hWND
is NULL and then use them as parameters for new console window.
I'd like to leave this modification to MS-Windows developers.
* harbour/contrib/xhb/xhbcopyf.c
! fixed name conflict with hb_fsCopy()
* contrib/hbcurl/make_b32.bat
* contrib/hbcurl/make_vc.bat
* contrib/hbcurl/Makefile
+ Added HB_HBCURL_USR_C envvar to customize C switches
specifically for this contrib.