diff --git a/harbour/ChangeLog b/harbour/ChangeLog index 6e32ed600a..54728dfdc3 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -16,6 +16,34 @@ The license applies to all entries newer than 2009-04-28. */ +2012-06-13 11:41 UTC+0200 Viktor Szakats (vszakats syenar.net) + * contrib/hbqt/qtcore/hbqt_bind.cpp + * contrib/hbqt/qtcore/hbqt_hbqevents.cpp + * contrib/hbqt/qtcore/hbqt_hbqslots.cpp + * contrib/hbqt/qtcore/hbqt_misc.prg + * contrib/hbqt/qtcore/hbqt_pointer.cpp + * contrib/hbqt/qtcore/hbqt.h + * contrib/hbqt/qtcore/hbqtcore.hbx + - __HBQT_ISPOINTER() + + TODO for HBQT_ISEQUAL() + - __HBQT_PTR() from .hbx + ! fixed insane inverse camel casing in hbqt_bindGetHbObjectBYqtObject() + + TOFIX for MT which is completely broken now. + - deleted '#if 1's. Experiment locally, do not readd them. + - deleted code protected by '#if 0'. Experiment locally, do not readd them. + + QUESTION for code like: 'if( 1 == 1 )' + - HBQT_PROMOTEWIDGET2() -> HBQT_PROMOTEWIDGET() + .hbx is now in sync with the code + + QUESTION for HbQtObjectHandler (_three_ different lists for events? two for slots? Is this needed?) + ! hEvents -> __hEvents, made PROTECTED. Fix other code if this broke anything. + ! __Slots/__Events made PROTECTED. Fix other code if this broke anything. + ! _destroy() -> __destroy(). Fix other code if this broke anything. + + ; I'd like to ask HBQT developers to enable in their editor + the deletion of line-ending spaces and to enable + HB_REBUILD_EXTERN=yes in their local configuration to + keep .hbx files up to date (asking these for the umpteenth times!). + 2012-06-13 01:15 UTC-0800 Pritpal Bedi (bedipritpal@hotmail.com) * contrib/hbide/hbqreportsmanager.prg * contrib/hbide/ideharbourhelp.prg @@ -24,7 +52,7 @@ - Removed: all calls to :hasAValidPointer(). * contrib/hbqt/qtcore/hbqt_bind.cpp - + Added: more debug code to view what happens when + + Added: more debug code to view what happens when appln exits. * contrib/hbqt/qtcore/hbqt_hbqevents.cpp @@ -41,7 +69,7 @@ - Removed: the use of :pPtr variable plus method :hasValidPointer(). * contrib/hbqt/tests/demoqt.prg - ! Reworked: to adapt to revamped hbQT where variable is not needed + ! Reworked: to adapt to revamped hbQT where variable is not needed to hold the built widget if parent is provided or is :connect()ed. 2012-06-13 01:48 UTC+0200 Viktor Szakats (harbour syenar.net) diff --git a/harbour/contrib/hbqt/qtcore/hbqt.h b/harbour/contrib/hbqt/qtcore/hbqt.h index 714617c7b9..65384ce18b 100644 --- a/harbour/contrib/hbqt/qtcore/hbqt.h +++ b/harbour/contrib/hbqt/qtcore/hbqt.h @@ -118,7 +118,7 @@ extern HB_EXPORT void hbqt_addDeleteList( PHB_ITEM item ); /* populate a list of HB_EXPORT PHB_ITEM hbqt_bindGetHbObject( PHB_ITEM pItem, void * qtObject, const char * szClassFunc, PHBQT_DEL_FUNC pDelete, int iFlags ); HB_EXPORT PHB_ITEM hbqt_bindSetHbObject( PHB_ITEM pItem, void * qtObject, const char * szClassName, PHBQT_DEL_FUNC pDelFunc, int iFlags ); -HB_EXPORT PHB_ITEM hbqt_bindGetHbObjectBYqtObject( void * qtObject ); +HB_EXPORT PHB_ITEM hbqt_bindGetHbObjectByQtObject( void * qtObject ); HB_EXPORT void * hbqt_bindGetQtObject( PHB_ITEM pObject ); HB_EXPORT void hbqt_bindSetOwner( void * qtObject, HB_BOOL fOwner ); HB_EXPORT void hbqt_bindDestroyHbObject( PHB_ITEM pObject ); diff --git a/harbour/contrib/hbqt/qtcore/hbqt_bind.cpp b/harbour/contrib/hbqt/qtcore/hbqt_bind.cpp index 51500bc91f..950bc5ee39 100644 --- a/harbour/contrib/hbqt/qtcore/hbqt_bind.cpp +++ b/harbour/contrib/hbqt/qtcore/hbqt_bind.cpp @@ -52,6 +52,8 @@ */ /*----------------------------------------------------------------------*/ +/* TOFIX: completely broken for MT */ + #include "hbapi.h" #include "hbapiitm.h" #include "hbstack.h" @@ -115,25 +117,23 @@ static void hbqt_bind_init( void* cargo ) PHB_ITEM hbqt_bindGetHbObject( PHB_ITEM pItem, void * qtObject, const char * szClassName, PHBQT_DEL_FUNC pDelFunc, int iFlags ) { - #if 1 - char * pname = ( char* ) hb_xgrab( 200 ); - char * pname1 = ( char* ) hb_xgrab( 200 ); + char * pname = ( char * ) hb_xgrab( 200 ); + char * pname1 = ( char * ) hb_xgrab( 200 ); HB_TRACE( HB_TR_DEBUG, ( ".................HARBOUR_REQUEST_BIND_OBJECT( %p, %i, %s, %s, %s ).................", qtObject, iFlags, szClassName, hb_procname( 0, pname, HB_TRUE ), hb_procname( 1, pname1, HB_TRUE ) ) ); hb_xfree( pname ); hb_xfree( pname1 ); - #endif - + PHB_ITEM pObject = NULL; - + if( qtObject == NULL ) return pObject; PHB_SYMB pClassFunc = hb_dynsymGetSymbol( szClassName ); if( pClassFunc == NULL ) return pObject; - + PHBQT_BIND bind; - + HBQT_BIND_LOCK bind = s_hbqt_binds; while( bind ) @@ -152,7 +152,7 @@ PHB_ITEM hbqt_bindGetHbObject( PHB_ITEM pItem, void * qtObject, const char * szC hb_vmPushSymbol( pClassFunc ); hb_vmPushNil(); hb_vmDo( 0 ); - + if( HB_IS_OBJECT( hb_stackReturnItem() ) && hb_vmRequestQuery() == 0 ) { if( pItem == NULL ) @@ -175,9 +175,9 @@ PHB_ITEM hbqt_bindGetHbObject( PHB_ITEM pItem, void * qtObject, const char * szC bind->next = s_hbqt_binds; s_hbqt_binds = bind; } - + bind->hbObject = hb_arrayId( pObject ); - + if( iFlags & HBQT_BIT_QOBJECT ) { if( s_destroyer == NULL ) @@ -185,19 +185,19 @@ PHB_ITEM hbqt_bindGetHbObject( PHB_ITEM pItem, void * qtObject, const char * szC if( pDelFunc != NULL ) QObject::connect( ( QObject * ) qtObject, SIGNAL(destroyed(QObject*)), s_destroyer, SLOT(destroyer()) ); HB_TRACE( HB_TR_DEBUG, ( "hbqt_bindGetHbObject( %p )...%s", qtObject, szClassName ) ); - + hb_vmPushDynSym( s_dynsym_SETSLOTS ); /* initializes __Slots hash */ hb_vmPush( pObject ); hb_vmSend( 0 ); - + hb_vmPushDynSym( s_dynsym_SETEVENTS ); /* initializes __Events hash */ hb_vmPush( pObject ); hb_vmSend( 0 ); } else - { + { HB_TRACE( HB_TR_DEBUG, ( "hbqt_bindGetHbObject( %p )", qtObject ) ); - } + } } } HBQT_BIND_UNLOCK @@ -223,8 +223,8 @@ PHB_ITEM hbqt_bindSetHbObject( PHB_ITEM pItem, void * qtObject, const char * szC HBQT_BIND_LOCK bind = s_hbqt_binds; - pObject = hb_param( 0, HB_IT_OBJECT ); - if( 1 == 1 ) + pObject = hb_param( 0, HB_IT_OBJECT ); + if( 1 == 1 ) /* QUESTION: What is this? */ { if( pObject && hb_vmRequestQuery() == 0 ) { @@ -236,7 +236,7 @@ PHB_ITEM hbqt_bindSetHbObject( PHB_ITEM pItem, void * qtObject, const char * szC hb_itemMove( pItem, pObject ); pObject = pItem; } - + bind = ( PHBQT_BIND ) hb_xgrab( sizeof( HBQT_BIND ) ); memset( bind, 0, sizeof( HBQT_BIND ) ); bind->qtObject = qtObject; @@ -262,14 +262,14 @@ PHB_ITEM hbqt_bindSetHbObject( PHB_ITEM pItem, void * qtObject, const char * szC HB_TRACE( HB_TR_DEBUG, ( "hbqt_bindSetHbObject( %p )", qtObject ) ); } } - } + } HBQT_BIND_UNLOCK HB_TRACE( HB_TR_DEBUG, ( "hbqt_bindSetHbObject returns PHB_ITEM = %p", pObject ) ); return pObject; } -PHB_ITEM hbqt_bindGetHbObjectBYqtObject( void * qtObject ) +PHB_ITEM hbqt_bindGetHbObjectByQtObject( void * qtObject ) { PHB_ITEM pObject = NULL; @@ -325,7 +325,7 @@ void * hbqt_bindGetQtObject( PHB_ITEM pObject ) void hbqt_bindDestroyHbObject( PHB_ITEM pObject ) { void * hbObject = hb_arrayId( pObject ); - + if( hbObject ) { PHBQT_BIND * bind_ptr, bind; @@ -337,7 +337,7 @@ void hbqt_bindDestroyHbObject( PHB_ITEM pObject ) if( bind->hbObject == hbObject ) { HB_TRACE( HB_TR_DEBUG, ( "..............HARBOUR_DESTROY_BEGINS( %p, %i ).............. %s", bind->qtObject, bind->iFlags, bind->szClassName ) ); - + bool fObject = bind->iFlags & HBQT_BIT_QOBJECT; QObject * obj = NULL; const char * classname = NULL; @@ -346,7 +346,7 @@ void hbqt_bindDestroyHbObject( PHB_ITEM pObject ) obj = ( QObject * ) bind->qtObject; classname = obj->metaObject()->className(); } - + if( bind->iFlags & HBQT_BIT_OWNER ) { if( fObject ) @@ -364,18 +364,18 @@ void hbqt_bindDestroyHbObject( PHB_ITEM pObject ) bind->fDeleting = true; bind->pDelFunc( bind->qtObject, bind->iFlags ); bind->fDeleting = false; - } + } hb_xfree( bind ); HB_TRACE( HB_TR_DEBUG, ( " HARBOUR_DESTROYED_NO_PARENT_%s( %p )", classname, obj ) ); } - } + } } else { * bind_ptr = bind->next; hb_xfree( bind ); HB_TRACE( HB_TR_DEBUG, ( "HARBOUR_DESTROYED_QTObjIsNull_%s( %p )", classname, obj ) ); - } + } } else { @@ -387,19 +387,19 @@ void hbqt_bindDestroyHbObject( PHB_ITEM pObject ) bind->fDeleting = true; bind->pDelFunc( bind->qtObject, bind->iFlags ); bind->fDeleting = false; - } + } hb_xfree( bind ); HB_TRACE( HB_TR_DEBUG, ( "HARBOUR_DESTROYED.........( %p )", oobj ) ); Q_UNUSED( oobj ); - } + } } else - { + { HB_TRACE( HB_TR_DEBUG, ( "HARBOUR_DESTROYED_NOT_OWNED_BY_HARBOUR( %p )...%s", bind->qtObject, bind->szClassName ) ); * bind_ptr = bind->next; - hb_xfree( bind ); - } - break; + hb_xfree( bind ); + } + break; } bind_ptr = &bind->next; } @@ -410,7 +410,7 @@ void hbqt_bindDestroyHbObject( PHB_ITEM pObject ) void hbqt_bindDestroyQtObject( void * qtObject ) { HB_TRACE( HB_TR_DEBUG, ( "..............QT_DESTROY_BEGINS( %p )..............", qtObject ) ); - + PHBQT_BIND * bind_ptr, bind; HBQT_BIND_LOCK @@ -420,12 +420,12 @@ void hbqt_bindDestroyQtObject( void * qtObject ) if( bind->qtObject == qtObject ) { HB_TRACE( HB_TR_DEBUG, ( "..............QT_DESTROYING( %p ).............. %s ... fDeleting=%s", qtObject, bind->szClassName, bind->fDeleting ? "YES" : "NO" ) ); - + * bind_ptr = bind->next; if( ! bind->fDeleting ) { hb_xfree( bind ); - } + } break; } bind_ptr = &bind->next; @@ -447,7 +447,7 @@ void hbqt_bindSetOwner( void * qtObject, HB_BOOL fOwner ) if( fOwner == HB_TRUE ) bind->iFlags = bind->iFlags | HBQT_BIT_OWNER; else - bind->iFlags = bind->iFlags & ~( HBQT_BIT_OWNER ); + bind->iFlags = bind->iFlags & ~( HBQT_BIT_OWNER ); break; } bind = bind->next; @@ -501,7 +501,7 @@ void hbqt_bindDelSlot( PHB_ITEM pSenderObject, int iSignalid, PHB_ITEM pCode ) { HB_TRACE( HB_TR_DEBUG, ( "hbqt_bindDelSlot( PHB_ITEM pSenderObject, int iSignalid, PHB_ITEM pCode )" ) ); hb_arraySize( pArray, 0 ); - } + } else { void * id = hb_codeblockId( pCode ); @@ -612,7 +612,7 @@ void hbqt_bindDelEvent( PHB_ITEM pSenderObject, int iEventId, PHB_ITEM pCode ) { HB_TRACE( HB_TR_DEBUG, ( "hbqt_bindDelEvent( %i )", iEventId ) ); hb_arraySize( pArray, 0 ); - } + } else { void * id = hb_codeblockId( pCode ); @@ -750,20 +750,14 @@ void hbqt_bindDelChild( PHB_ITEM pObject, PHB_ITEM pChild ) */ HB_FUNC( __HBQT_DESTROY ) { -#if 1 PHB_ITEM pObject = hb_param( 1, HB_IT_OBJECT ); if( pObject == NULL ) pObject = hb_stackSelfItem(); if( pObject ) hbqt_bindDestroyHbObject( pObject ); -#else - PHB_ITEM pObject = hb_param( 1, HB_IT_OBJECT ); - if( pObject ) - hbqt_bindDestroyHbObject( pObject ); -#endif } -HB_FUNC( HBQT_PROMOTEWIDGET2 ) +HB_FUNC( HBQT_PROMOTEWIDGET ) { if( hbqt_par_isDerivedFrom( 1, "QWIDGET" ) && HB_ISCHAR( 2 ) ) { @@ -820,4 +814,3 @@ HB_CALL_ON_STARTUP_END( _hbqt_bind_init_ ) #define HB_DATASEG_BODY HB_DATASEG_FUNC( _hbqt_bind_init_ ) #include "hbiniseg.h" #endif - diff --git a/harbour/contrib/hbqt/qtcore/hbqt_hbqevents.cpp b/harbour/contrib/hbqt/qtcore/hbqt_hbqevents.cpp index 86d0519455..6e81fa0a52 100644 --- a/harbour/contrib/hbqt/qtcore/hbqt_hbqevents.cpp +++ b/harbour/contrib/hbqt/qtcore/hbqt_hbqevents.cpp @@ -84,7 +84,7 @@ static QList s_lstCreateObj; void hbqt_events_register_createobj( QEvent::Type eventtype, QByteArray szCreateObj ) -{ +{ int iIndex = s_lstEvent.indexOf( eventtype ); if( iIndex == -1 ) @@ -122,7 +122,7 @@ HBQEvents::~HBQEvents() int HBQEvents::hbConnect( PHB_ITEM pObj, int event, PHB_ITEM bBlock ) { HB_TRACE( HB_TR_DEBUG, ( "HBQEvents::hbConnect( %i )", event ) ); - + int nResult = -1; if( hb_itemType( bBlock ) & HB_IT_BLOCK ) @@ -133,14 +133,14 @@ int HBQEvents::hbConnect( PHB_ITEM pObj, int event, PHB_ITEM bBlock ) hbqt_bindAddEvent( pObj, event, bBlock ); nResult = 0; } - } + } return nResult; } int HBQEvents::hbDisconnect( PHB_ITEM pObj, int event ) { HB_TRACE( HB_TR_DEBUG, ( "HBQEvents::hbDisconnect( %i )", event ) ); - + int nResult = -1; QObject * object = ( QObject * ) hbqt_get_ptr( pObj ); @@ -148,7 +148,7 @@ int HBQEvents::hbDisconnect( PHB_ITEM pObj, int event ) { hbqt_bindDelEvent( pObj, event, NULL ); nResult = 0; - } + } return nResult; } @@ -162,23 +162,23 @@ bool HBQEvents::eventFilter( QObject * object, QEvent * event ) if( ( int ) eventtype > 0 ) { int eventId = s_lstEvent.indexOf( eventtype ); - + if( eventId > -1 && hb_vmRequestReenter() ) { - PHB_ITEM pArray = hbqt_bindGetEvents( hbqt_bindGetHbObjectBYqtObject( object ), eventtype ); + PHB_ITEM pArray = hbqt_bindGetEvents( hbqt_bindGetHbObjectByQtObject( object ), eventtype ); if( pArray ) { PHB_ITEM pItem = hbqt_bindGetHbObject( NULL, ( void * ) event, ( s_lstCreateObj.at( eventId ) ), NULL, HBQT_BIT_NONE ); stopTheEventChain = ( bool ) hb_itemGetL( hb_vmEvalBlockV( hb_arrayGetItemPtr( pArray, 1 ), 1, pItem ) ); hb_itemRelease( pItem ); hb_itemRelease( pArray ); - } + } hb_vmRequestRestore(); - } + } if( eventtype == QEvent::Close ) { return true; - } + } } } return stopTheEventChain; diff --git a/harbour/contrib/hbqt/qtcore/hbqt_hbqslots.cpp b/harbour/contrib/hbqt/qtcore/hbqt_hbqslots.cpp index 31f0ba2aa1..71501b30a6 100644 --- a/harbour/contrib/hbqt/qtcore/hbqt_hbqslots.cpp +++ b/harbour/contrib/hbqt/qtcore/hbqt_hbqslots.cpp @@ -121,7 +121,7 @@ HBQSlots::~HBQSlots() int HBQSlots::hbConnect( PHB_ITEM pObj, char * pszSignal, PHB_ITEM bBlock ) { HB_TRACE( HB_TR_DEBUG, ( "HBQSlots::hbConnect( %s )", pszSignal ) ); - + int nResult = 1; if( true ) @@ -150,14 +150,14 @@ int HBQSlots::hbConnect( PHB_ITEM pObj, char * pszSignal, PHB_ITEM bBlock ) nResult = 0; listBlock << NULL; - + char szSlotName[ 20 ]; hb_snprintf( szSlotName, sizeof( szSlotName ), "SLOT_%d", slotId ); object->setProperty( szSlotName, ( int ) listBlock.size() ); object->setProperty( pszSignal, ( int ) listBlock.size() ); - HB_TRACE( HB_TR_DEBUG, ( "HBQSlots::hbConnect( %s ) signalId=%i, %p", pszSignal, signalId, object ) ); + HB_TRACE( HB_TR_DEBUG, ( "HBQSlots::hbConnect( %s ) signalId=%i, %p", pszSignal, signalId, object ) ); hbqt_bindAddSlot( pObj, signalId, bBlock ); } else @@ -188,9 +188,9 @@ int HBQSlots::hbConnect( PHB_ITEM pObj, char * pszSignal, PHB_ITEM bBlock ) int HBQSlots::hbDisconnect( PHB_ITEM pObj, char * pszSignal ) { HB_TRACE( HB_TR_DEBUG, ( "HBQSlots::hbDisconnect( %s )", pszSignal ) ); - + int nResult = 1; - + QObject * object = ( QObject * ) hbqt_get_ptr( pObj ); if( object ) { @@ -207,9 +207,9 @@ int HBQSlots::hbDisconnect( PHB_ITEM pObj, char * pszSignal ) { if( QMetaObject::disconnect( object, signalId, 0, 0 ) ) { - HB_TRACE( HB_TR_DEBUG, ( "HBQSlots::hbDisconnect( %s ) %i", pszSignal, i ) ); + HB_TRACE( HB_TR_DEBUG, ( "HBQSlots::hbDisconnect( %s ) %i", pszSignal, i ) ); nResult = 0; - } + } else nResult = 5; } @@ -217,10 +217,10 @@ int HBQSlots::hbDisconnect( PHB_ITEM pObj, char * pszSignal ) nResult = 4; if( nResult == 0 ) - { - HB_TRACE( HB_TR_DEBUG, ( "HBQSlots::hbDisConnect( %s ) signalId=%i, %p", pszSignal, signalId, object ) ); + { + HB_TRACE( HB_TR_DEBUG, ( "HBQSlots::hbDisConnect( %s ) signalId=%i, %p", pszSignal, signalId, object ) ); hbqt_bindDelSlot( pObj, signalId, NULL ); - } + } } else nResult = 3; @@ -291,13 +291,13 @@ int HBQSlots::qt_metacall( QMetaObject::Call c, int id, void ** arguments ) if( hb_vmRequestReenter() ) { - PHB_ITEM p = hbqt_bindGetSlots( hbqt_bindGetHbObjectBYqtObject( object ), id ); + PHB_ITEM p = hbqt_bindGetSlots( hbqt_bindGetHbObjectByQtObject( object ), id ); if( p ) { if( parameterCount == 0 ) { hb_evalBlock0( hb_arrayGetItemPtr( p, 1 ) ); - } + } else { int paramId = s_argCombinations.indexOf( paramString ); @@ -306,7 +306,7 @@ int HBQSlots::qt_metacall( QMetaObject::Call c, int id, void ** arguments ) { pCallback( ( PHB_ITEM * ) hb_arrayGetItemPtr( p, 1 ), arguments, pList ); } - } + } hb_itemRelease( p ); } hb_vmRequestRestore(); diff --git a/harbour/contrib/hbqt/qtcore/hbqt_misc.prg b/harbour/contrib/hbqt/qtcore/hbqt_misc.prg index 83bec9f60e..54efe08897 100644 --- a/harbour/contrib/hbqt/qtcore/hbqt_misc.prg +++ b/harbour/contrib/hbqt/qtcore/hbqt_misc.prg @@ -60,20 +60,22 @@ CREATE CLASS HbQtObjectHandler - VAR __pSlots PROTECTED - VAR __pEvents PROTECTED + /* QUESTION: _three_ different lists for events? two for slots? Is this needed? */ - VAR hEvents INIT {=>} + VAR __pSlots PROTECTED + VAR __pEvents PROTECTED - VAR __Slots - VAR __Events + VAR __hEvents PROTECTED INIT { => } + + VAR __Slots PROTECTED + VAR __Events PROTECTED METHOD connect( cnEvent, bBlock ) METHOD disconnect( cnEvent ) METHOD setSlots() METHOD setEvents() - - DESTRUCTOR _destroy() + + DESTRUCTOR __destroy() ERROR HANDLER onError() ENDCLASS @@ -85,20 +87,20 @@ METHOD HbQtObjectHandler:setSlots() IF empty( ::__Slots ) ::__Slots := {=>} hb_hDefault( ::__Slots, {} ) - ENDIF - - RETURN Self + ENDIF + + RETURN Self /*----------------------------------------------------------------------*/ - + METHOD HbQtObjectHandler:setEvents() IF empty( ::__Events ) - ::__Events := {=>} + ::__Events := { => } hb_hDefault( ::__Events, {} ) - ENDIF - - RETURN Self + ENDIF + + RETURN Self /*----------------------------------------------------------------------*/ @@ -140,13 +142,13 @@ METHOD HbQtObjectHandler:connect( cnEvent, bBlock ) RETURN .f. ENDIF - IF hb_hHasKey( ::hEvents, cnEvent ) - IF HB_ISNUMERIC( ::hEvents[ cnEvent ] ) + IF hb_hHasKey( ::__hEvents, cnEvent ) + IF HB_ISNUMERIC( ::__hEvents[ cnEvent ] ) ::__pEvents:hbDisconnect( Self, cnEvent ) ELSE ::__pSlots:hbDisconnect( Self, cnEvent ) ENDIF - hb_hDel( ::hEvents, cnEvent ) + hb_hDel( ::__hEvents, cnEvent ) ENDIF SWITCH ValType( cnEvent ) @@ -158,7 +160,7 @@ METHOD HbQtObjectHandler:connect( cnEvent, bBlock ) SWITCH nResult CASE 0 - ::hEvents[ cnEvent ] := cnEvent + ::__hEvents[ cnEvent ] := cnEvent RETURN .T. CASE 8 /* QT connect call failure */ RETURN .F. @@ -181,7 +183,7 @@ METHOD HbQtObjectHandler:connect( cnEvent, bBlock ) SWITCH nResult CASE 0 - ::hEvents[ cnEvent ] := cnEvent + ::__hEvents[ cnEvent ] := cnEvent RETURN .T. CASE -3 /* bBlock not supplied */ RETURN .F. @@ -206,7 +208,7 @@ METHOD HbQtObjectHandler:disconnect( cnEvent ) RETURN .f. ENDIF - IF ! hb_hHasKey( ::hEvents, cnEvent ) + IF ! hb_hHasKey( ::__hEvents, cnEvent ) RETURN .f. ENDIF @@ -220,7 +222,7 @@ METHOD HbQtObjectHandler:disconnect( cnEvent ) CASE 0 CASE 4 /* signal not found in object */ CASE 5 /* disconnect failure */ - hb_hDel( ::hEvents, cnEvent ) + hb_hDel( ::__hEvents, cnEvent ) RETURN .T. CASE 1 /* wrong slot container, no connect was called yet */ CASE 2 /* object has been already freed */ @@ -236,7 +238,7 @@ METHOD HbQtObjectHandler:disconnect( cnEvent ) SWITCH nResult CASE 0 - hb_hDel( ::hEvents, cnEvent ) + hb_hDel( ::__hEvents, cnEvent ) RETURN .T. CASE -3 /* event not found */ CASE -2 /* event not found */ @@ -255,34 +257,12 @@ METHOD HbQtObjectHandler:disconnect( cnEvent ) /*----------------------------------------------------------------------*/ -METHOD HbQtObjectHandler:_destroy() +METHOD HbQtObjectHandler:__destroy() + + HB_TRACE( HB_TR_DEBUG, " __destroy()", __objDerivedFrom( Self, "QOBJECT" ), __objGetClsName( Self ) ) - HB_TRACE( HB_TR_DEBUG, " _destroy()", __objDerivedFrom( Self, "QOBJECT" ), __objGetClsName( Self ) ) - __hbqt_destroy( Self ) -#if 0 - IF ! __objDerivedFrom( Self, "QOBJECT" ) - RETURN NIL - ENDIF - IF empty( ::__pSlots ) .AND. empty( ::__pEvents ) - RETURN NIL - ENDIF - - FOR EACH cnEvent IN ::hEvents - IF HB_ISNUMERIC( cnEvent ) .AND. ! empty( ::__pEvents ) - ::__pEvents:hbDisconnect( Self, cnEvent ) - ELSEIF HB_ISSTRING( cnEvent ) .AND. ! empty( ::__pSlots ) - ::__pSlots:hbDisconnect( Self, cnEvent ) - ENDIF - NEXT - - ::hEvents := NIL - - ::__pSlots := NIL - ::__pEvents := NIL -#endif RETURN NIL /*----------------------------------------------------------------------*/ - diff --git a/harbour/contrib/hbqt/qtcore/hbqt_pointer.cpp b/harbour/contrib/hbqt/qtcore/hbqt_pointer.cpp index ac475b587f..b91017f8cb 100644 --- a/harbour/contrib/hbqt/qtcore/hbqt_pointer.cpp +++ b/harbour/contrib/hbqt/qtcore/hbqt_pointer.cpp @@ -91,21 +91,11 @@ void hbqt_par_detach_ptrGC( int iParam ) HB_TRACE( HB_TR_DEBUG, ( "hbqt_par_detach_ptrGC( %d )", iParam ) ); if( HB_ISOBJECT( iParam ) ) { - hbqt_bindSetOwner( hbqt_bindGetQtObject( hb_param( iParam, HB_IT_OBJECT ) ), HB_FALSE ); - } -} - -HB_FUNC( __HBQT_ISPOINTER ) -{ - PHB_ITEM pObject = hb_stackSelfItem(); - if( pObject == NULL ) - pObject = hb_param( 1, HB_IT_OBJECT ); - if( pObject ) - hb_retl( ! ( hbqt_bindGetQtObject( pObject ) == NULL ) ); - else - hb_retl( HB_FALSE ); + hbqt_bindSetOwner( hbqt_bindGetQtObject( hb_param( iParam, HB_IT_OBJECT ) ), HB_FALSE ); + } } +/* TODO: Delete this. */ HB_FUNC( HBQT_ISEQUAL ) { hb_retl( hbqt_par_ptr( 1 ) == hbqt_par_ptr( 2 ) ); @@ -123,7 +113,7 @@ HB_FUNC( __HBQT_SETUTF8 ) if( cdp ) { hb_vmSetCDP( cdp ); - } + } } PHB_ITEM hbqt_defineClassBegin( const char * pszClsName, PHB_ITEM s_oClass, const char * pszParentClsStr ) diff --git a/harbour/contrib/hbqt/qtcore/hbqtcore.hbx b/harbour/contrib/hbqt/qtcore/hbqtcore.hbx index b74a51adf9..94e5f52a75 100644 --- a/harbour/contrib/hbqt/qtcore/hbqtcore.hbx +++ b/harbour/contrib/hbqt/qtcore/hbqtcore.hbx @@ -169,8 +169,6 @@ DYNAMIC QVERSION DYNAMIC __HBQTCORE DYNAMIC __HBQT_DESTROY DYNAMIC __HBQT_ERROR -DYNAMIC __HBQT_ISPOINTER -DYNAMIC __HBQT_PTR DYNAMIC __HBQT_SETUTF8 #if defined( __HBEXTREQ__ ) .OR. defined( __HBEXTERN__HBQTCORE__REQUEST )