* contrib/hbqt/qtcore/qth/QTimer.qth
! Removed: :singleShot() method as it cannot be implemented
as per documented because of how signal/slots are implemented
in Harbour. Instead, use code like this ( courtesy Ligui ):
::oQtSingleShot := QTimer( ::oQtObject )
::oQtSingleShot:setSingleShot( .T. )
::oQtSingleShot:setInterval( 0 )
::oQtSingleShot:connect( "timeout()", { || ::__OnReadyExec() } )
::oQtSingleShot:start()
* examples/hbdoc/genhtml.prg
* examples/hbdoc/gentpl.prg
* examples/hbdoc/gentxt.prg
* examples/hbdoc/genxml.prg
* examples/hbdoc/hbdoc.prg
* examples/hbdoc/tmplates.prg
% cleanups and formatting
+ added support for UTF8 HVM CP
+ enabled UTF8 HVM CP. it means that now input files
can really be UTF8 ones.
* contrib/hbqt/hbmk2_qt.hb
* contrib/hbqt/qtcore/hbqt.h
* contrib/hbqt/qtcore/hbqt_init.cpp
- Removed: a hack introduced some months back where
C++ static items were held in a list them released
at exit of an application. This was double work and
now is not needed at all.
* contrib/hbqt/qtcore/hbqt_bind.cpp
- Reverted: last fix where <qtObject> was compared against
a numeric, which, BTW was a stupid implementation.
A pointer casted to a numeric is always true.
* contrib/hbqt/qtgui/hbqt_init.cpp
- Deleted: deleting the QApplication object.
It was breaking such code:
oWnd:connect( QEvent_Close, {|| QApplication():quit() } )
QApplication():exec()
the reason was any code executed after
QApplication():quit() was rendered unexcutable because
appln was forced to stop execution.
* contrib/hbqt/qtcore/hbqt_hbqevents.cpp
+ Reintroduced: QEvent_Close's return value to true.
It is necessary to intercept this event at appln level.
* contrib/hbqt/qtcore/qth/QLibraryInfo.qth
* contrib/hbqt/qtgui/qth/QDesktopServices.qth
+ Reworked: constructors.
Previous implementation was wrong.
Applied Francesco's thought and it worked, thanks.
* contrib/hbqt/qtgui/qth/QSound.qth
+ Added: two slot methods.
* utils/hbmk2/hbmk2.hbp
* utils/hbmk2/hbmk2.prg
* utils/hbmk2/Makefile
* minor changes to do not require std.ch
+ enabled -u option for hbmk2 source code.
* contrib/hbide/idedocks.prg
! Fixed: one more QIcon() regression, though not used.
* contrib/hbqt/qtcore/hbqt_hbqslots.cpp
! Fixed: to pass correct class name for some type of slots
<pList> in constructors.
* contrib/hbqt/qtcore/hbqt_bind.cpp
* contrib/hbqt/qtcore/qth/QLibraryInfo.qth
* contrib/hbqt/qtgui/qth/QDesktopServices.qth
! Implemented: mechanism to generate a Harbour level class
without the need of a Qt level object for those classes
where methods are executed by Qt code only.
This fixes the bug issue reported by Ligui.
* contrib/hbqt/qtcore/hbqt_bind.cpp
* contrib/hbqt/qtcore/hbqt_misc.prg
+ Implemented: DESTRUCTOR FUNCTION <somePrgOrCFunc()>
* contrib/hbqt/qtgui/hbqt_init.cpp
* contrib/hbqt/qtcore/hbqt_init.cpp
! Fixed: some rare signals issued by Qt with NULL pointers.
This fixes regression reported on user-list a few days back.
And probably fixes many-many unexplained GPF's.
* utils/hbmk2/hbmk2.prg
* marked the file as UTF8
* added accent to my own name. let's see on which platforms
and configs it appears alright (second "a" should appear
with an acute accent: "a'")
[ms-dos and OS/2 is not expected to work]
* INSTALL
% tuned to not require regular updates when new versions of
certain linked products are release (ie. deleted latest
version specific links and references)
* harbour/include/hbclass.ch
+ added support for
DESTRUCTOR FUNCTION <FuncName>[()]
in class declaration. It allows to define as object
destructors external functions, i.e. defined in C
* harbour/src/rtl/valtype.c
* harbour/include/harbour.hbx
+ added new PRG function HB_ISEVALITEM()
It returns true if item can be evaluated by EVAL() function,
i.e. for codeblocks and function symbols.
In the future it can be extended to accept objects with :EVAL()
methods.
* contrib/hbqt/qtcore/hbqt_bind.cpp
+ Implemented: Events, Slots, Destroyers on thread level.
Previously those were created per object level. This greatly
decreased the os-resource count and also simplifies the code.
Thanks to Przemek for the tip.
+ Implemented: release of all objects per thread level.
hbQT employs internal counter to identify threads.
All widgets are created in one global list which has
made it possible to use Qt's blocking widgets, like
QMessageBox, in Harbour MT applications. It seems that
Qt looks for the event processing only in main appln
thread and hence these widgets were not usable in
other threads. The testbed is hbqt/tests/demoqt.prg
which is now multithreaded. You check it with
menu option <Dialog><Another Dialog>.
+ Formatting: in tracelog entries.
* contrib/hbqt/qtcore/hbqt_hbqevents.cpp
- Commented out: a hack where QClosEvent was being treated
differently then other events.
* contrib/hbqt/tests/demoqt.prg
* Parented: QMessageBox() ( Read below )
* contrib/hbide/idedocks.prg
- Removed: one hack which at begining was there to activate
QMainWindow's docking area resizable.
* contrib/hbide/idemain.prg
+ Changed: ::cWrkCodec to be "EN" by default.
It fixes recent regression in hbIDE for certain users.
* contrib/hbide/idemisc.prg
* Parented: QMessageBox() should always be constructed with a
parent because of special handelling of blocking dialog
where parent is treated slightly different than other
Qt widgets. This fixes a long-standing bug in hbIDE where
appnl was rendered in indefinite loop when "X" button
was employed to terminate and confirm dialog would
not be terminated internally.
So for QMessageBox() and, to be on the safer side, all
widets derived from QDialog() should be constructed
with a parent and at the end be reparented with a
just-to-be-deleted-QWidget(), like:
oMB := QMessageBox( oParent )
...
oMB:setParent( QWidget() )
RETURN something
* harbour/src/common/hbffind.c
* ulAttr -> nAttr
+ added support for softlinks in * nix systems.
Now they are reported with "L" attribute by directory() function.
This modification also fixes directory scanning interrupted by
dummy softlinks.
* harbour/contrib/xhb/dirrec.prg
! fixed double added extension to file mask
* contrib/hbqt/qtcore/hbqt_bind.cpp
+ Added: static HB_CRITICAL_NEW( s_qtMtx ); and parts.
+ Tuned: compilable with or without TSD protocol.
To turn on TSD protocol, change
__HBQT_WITH_MT_SUPPORT__NO => __HBQT_WITH_MT_SUPPORT__
* utils/hbmk2/hbmk2.prg
- do not include Harbour bin dir in linker libpath on non-*nix
systems. In could cause some compilers (f.e. mingw) to link
to .dlls stored there (f.e. 3rd party dynamic dlls enabled
with HB_INSTALL_3RDDYN), not letting user supplied libpaths
to kick in. If you for some reason want to include Harbour
bin dir in libpath, use: -L${HB_LIB} option, or to include
dynamic lib dir (emulating old behavior on non-*nix), use
-L${HB_DYN}
! fixed -env option processing after 2012-06-14 12:01 UTC+0200
* INSTALL
+ use win-make in primary build example except mingw32-make,
change wording a little
% tweaked information about large attachment in HOW TO PARTICIPATE
section
* harbour/src/3rd/pcre/Makefile
* disabled JIT support in default builds.
It fixes build process for platforms which do not support MT mode
like some old Linux distors. I also made runtime tests with some
simple expressions and on x86 based CPUs the difference is really
minor. PCRE compiled with JIT is a little bit faster in regex
compilation (~5%) but slower in regex evaluation (10%).
AFAIR completely different results then suggested by documentation.
For tests I used rather simple expression on small data set:
cData := hb_TSToStr( hb_datetime() )
cExp := "[:]([a-zA-Z]|[0-9])[0-9][:]..[.]"
But such short expressions and data are quite common in real
programs.
If someone wants to enable JIT in his build then he can make it
using SUPPORT_JIT macro, i.e.:
export HB_USER_CFLAGS=-DSUPPORT_JIT