* contrib/hbqt/hbmk2_qt.hb
! Guarded: qth_is_QObject() function under __HBQT_REVAMP__.
This facilitates to change how we would like to use this
construct in the future. Also there is a lot which may be
added to this protocol, apart from only detecting if a class
is QObject() derived, and hence is subject to change.
We will do what is proposed after all is settled on new
protocol.
- Removed: QIcon() hack which was exploiting hbqt_par_Qstring()
usage. Also it was not per Qt documantation. Now anywhere
an icon is needed, it has to be constructed explicitily
with a call to QIcon( cFileName ). Earlier QIcon() was passed
as only a <cFileName>
INCOMPATIBLE: 3rd party libs have to modify their code.
* contrib/hbqt/qtcore/qth/QLibraryInfo.qth
* contrib/hbqt/qtcore/qth/QMimeData.qth
* contrib/hbqt/qtgui/qth/QClipboard.qth
* contrib/hbqt/qtgui/qth/QDirModel.qth
* contrib/hbqt/qtgui/qth/QDropEvent.qth
* contrib/hbqt/qtgui/qth/QFileSystemModel.qth
* contrib/hbqt/qtgui/qth/QGraphicsSceneDragDropEvent.qth
+ Implemented: _HBQT_REVAMP__ specific signal/slot firing objects.
* contrib/hbqt/qtgui/qth/QPushButton.qth
- Removed: <CLASS> PaintEvent = </CLASS> token.
* contrib/hbqt/qtgui/hbqt_hbqgraphicsitem.cpp
* contrib/hbqt/qtgui/hbqt_hbqgraphicsscene.cpp
* contrib/hbqt/qtgui/hbqt_hbqplaintextedit.cpp
* contrib/hbqt/qtgui/hbqt_hbqtableview.cpp
+ Implemented: _HBQT_REVAMP__ specific signal/slot firing objects.
* contrib/hbqt/qtcore/hbqt_bind.cpp
* contrib/hbqt/qtcore/hbqt_hbqevents.cpp
* contrib/hbqt/qtcore/hbqt_hbqslots.cpp
* contrib/hbqt/qtcore/hbqt_init.cpp
* contrib/hbqt/qtcore/hbqt_pointer.cpp
* contrib/hbqt/qtgui/hbqt_init.cpp
+ Implemented: _HBQT_REVAMP__ specific signal/slot/events management.
; NOTE: hbIDE is almost running under __HBQT_REVAMP__ methodoly
with signal/slots/events catched anfired properly.
This implementation is subject to a lot of improvements
but at of current shows up a good promise to achieve
the end-results soon.
* utils/hbmk2/hbmk2.prg
+ use HB_DEFAULT()
% deleted common.ch
* contrib/hbrun/hbrun.prg
! fixed typo causing scripts being found in PATH to fail
to open.
* include/harbour.hbx
* src/rtl/Makefile
+ src/rtl/hbdef.c
+ added HB_DEFAULT( @<xVariable>, <xDefaultValue> )
it can replace DEFAULT ... TO ... command. In addition
it will set the value to the default one even when the
variable has any other type, not only NIL.
* src/3rd/zlib/Makefile
* src/3rd/zlib/*
* updated to 1.2.7 from 1.2.6. Using 3rdpatch.hb and .dif reapplied manually.
* src/rtl/hbzlibgz.c
+ HB_GZOPEN() updated to use new in zlib 1.2.7 wide gzopen()
on Windows. It means now it supports unicode filenames.
* contrib/hbmzip/3rd/minizip/zip.c
* updated manually from zlib 1.2.7 (two warnings fixed)
* utils/hbmk2/hbmk2.prg
* utils/hbmk2/hbmk2.pt_BR.po
* utils/hbmk2/hbmk2.hu_HU.po
* utils/hbmk2/hbmk2.es_PE.po
! synced help text with actual list of supported macros.
* contrib/hbformat/hbfmtcls.prg
+ use harbour.hbx as proper-casing database (instead of
incomplete local list of Harbour functions)
+ completed list of IS*() macros
* contrib/hbziparc/ziparc.prg
! fixed for unicode in another location
% optimization to prev unicode fix
* contrib/hbtip/thtml.prg
! fixed chr() usage for unicode mode
* formatted (hbformat and manual)
% deleted excessive parantheses
* contrib/hbtip/cgi.prg
* contrib/hbtip/httpcli.prg
* contrib/hbtip/client.prg
* contrib/hbtip/tests/base64.prg
! fread()/fwrite() calls fixed for unicode
! fixed some more anomalies, like wrongly checkingg fwrite() for
negative result, calling fread() with 4 parameters, passing
buffer by reference to fwrite(), minor optimizations and formatting.
* contrib/hbtip/url.prg
* formatting
; build tested only
* contrib/hbqt/qtcore/hbqt.h
! deleted hbqt_par_QString() macro. It was not translating
between HVM CP, so it was wrong.
; TOFIX: HBQSCINTILLA is broken now, because it's still used there.
* contrib/hbqt/qtcore/hbqt_bind.cpp
+ Implemented: requested by the group protocol - to handle
parent-child relations internally by hbQT leading not
to hold everything in scoped variables. All objects will
behave accordingly except QAction() which is never get a
parent accoring to Qt docs.
; NOTE: will explain this in detail in reply to the message
of this commit.
* contrib/hbqt/hbmk2_qt.hb
! Changed: hb_itemReturn() => hb_itemReturnRelease() to honor
Harbour variable scoping protocol. We need another method to
keep it alive inside new methodology.
+ contrib/hbqt/qtcore/hbqt_destroyer.cpp
+ contrib/hbqt/qtcore/hbqt_destroyer.h
+ Contains: HBQDestroyer() a generic class whose sole purpose
is to catch "destroyed()" signal of any QObject and then
forward it to new engine to delete harbour object.
* contrib/hbqt/qtcore/hbqt_bind.cpp
+ Added: "destroyed()" signal on QObject() derived classes.
* contrib/hbqt/qtcore/hbqt_misc.prg
+ Added: #define __HBQT_REVAMP__ then commented out.
Activated: destructor guarded against above define.
* contrib/hbqt/qtcore/hbqtcore.hbm
+ Added: new sources.
; NOTE: this implementation prevents double freeing of Qt objects
while keeping Harbour variable's scope protocol intact. So
if Qt deletes an object, Harbour object is also cleared
automatically. The same applies if Harbour variable goes
out of scope, Qt object is deleted, which is safe, because
Qt allows it.
Now no GPF on exit on any demo, including hbIDE, with
__HBQT_REVAMP__ enabled.
* contrib/hbqt/qtgui/qth/QCalendarWidget.qth
* contrib/hbqt/qtgui/qth/QCheckBox.qth
* contrib/hbqt/qtgui/qth/QCloseEvent.qth
* contrib/hbqt/qtgui/qth/QCommandLinkButton.qth
* contrib/hbqt/qtgui/qth/QCompleter.qth
* contrib/hbqt/qtgui/qth/QConicalGradient.qth
* contrib/hbqt/qtgui/qth/QDateEdit.qth
* contrib/hbqt/qtgui/qth/QDateTimeEdit.qth
* contrib/hbqt/qtgui/qth/QDeclarativeContext.qth
* contrib/hbqt/qtgui/qth/QDial.qth
* contrib/hbqt/qtgui/qth/QDialog.qth
* contrib/hbqt/qtgui/qth/QDockWidget.qth
* contrib/hbqt/qtgui/qth/QDoubleSpinBox.qth
* contrib/hbqt/qtgui/qth/QDrag.qth
* contrib/hbqt/qtgui/qth/QErrorMessage.qth
* contrib/hbqt/qtgui/qth/QFileSystemModel.qth
* contrib/hbqt/qtgui/qth/QFocusFrame.qth
* contrib/hbqt/qtgui/qth/QFontComboBox.qth
* contrib/hbqt/qtgui/qth/QFontMetrics.qth
* contrib/hbqt/qtgui/qth/QFontMetricsF.qth
* contrib/hbqt/qtgui/qth/QGroupBox.qth
* contrib/hbqt/qtgui/qth/QInputDialog.qth
* contrib/hbqt/qtgui/qth/QItemSelection.qth
* contrib/hbqt/qtgui/qth/QKeySequence.qth
* contrib/hbqt/qtgui/qth/QLCDNumber.qth
* contrib/hbqt/qtgui/qth/QListView.qth
* contrib/hbqt/qtgui/qth/QMatrix.qth
* contrib/hbqt/qtgui/qth/QMessageBox.qth
* contrib/hbqt/qtgui/qth/QMovie.qth
* contrib/hbqt/qtgui/qth/QPainterPath.qth
* contrib/hbqt/qtgui/qth/QPixmap.qth
* contrib/hbqt/qtgui/qth/QProgressBar.qth
* contrib/hbqt/qtgui/qth/QProgressDialog.qth
* contrib/hbqt/qtgui/qth/QRadioButton.qth
* contrib/hbqt/qtgui/qth/QSpacerItem.qth
! Fixed: constructors.
This has been a tidious process and I could have
broken something in the process, though, all demoes
and hbIDE is working fine. If you find some inconsistency,
please shout. Also if someone can overlook the .qth's
for remaining files yet needs the constructors reworked,
it will be a great help.
* contrib/hbide/hbqtoolbar.prg
* contrib/hbide/ideactions.prg
* contrib/hbide/ideeditor.prg
* contrib/hbide/idethemes.prg
! Changed: a little to pass correct parameters to methods
as per the changes in constructors.
; NOTE: now hbIDE neither throws any GPF on exit nor reports
"object destructure failure : reference to freed block"
* contrib/hbqt/qtgui/qth/HBQTableView.qth
* contrib/hbqt/qtgui/qth/QHeaderView.qth
* contrib/hbqt/qtgui/qth/QListWidgetItem.qth
* contrib/hbqt/qtgui/qth/QStatusBar.qth
* contrib/hbqt/qtgui/qth/QTextDocument.qth
* contrib/hbqt/qtgui/qth/QTreeWidgetItem.qth
! Fixed: constructors for few more classes.
Now contrib/hbxbp/demoxbp.prg shows up at least.
* contrib/hbqt/qtgui/qth/QApplication.qth
* contrib/hbqt/qtgui/qth/QColorDialog.qth
* contrib/hbqt/qtgui/qth/QDirModel.qth
* contrib/hbqt/qtgui/qth/QHBoxLayout.qth
* contrib/hbqt/qtgui/qth/QPageSetupDialog.qth
* contrib/hbqt/qtgui/qth/QScrollBar.qth
* contrib/hbqt/qtgui/qth/QTableView.qth
* contrib/hbqt/qtgui/qth/QVBoxLayout.qth
* contrib/hbqt/qtgui/qth/QWizard.qth
! Fixed: constructors which was basically wrong way to get a
class object. This became visible only when QPointer< QClass >
guard is eliminated which was hiding this wrong way.
* contrib/hbqt/hbmk2_qt.hb
* contrib/hbqt/qtcore/hbqt.h
+ contrib/hbqt/qtcore/hbqt_bind.cpp
+ contrib/hbqt/qtcore/hbqt_obj.prg
* contrib/hbqt/qtcore/hbqt_pointer.cpp
* contrib/hbqt/qtcore/hbqtcore.hbm
* contrib/hbqt/qtcore/hbqtcore.hbx
+ Implemented Przemek's draft concept with some changes.
This can be invoked by uncommenting #define __HBQT_REVAMP__
directive in hbqt.h and hbmk2_qt.hb and recompiling hbQT.
; NOTE: all demo tests in contrib/hbqt/tests/* are working ok with new
revamped engine, which, I hope will be matured with time, and
only if Przemek will revive his interest in this project.
The demos are working ok with a GPF on exit. I did not
tried hard to track but hopefully will be a minor issue.
This implementation is not taking use of QPointer<> guard
and is operational on pure pointers, it has discovered
a fundamental flaw in some of the .qth where constructors
were not adhering to primary rules. It may take me a while
to visit all the classes and make the correction. Today's
implementation has fixes for those classes which are used
in demo programs.
This commit became essential in the wake of divided thoughts
about having two implementations in parallel. This commit
shows the way that we do not need that, just few changes in
core engine will establish the solid foundation.
* contrib/hbqt/qtcore/hbqt_pointer.cpp
+ Added: HB_FUNC( SIGNAL2SLOT ) which simulates exactly Qt's way
of signal/slot mechanism. Now hbQT has yet another way to
mimic signal/slots.
+ contrib/hbqt/tests/signalslots.prg
+ Added: deno program to demonstrate Qt's way of signal/slot
affinity in Harbour.
NOTE: above contribution is made by Francessco Perrilo, thanks.
* harbour/config/postinst.hb
! remove old links before hb_FLinkSym() is called.
Without it old links were not overloaded and
I've just noticed that I have still active links
to old harbour shared library in my system.
* contrib/hbide/hbqtoolbar.prg
* contrib/hbide/ideactions.prg
* contrib/hbide/idebrowse.prg
* contrib/hbide/idedocks.prg
* contrib/hbide/idemisc.prg
! Streamlined: HBQToolbar class adding more methods and refining
others. All toolbars in hbIDE except the one, are now based
on HBQToolbar() class and probably it becomes candidate to be
transferred to hbQT after a bit of polishing.
* contrib/hbxbp/xbptoolbar.prg
! Fixed: one regression based on recent hbQT mem leak fixes.
* contrib/hbide/ideedit.prg
* Fixed: recursively attching self to some instance variable.
* Normalized: code.
* contrib/hbide/ideactions.prg
* contrib/hbide/idemisc.prg
* Fixed: some lost actions resulting after recent hbQT changes.
NOTE: more are left still, stay tuned.
* contrib/hbxbp/xbpfiledialog.prg
* Fixed: how :connect()/:disconnect() was applied.
NOTE: until a :disconnect() is performed on an object
which has an actice :connect(), it never goes
out-of-scope.
* harbour/src/vm/arrays.c
* allow to call hb_arrayId() with NULL parameter
* harbour/include/hbapiitm.h
* harbour/src/vm/itemapi.c
+ added internal HVM function hb_itemPutPtrRawGC() - it's
necessary for blocks allocated with hb_gcAllocRaw().
* harbour/src/vm/thread.c
! use hb_itemPutPtrRawGC() instead of hb_itemPutPtrGC()
It fixes internal errors (i.e. reported in build process)
after my previous commit.