* src/vm/hashes.c
! remove index when natural order is disabled by
hb_hKeepOrder( hVal, .f. )
! do not update index when item is deleted and hash array
is marked to be resorted
% few minor optimizations
* contrib/sddoci/sddoci.hbc
* use ocilib as library name in Linux builds.
; I do not know on which platforms ocilib[wma] is used but it's
possible that this modification should be done also for other
platforms not only for Linux.
* src/rtl/gtwvt/gtwvt.c
! added workaround for AltGR and German keyboard
* src/rtl/inkeyapi.c
! added missing 'static' in function declaration
* src/rtl/hbgtcore.c
! added workarounds for HB_GTI_COMPAT_BUFFER switched to .F. by
default.
* tests/gtkeys.prg
* switched to UTF8 CP by default
+ extended keycode information in Harbour
* tests/mt/mttest10.prg
+ allow to chose GT passing it's name as command line argument
+ initialize GT in main thread if GT needs it
(currently QTC needs initialization in main thread)
* contrib/gtqtc/gtqtc1.cpp
* added workaround for missing MT synchronization in QT for XLIB
QT was designed to use screen widgets only in main thread so
it's only workaround which helps but I cannot guaranti
* contrib/hbmzip/mzip.c
* workaround for wrong st_mtime type in struct stat on android
* src/rtl/hbsocket.c
* do not check if IPPROTO_IP is defined, on some platforms like
android it's only enum type. Warning if it exploits some problems
on some seldom used platforms/compilers then please report it.
* src/vm/hvm.c
* minor
* package/mpkg_ver.sh
* do not use bash extensions
* package/harbour-wce.spec.in
* package/harbour-win.spec.in
* package/harbour.spec
* package/mpkg_rpm.sh
* package/mpkg_rpm_wce.sh
* package/mpkg_rpm_win.sh
* removed bash from dependencies list
* src/rtl/hbtoken.c
+ added support for passing token parser parameters as bit field number.
The goal is to replace last to parameters with single bit field which
allows to set many different parsing aspects instead of adding many
new parameters.
+ added support for reverted apostrophes quoting: `a b c`
; TODO: add constant values to control parser in token functions
* utils/hbmk2/hbmk2.prg
! respect reverted apostrophes quoting in options read from .hbp/.hbm
files.
! do not ignore tool parameters passed in -*flags= hbmk2 params if
they do not start with '-'. It resolves problems with shells which
need special quoting to pass parameters, i.e. with both modifications
it's possible to use in hbp files dynamic parameters encapsulated in
different forms, depending on used platform, shell and parameter type,
i.e. parameters are passed as set of separated arguments:
-cflag=`config-tool1`
or paramters are passed as single argument:
-cflag="`config-tool2`"
or parameters are passed in file which name shows config-tool3:
-cflag="@`config-tool3`"
In short words now things like:
-cflag=`pkg-config --cflags gtk+-3.0`
will work correctly with .hbp files
* src/vm/hashes.c
% changed sorting algorithm for hash arrays which keeps item order.
% do not resort hash arrays when KEEPORDER flag is cleared but use
existing internal index to create new order.
* changed the behavior of hb_hSort() function. Now for hash arrays
which keep item order it changes internal item pair position sorting
them. The sort order depends on binary and case sensitivity hash
array flags.
* src/vm/hvm.c
! for literal hash array with repeated keys store the last item
with the given key instead of the first one. It restores
previous behavior.
* contrib/rddads/rddads.hbx
+ added AdsSetIndexDirection()
* contrib/rddads/adsfunc.c
! fixed formatting of AdsSetIndexDirection()
* /contrib/sddpg/core.c
+ enhanced connection parameters support. Now it is possible to connect
to PostgreSQL server using:
1) URI string
RDDINFO(RDDI_CONNECT, {"POSTGRESQL", "postgresql://host"})
2) Key=value parameter pairs
RDDINFO(RDDI_CONNECT, {"POSTGRESQL", "host=localhost port=5432"})
3) separate parameters. Support for port, options, tty is added
RDDINFO(RDDI_CONNECT, {"POSTGRESQL", "host", "user", "passwd", "db",
"port", "options", "tty"})
; Please, test
* contrib/3rd/sqlite3/sqlite3.hbp
* Disable on Minix (no MAP_SHARED which is needed by SQLite WAL);
(Hopefully a temporary measure.)
* src/rtl/filesys.c
! Disable hb_fsPipeUnblock() on Minix;
makes hb_processRun() work. Thanks to Przemek for the idea.
2013-05-16 17:00 UTC+0200 Jfl mafact (jfl/at/mafact.com)
* contrib/rddads/adsfunc.c
! Adding 2nd param to function ADSCOPYTABLECONTENT to allow filtering
like in ADSCOPYTABLE
* src/pp/hbpp.c
! fixed ChangeLog file name detection broken after adding .txt
extension.
* src/rtl/hbproces.c
+ added support merged stdout and stderr output in hb_fsProcessRun()
* src/rtl/hbprocfn.c
+ added support merged stdout and stderr output in hb_processRun()
PRG function. To extract merged stdin and stdout application output
it's enough to pass by reference in 3-rd and 4-th parameters the same
variable, i.e.:
nResult := hb_processRun( cCommand,, @cOutErr, @cOutErr )
* utils/hbmk2/hbmk2.prg
! use hb_processRun() intead of hb_processOpen() to extract merged
stdout and stderr output. It fixes all builds in which hb_processOpen()
does not exists due to some system limitations like missing pipes,
i.e. DOS builds.
* src/vm/fm.c
! fixed typo in DOS builds
* src/rtl/gtwin/gtwin.c
! ignore mouse position reported in mouse wheel events which use
screen based coordinates instead of console window ones.
* include/hbgtinfo.ch
+ added HB_GTI_REDRAWMAX
It sets maximum number of unchanged neighboring chars in redrawn
line. It may help to optimize screen updates in some GTs.
* include/hbgtcore.h
* src/rtl/hbgtcore.c
* contrib/hbct/ctwin.c
+ respect HB_GTI_REDRAWMAX in default REDRAWDIFF() GT methods.
* contrib/gtqtc/gtqtc1.cpp
! added protection against font resizing for degenerated console
window size.
% set HB_GTI_REDRAWMAX to 1
* src/rtl/gtwvt/gtwvt.c
! translate screen base mouse wheel cords to window based ones.
% set HB_GTI_REDRAWMAX to 1
* src/rtl/gttrm/gttrm.c
% set HB_GTI_REDRAWMAX to 8
* src/rtl/gtwin/gtwin.c
% set HB_GTI_REDRAWMAX to 4
* contrib/gtqtc/gtqtc1.cpp
* minor: removed {}
* src/rtl/gtwin/gtwin.c
* reenabled code to get/set palette in GTWIN
! fixed console window resizing when palette is set
! do not change default console palette at application startup.
It's Clipper compatible behavior which allows to inherit colors
set by some initialization program executed before or by some
parent processes which control console environment, i.e. other
Harbour GTWIN applications.
% reset palette on exit only if it was changed.
+ return predefined MS-Windows console palette also in systems where
GetConsoleScreenBufferInfoEx() is not available.
* src/rtl/gtwvt/gtwvt.c
! use predefined BLACK color for building box character bitmaps
instead of palette color[ 0 ] because user can redefine palette.
* contrib/gtqtc/gtqtc1.cpp
! reverted HB_GTI_DISPIMAGE cords
! keep maximized and fullscreen internal flags synced with QT window
! return HB_TRUE from SETMODE() method.
! updated font selection for better size approximation
! accept window size reported by QT in fullscreen and maximized modes
! set size increment steeps separately for ROWS and FONT resize modes
! respect resize step setting minimum window size - it fixes infinite
resize loop in some WM
% strip repeated HB_K_RESIZE keys
* README.md
* contrib/gtqtc/gtqtc.hbc
* contrib/gtqtc/hbmk2_qtmoc.hb
* synced with Viktor's patches for QT
; Pritpal, please verify if it works with QT5
* ChangeLog.txt
! Fixed: BOM troubled by wrong editor, now with Notepad++
and proper settings. I am unable to change Przemek's name
changed in previous commit, rather unable to understand
what should be changed.
+ contrib/xhb/xhbinkey.ch
+ contrib/xhb/xhbkey.c
* contrib/xhb/xhb.hbp
* contrib/xhb/xhb.hbx
+ added support for xHarbour compatible extended Inkey() key codes
This functionality works with GTs which can operate on Harbour
extended key codes which are translated at runtime to xHarbour
extended keys (HB_EXT_INKEY).
+ added new PRG function:
xhb_Inkey( [ <nDelay> ] [ , <nKeyMask> ] ) -> <nKey>
which works like Inkey() but returns xHarbour extended key codes.
+ added new PRG function:
xhb_KeyTrans( <nExtKey> ) -> <nXhbKey>
which translates Harbour extended key code to xHarbour one.
* include/hbapigt.h
* src/rtl/inkeyapi.c
+ added new C function:
int hb_inkeyKeyVal( int iKey );
It extract key/character code from Harbour extended key code
* include/harbour.hbx
* src/rtl/inkey.c
+ added new PRG function:
hb_keyVal( <nExtKey> ) -> <nKeyVal> | <nCharVal>
* package/harbour.spec
* package/mpkg_rpm.sh
+ addded --with openssl switch
* src/3rd/png/pnglconf.h
* disable PNG_STDIO_SUPPORTED macro when from autoconf file when
PNG_NO_STDIO is set
* src/3rd/png/Makefile
! disable stdio in WinCE builds by PNG_NO_STDIO macro
- contrib/gtqtc/gtqtc.cpp
+ contrib/gtqtc/gtqtc1.cpp
* contrib/gtqtc/gtqtc.hbp
* renamed file gtqtc.cpp -> gtqtc1.cpp
It fixes dynamic library creation by HBMK2 which tires to link
gtqtc.o file twice adding second copy indirectly for gtqtc.hbx
* harbour/contrib/rddads/ads1.c
+ run error on invalid SQL query, ex.,
DBUSEAREA(,, "SELECT * FOM syntax_error")
* changed ADS error description to be much more informative
+ contrib/gtqtc/gtqtc.cpp
+ contrib/gtqtc/gtqtc.h
+ contrib/gtqtc/gtqtc.hbc
+ contrib/gtqtc/gtqtc.hbp
+ contrib/gtqtc/gtqtc.hbx
+ contrib/gtqtc/hbmk2_qtmoc.hb
* contrib/hbplist.txt
+ added new QT based GT driver: GTQTC.
This implementation is slightly based on GTQTC created by
Pritpal Bedi - many thanks.
Now GTQTC supports nearly all GT features existing in all other GTs,
i.e.
fullscreen mode:
hb_gtInfo( HB_GTI_ISFULLSCREEN, <lFullScreen> )
automatic fullscreen switch after ALT+ENTER:
hb_gtInfo( HB_GTI_ALTENTER, <lEnable> )
maximized mode controlled by user:
hb_gtInfo( HB_GTI_MAXIMIZED, <lEnable> )
clipboard selection with SHIFT + MouseLeftButton:
hb_gtInfo( HB_GTI_SELECTCOPY, <lEnable> )
terminal window resizing:
hb_gtInfo( HB_GTI_RESIZABLE, <lCanResize> )
both resize modes
a) change number of rowas and columns:
hb_gtInfo( HB_GTI_RESIZEMODE, HB_GTI_RESIZEMODE_ROWS )
b) keep number of rows and clomuns and update font size
hb_gtInfo( HB_GTI_RESIZEMODE, HB_GTI_RESIZEMODE_FONT )
blocking ALT+F4 and [X] window buttons:
hb_gtInfo( HB_GTI_CLOSABLE, <lCanClose> )
all cursor shapes and setting cursor blink rate:
hb_gtInfo( HB_GTI_CURSORBLINKRATE, <nMilliSec> )
window positioning in screen pixels:
hb_gtInfo( HB_GTI_SETPOS_XY, <aNewPosXY> ) -> <aPrevPosXY>
mouse positioning in screen pixels:
hb_gtInfo( HB_GTI_MOUSEPOS_XY ) -> <aPosXY>
full control on font behavior with:
a) box characters shown as predefined internally pixmapos:
hb_gtinfo( HB_GTI_FONTATTRIBUTE,
hb_bitOr( HB_GTI_FONTA_DRAWBOX,
hb_gtinfo( HB_GTI_FONTATTRIBUTE ) ) )
b) forcing fixed size font metric:
hb_gtinfo( HB_GTI_FONTATTRIBUTE,
hb_bitOr( HB_GTI_FONTA_FIXMETRIC,
hb_gtinfo( HB_GTI_FONTATTRIBUTE ) ) )
c) independent character cell clearing:
hb_gtinfo( HB_GTI_FONTATTRIBUTE,
hb_bitOr( HB_GTI_FONTA_CLRBKG,
hb_gtinfo( HB_GTI_FONTATTRIBUTE ) ) )
d) displaying control characters ( ASC( x ) < 32 ) in row form:
hb_gtinfo( HB_GTI_FONTATTRIBUTE,
hb_bitOr( HB_GTI_FONTA_CTRLCHARS,
hb_gtinfo( HB_GTI_FONTATTRIBUTE ) ) )
and many others like palette settings (HB_GTI_PALETTE), displaying
pictures (HB_GTI_DISPIMAGE), keyboard modifiers (HB_GTI_KBDSHIFTS),
clipboard reading and setting (HB_GTI_CLIPBOARDDATA) or icon and
window title settings (HB_GTI_ICONFILE, HB_GTI_WINTITLE)
GTQTC also supports GFX graphic primitives (hb_gfx*()) and it operates
on new Harbour extended mouse and keyboard key codes.
The console window is shown when some user outputs appears so
it can be linked with GT GUI application been invisible by default.
It's pure QT code so now is the most portable Harbour GT driver which
can be used on platforms where we haven't native any GT so far or
current GTs like GTXWC do not have native appearance.
Because it uses only high level GUI interface then it should be quite
easy to convert it to other GUI libraries, i.e. GTK.
* harbour/contrib/rddads/adsfunc.c
* ADSREGCALLBACK() implemented using AdsRegisterCallbackFunction() instead
of obsolete AdsRegisterProgressCallback(). This enables draw progress
bar for both indexing and SQL query processing.
; implementation unchanged for old ADS versions (<= 6.1)
* bin/check.hb
* bin/commit.hb
! added executable attribute
* doc/xhb-diff.txt
! xBase++ -> Xbase++, Harbor -> Harbour
* utils/hbmk2/hbmk2.prg
+ show project name in error messages
! applied Viktor fixes:
2013-04-17 03:45 UTC+0200 Viktor Szakats (harbour syenar.net)
! fixed to not leave temp .lnk file on disk with -hbdyn[vm]
targets in win/gcc compiler family
! fixed win/tcc to not use gcc style .lnk files when creating
-hbdyn[vm] targets
! added workaround for linker stderr messages redirected to stdout.
It's not perfect but for sure much better then previous behavior.
Now recently created problems like broken *nix builds can be well
seen in stderr output.
* include/hbapi.h
* include/hbapigt.h
* include/hbvm.h
* src/rtl/inkeyapi.c
* src/vm/cmdarg.c
* src/vm/hvm.c
* replaced hb_cmdargProcessVM() with hb_cmdargProcess() and removed
unused for long time custom user cancel key functionality.
- removed dummy hb_inkeySetCancelKeys() C function.
- removed not used for long time HVM C functions and macros:
hb_vmFlagEnabled(), hb_vmFlagSet(), hb_vmFlagClear(),
HB_VMFLAG_HARBOUR, HB_VMFLAG_ARRSTR
* include/hbgtinfo.ch
+ added new HB_GTI_* actions:
HB_GTI_WINHANDLE - Get console window low level handle
HB_GTI_MOUSEPOS_XY - Get mouse position in pixels
HB_GTI_DISPIMAGE - Display image with given name
* include/hbapigt.h
* src/rtl/inkeyapi.c
+ added new C function: int hb_inkeyKeyMod( int iKey )
+ added code for translation from extended key codes to
standard Clipper ones
* include/harbour.hbx
* src/rtl/inkey.c
+ added new PRG function hb_keyMod( <nExtKey> ) -> <nModifiers>
It extract keyboard modifiers (HB_KF_*) from extended key code.
* include/hbgtcore.h
* src/rtl/hbgtcore.c
+ added new macros for generating extended key codes with keyboard
modifiers for ASCII and UNICODE characters
% strip repeated extended key codes for mouse move
! use standard key codes in extended ALERT() GT method
* include/inkey.ch
+ added key modifiers/flags for extended key codes: HB_KF_*
+ added extended key codes: HB_KX_*
- removed unused HB_K_MULTICODE macro
* src/rtl/gttrm/gttrm.c
* replaced old keyboard and mouse code with new one using
extended key codes for keyboard and mouse
+ added support for keyboard modifiers in GPM events
+ added support for keyboard modifiers in terminal mouse events
* src/rtl/gtwvt/gtwvt.h
* src/rtl/gtwvt/gtwvt.c
! invert selection region in WinCE builds
! fixed selection in fullscreen or maximized modes with margins
* do not add EOL to one line selections
+ added support for painting box drawing characters.
This mode can be enabled by:
hb_gtInfo( HB_GTI_FONTATTRIBUTE, HB_GTI_FONTA_DRAWBOX )
and it causes that GTWVT draws all box characters as pixmap
regardles of used font.
So far this functionality existed only in GTXWC.
+ added support for HB_GTI_FONTA_FIXMETRIC and HB_GTI_FONTA_CLRBKG
So far this functionality existed only in GTXWC.
+ added support for HB_GTI_WINHANDLE
! do not add EOL at the end of one line selection
* src/rtl/gtxwc/gtxwc.h
* src/rtl/gtxwc/gtxwc.c
* replaced old keyboard and mouse code with new one using
extended key codes for keyboard and mouse
* renamed HB_GTXWC_* box drawing macros to HB_BOXCH_* ones
* do not add EOL to one line selections
! fixed few keypad keycodes
* use cursor blinking rate HB_GTI_CURSORBLINKRATE for whole
show/hide period not only half of them. If someone use this
GTI action in his code then now he should double passed
value. [incompatible]
! fixed return value for HB_GTI_SETPOS_ROWCOL
* few minor cleanups
* tests/gtkeys.prg
* replaced old keyboard and mouse code with new one using
extended key codes for keyboard and mouse
+ added description for some key codes
+ added some initial HB_GTI_* actions
+ change cursor size by K_INS
+ display terminal size after HB_K_RESIZE
+ display mouse position after mouse key codes
! display all characters created by hb_keyChar()
! fixed formatting
* src/rdd/dbf1.c
* added more general protection against GPF in not fully
initialized workarea
* harbour/contrib/rddads/adsx.c
! fixed adsSeek() if seek string length is less than index key length
* harbour/src/compiler/hbopt.c
! improved BEGIN/END SEQUENCE support in code trace optimizer. Problem
of false positive warning 'Variable is assigned but not used' is solved
in cases like:
FUNC TEST()
LOCAL n := 1
BEGIN SEQUENCE
IF n == 1
n := 2
BREAK
ENDIF
n := 3
END SEQUENCE
RETURN n
; TODO: test for more complicated cases like nested BEGIN/END SEQUENCE
* harbour/src/rdd/dbf1.c
* added :GetValue() GPF protection if area is "half opened" (ex.,
enumerating field values in error handler on area open failure).
More general solution for "half opened" workareas is welcome