* include/hbexpra.c
+ added warning for undeclared get variables, it can be enabled by -w2
(it also fixes compilation problem after last commit - this modification
was work in progress committed partially by mistake)
* include/Makefile
+ include/hbzlib.h
* include/hbzlib.ch
* src/rtl/Makefile
* src/rtl/hbzlib.c
+ added new C functions weakly bound with ZLIB library:
HB_SIZE hb_zlibCompressBound( HB_SIZE nLen );
HB_SIZE hb_zlibUncompressedSize( const char * pSrc, HB_SIZE nLen,
int * piResult );
int hb_zlibCompress( char * pDst, HB_SIZE * pnDst,
const char * pSrc, HB_SIZE nLen, int iLevel );
int hb_zlibUncompress( char * pDst, HB_SIZE * pnDst,
const char * pSrc, HB_SIZE nLen );
these functions can be used by any C code without forcing ZLIB liking.
If user usese in his code HB_ZCOMPRESS() function or has
REQUEST HB_ZCOMPRESS
then above funcitons are automatically bound with linked ZLIB library.
Otherwise they return 0 or HB_ZLIB_RES_UNSUPPORTED error.
* src/rdd/dbf1.c
* small code simplification
; added note about alternative numeric value rounding when
pure binary integer fields (without decimal places) are
assigned.
* src/common/hbdate.c
! added missing header for WinCE builds
* include/hbexpra.c
* minor simplification
* src/vm/macro.c
+ added new implementation for MemVarBlock() function. It's much faster
and does not force dynamic symbol table scanning on each call
* src/rtl/Makefile
- src/rtl/memvarbl.prg
- removed previous implementation of MemVarBlock()
* src/rtl/tgetint.prg
! fixed __Get() and __GetA() to return NIL when cVarName parameter
is not string (CA-Cl*pper compatible)
! fixed __GetA() to return NIL when given aIndex parameter or value
returned by variable block is not array (CA-Cl*pper compatible)
! fixed __Get() and __GetA() to use FieldWBlock() instead of manually
created macro block which didn't respect workarea
(CA-Cl*pper compatible)
! fixed __GetA() to create SET/GET block instead of access block
(CA-Cl*pper compatible)
! fixed __Get() and __GetA() to not create simple SET/GET macro
blocks but always force memvar usage (CA-Cl*pper compatible).
Please remember that
&( "DATA" )
gives code which tries to access field then memvar but
&( "DATA := .T." )
gives code which always tries to assign memvar and does not even
check if "DATA" field exists in current WA. It means that macro
compiled code like:
&( "{|_1| iif( _1 == NIL, DATA, DATA := _1 ) }" )
should not be used because gives higher priority for fields in
access operation and always assigns memvars, if necessary creating
them.
! allow to dynamically create memvars for get objects in error handler
(CA-Cl*pper compatible)
% use much faster MemVarBlock() instead of manually created codeblock
which activates dynamic symbol table scanning on each call
* contrib\gtwvg\gtwvg.h
! Increased: WVT_CHAR_QUEUE_SIZE 128 => 256
Required in cases where paste operation in a bigger character
field is needed. Even this is hypothetical, but still works
for most use cases.
* contrib\gtwvg\gtwvgd.c
% Changed: behaviour of hb_gt_wvt_PutChar() to let SUPER GT layer
to take the next action if application is not compiled for
GUI controls on CUI window. This is controlled by pWVT->bGui
member of GTWVG structure. This makes GTWVG at par with GTWVT
if GUI controls are not sought as long as screen refreshes
are concerned.
Przemek, can you correct me if I am wrong?
* contrib\gtwvg\wvtwin.ch
% Guarded: #deine RGB under #ifndef construct.
* contrib/hbmxml/3rd/minixml/mxml_fil.c
! fixed mxmlLoadString() with top node - patch by Franček Prijatelj
* contrib/hbmxml/core.c
! fixed mxml node reference counter in mxmlAdd() - it fixes 2-dn
problem reported by Franček Prijatelj
* src/common/strwild.c
! fixed hb_strMatchFile() (C) and hb_fileMatch() (PRG) to respect
. and .* used at the end of pattern just like system does
(or at least should, tests with more complicated wildcard expressions
in my Windows7 exploit bugs in system wildcards interpretation)
* src/rtl/gtxwc/gtxwc.c
* removed some old unused code
! restored window oriented message processing
! check window position on each HB_GTI_SETPOS_XY request - some
WMs sends ConfigureNotify with 0,0 cords when window is resized
overwriting correct values.
* switched HB_GTI_SETPOS_XY coordinates to NorthWestGravity (upper left
corner of window with frame and title bar) from StaticGravity (upper
left corner of client area). Many thanks to Rolf for the hint which
allows to translate coordinates from StaticGravity and NorthWestGravity
; updated note about StaticGravity/NorthWestGravity
; Warning: sometime WMs report wrong size in _NET_FRAME_EXTENTS
and then HB_GTI_SETPOS_XY returns wrong position two.
I observed this behavior in different situations and
different WMs, f.e. in KWIN from Ubuntu, after:
MAXIMIZE, FULLSCREEN-ON, FULLSCREEN-OFF
wrong left and top offsets (3,3) are set which are later
inherited also by NORMALSIZE window for which HB_GTI_SETPOS_XY
returns wrong position. _NET_FRAME_EXTENTS begins to report
correct size after next FULLSCREEN-ON.FULLSCREEN-OFF
* contrib/hbwin/axcore.c
! protection against buffer underflow
* src/rtl/gtxwc/gtxwc.c
* src/rtl/gtxwc/gtxwc.h
% use 32 bit screen buffer items also in 64bit systems
! fixed race condition in SetMode()
! fixed infinite loop with size updating in fullscreen and
maximized modes
! fixed typo in function name used in HB_TRACE() message
* use _MOTIF_WM_HINTS to change window decoration and buttons
instead of _NET_WM_ALLOWED_ACTIONS:_NET_WM_ACTION_CLOSE
_MOTIF_WM_HINTS is much more portable and looks that most of WMs
understand it. _NET_WM_ALLOWED_ACTIONS:_NET_WM_ACTION_CLOSE works
only with few WMs (i.e. with default WM in Ubuntu).
Many thanks to Rolf for information about this method.
* use _MOTIF_WM_HINTS to control some other hints (i.e. resizing)
in WMs which do not make it automatically using information
form XSetWMNormalHints()
* removed \r from all debug messages
; added note about StaticGravity and NorthWestGravity
; TODO:
1) add margins if window cannot be resized to requested size
(i.e. in fullscreen or maximized mode)
2) add support for HB_GTI_RESIZEMODE=HB_GTI_RESIZEMODE_FONT
* contrib/gtqtc/gtqtc.h
! typo in variable type
* contrib/gtqtc/gtqtc1.cpp
* minor simplification
* src/rtl/gtxwc/gtxwc.c
+ added support for disabling close button [x] on HB_GTI_CLOSEMODE==2
Thanks to Rolf for suggestion removing/adding _NET_WM_ACTION_CLOSE
to _NET_WM_ALLOWED_ACTIONS property is honored by WMs I tested and
they hide/show [x] button respectively.
* contrib/gtqtc/gtqtc1.cpp
! typo in last commit - flags and state were not changed
* src/rtl/gtxwc/gtxwc.c
* added XSync() just after XBell() to reduce a little bit potential
delay
* include/hbgtinfo.ch
+ added new hb_gtInfo() switch: HB_GTI_CLOSEMODE
It controls close event (i.e. ALT+F4 and/or [x] button in MS-Windows)
behavior:
== 0 - terminate application
>= 1 - generate HB_K_CLOSE
== 2 - disable close button
* contrib/gtqtc/gtqtc.h
* contrib/gtqtc/gtqtc1.cpp
% optimized setWindowFlags() and setWindowState() to not
execute show() when flags/state are not changed.
+ added support for HB_GTI_CLOSEMODE
* changed HB_GTI_CLOSABLE to work line in GTXWC and GTWVT
* src/rtl/gtxwc/gtxwc.c
! fixed setting window position by HB_GTI_SETPOS_XY
+ added support for HB_GTI_CLOSEMODE
; note: in GTXWC we cannot easy disable close button so
HB_GTI_CLOSEMODE==2 will work like 1 until we
do not find some portable way to inform WM that
is should hide close button
* src/rtl/gtwin/gtwin.c
* added type checking in few HB_GTI_* settings
+ added support for HB_GTI_CLOSEMODE
; note: in GTWIN we cannot catch close event so
HB_GTI_CLOSEMODE==1 works like 2
In this GT HB_GTI_CLOSABLE also has to work like
HB_GTI_CLOSEMODE==2
* src/rtl/gtwvt/gtwvt.h
* src/rtl/gtwvt/gtwvt.c
* added range checking in HB_GTI_RESIZEMODE setting
+ added support for HB_GTI_CLOSEMODE
* src/common/hbdate.c
+ added support for decooding timestamp values with semicolon ";" used
as date and time part delimiters, i.e.:
tValue := t"2013-11-06;15:14:45"
* 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.
* src/rdd/dbcmd.c
* src/rdd/dbcmd53.c
* changed HB_USHORT to HB_AREANO in few declarations
% simplified code taking order number or name from user parameters
* contrib/hbfship/hbfship.hbp
* contrib/hbfship/hbfship.hbx
+ contrib/hbfship/stroccur.prg
+ added undocumented FlagShip function:
StrOccurs( <cSub>, <cStr>, [<lAny>] ) -> <nCount>
It returns the number of occurrences of <cSub> string in <cStr>
If <lAny> is true (default) then it accepts any possible substring
posittions otherwise (lAny == .F.) substrings cannot occupy common
characters from <cStr>, i.e.
StrOccurs( "aa", "aaaa", .T. ) => 3
StrOccurs( "aa", "aaaa", .F. ) => 2
* contrib/hbfoxpro/hbfoxpro.hbp
* contrib/hbfoxpro/hbfoxpro.hbx
+ contrib/hbfoxpro/dbfunc.c
+ added FoxPro compatible database functions:
Filter(), Ndx(), Relation(), FSize(), __fox_Used(), __fox_Seek()
* contrib/hbfoxpro/hbfoxpro.hbp
* contrib/hbfoxpro/hbfoxpro.hbx
+ contrib/hbfoxpro/miscfunc.c
+ added few functions which can be directly translated to Harbour ones:
Parameters() => PCount()
SRows() => MaxRow()
SCols() => MaxCol()
VarRead() => ReadVar()
PrintStatus() => IsPrinter()
Key() => InedxKey()
* contrib/hbfoxpro/hbfoxpro.hbx
* contrib/hbfoxpro/misc.prg
+ added few new actions to Sys() function
+ added AElement(), Occurs() and InsMode() functions
* contrib/hbfoxpro/hbfoxpro.ch
+ added PP rules for few FoxPro commands and standard functions with
aliases, i.e.
SEEK <exp> TAG <tag> IN <wa>
lUsed := USED( <wa> )
nRecordsInWA := RECCOUNT( <wa> )
+ added PP rules for SCAN / ENDSCAN
+ added few other commands
; Please verify me. I'm not [V]FP user and I cannot check what [V]FP
exactly does. It's possible that I missed something or wrongly
understood.
; Special thanks to Alex Antypenko. I took information about [V]FP
functions and syntax analyzing his code.
* contrib/hbfship/hbfship.hbx
! removed FIELDDECI() reenabled by mistake during one of
internal merges
* src/rdd/dbfcdx/dbfcdx1.c
* accept headers with KEY and FOR expression lengths without
offset fields.
* tests/video.prg
! fixed CLIP and xHarbour compilation
+ added support for testing UTF8 screen output
(non empty 1-st parameter) and HB_GTI_COMPATBUFFER (non empty
second parameter)
* include/dbinfo.ch
* include/hbrdddbf.h
* src/rdd/dbf1.c
+ added default codepage setting RDDI_CODEPAGE for DBF RDD (and all
inherited RDDs). This helps to do an easy migration of application
to unicode, using existing dbf files:
HB_CDPSELECT("UTF8EX")
RDDINFO(RDDI_CODEPAGE, <codepage_used_in_dbf>)
* contrib/gtqtc/gtqtc1.cpp
* added support for keyevents with multicharacter strings.
QT documentation says that such feature is enabled by
Qt::WA_KeyCompression attribute and I left comment about
it in the QTConsole() constructor but practice showed that
on some platforms it was enabled even without setting this
attribute and users using keyboard barcode readers reported
"eaten" characters.
* explicitly enabled Qt::WA_KeyCompression and removed comment
about missing functionality in QTC keyPressEvent() code.
* src/rtl/gttrm/gttrm.c
* send ST (ESC \) after Linux console palette set sequence (ESC ] P).
ESC ] is Operating System Command (OSC) which by default should
be terminated by ESC \ (ST). Some terminals which sets LINUX
TERM envvar but do not correctly understand Linux console palette
set sequence may hang waiting for ST. Now ST is sent to avoid such
situation. Linux console simply ignore ST terminator so nothing
wrong should happen.
- contrib/hbfship/flddeci.c
* contrib/hbfship/hbfship.hbp
- removed FieldDeci() function. Function with the same name and
functionality exists in HBCT.
* config/postinst.hb
! typo in my previous commit
* ChangeLog.txt
! UTF8 BOM, indenting and trailing line spaces in one of recent commits
2013-10-11 21:36 UTC-0800 Pritpal Bedi (bedipritpal@hotmail.com)
* contrib/gtwvg/crt.prg
+ Added: Method RefreshEx() which refreshes the CRT window directly via
WINAPI call instead of through hb_gtInfo( ... ) mechanism. This is
useful in MT applications where one thread want to refresh the
scren contents of CRT window in another thread.
* contrib/gtwvg/gtwvgd.c
+ Added: hb_gtInfo( HB_GTI_BORDERSIZES ) -> { nLeft, nTop, nRight,
nBottom }
Useful in cases when you need to position precisely another window on
top
of existing GT window.
% Aligned: hb_gtInfo( HB_GTI_SCREENHEIGHT and HB_GTI_SCREENWIDTH ) with
GTWVG code with a small difference.
* contrib/gtwvg/hbgtwvg.ch
+ Added: #define HB_GTI_BORDERSIZES
* contrib/gtwvg/wvgcore.c
+ Added: HB_FUNC( WVT_DESTROYPICTURE ) <- <hIPicture>
Destroys the IPicture created with WVT_LOADPICTURE*() functions.
+ Added: HB_FUNC( WVT_LOADPICTUREEX ) <- <cFilePicture> -> <hIPicture>
* config/globsh.mk
* use $(CP) as workaround for missing soft links in NT shell.
I know about mklink but it needs quite new Windows version
and soft links need special privileges. Anyhow better solution
is highly welcome.
* config/postinst.hb
* use hardlinks or copy files if symlinks do not work
* config/linux/gcc.mk
* added support for non SH shells - it allows to create Android
builds in MS-Windows using Android NDK from Google.
* src/rtl/gttrm/gttrm.c
! fixed terminal ISO mode auto detection (broken in previous patch)
% use position from UTF8/ISO mode detection instead of double asking
terminal cursor position. With the minor cost of unknown initial
column position we have faster start on slow connections.
* include/hbvm.h
* src/vm/hvm.c
* added new 7-th parameter fOverLoad to hb_vmRegisterSymbols() function.
When it's TRUE then new public function symbols overload existing ones.
* src/vm/runner.c
! use new fOverLoad parameter of hb_vmRegisterSymbols() function to
overload existing functions (HB_HRB_BIND_OVERLOAD) instead of making
local modifications in global symbol table. It fixes memory corruption
when the same HRB module is reloaded with HB_HRB_BIND_OVERLOAD parameter.
This was very old bug which has existed from the beginning when I added
support for HB_HRB_BIND_* flags.