diff --git a/harbour/ChangeLog b/harbour/ChangeLog index d81b27c338..52e4f03ee8 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -16,6 +16,24 @@ The license applies to all entries newer than 2009-04-28. */ +2012-06-14 00:31 UTC-0800 Pritpal Bedi (bedipritpal@hotmail.com) + * contrib/hbqt/qtcore/hbqt_bind.cpp + + Enabled: by default to clear all items in the global list. + This has fixed GPF on exit under certain situations. + DemoQt.prg is now fully functional even with multiple + dialogs open at once. + + * contrib/hbqt/qtcore/hbqt_hbqevents.cpp + + Added: protection against HVM is active or not. + + * contrib/hbqt/qtgui/hbqt_init.cpp + + * contrib/hbqt/qtgui/qth/QApplication.qth + - Removed: unnecessary code written at early days. + + * contrib/hbxbp/xbplistbox.prg + - Commented out: few signals not being used. + 2012-06-13 21:03 UTC-0800 Pritpal Bedi (bedipritpal@hotmail.com) * contrib/hbqt/tests/dbfbrowser.prg * contrib/hbqt/tests/dbfbrowserclass.prg diff --git a/harbour/contrib/hbqt/qtcore/hbqt_bind.cpp b/harbour/contrib/hbqt/qtcore/hbqt_bind.cpp index 24ffa3f813..5c244f6bcd 100644 --- a/harbour/contrib/hbqt/qtcore/hbqt_bind.cpp +++ b/harbour/contrib/hbqt/qtcore/hbqt_bind.cpp @@ -90,7 +90,7 @@ HBQT_BIND, * PHBQT_BIND; #define HBQT_BIND_LOCK do { #define HBQT_BIND_UNLOCK } while( 0 ); -// #define HBQT_FORCE_RELEASE_GLL +#define HBQT_FORCE_RELEASE_GLL void hbqt_bindDelSlots( PHB_ITEM pSenderObject ); void hbqt_bindDelEvents( PHB_ITEM pSenderObject ); @@ -130,38 +130,36 @@ static void hbqt_bind_exit( void* cargo ) HB_SYMBOL_UNUSED( cargo ); PHBQT_BIND bind; - QList deleteIt; HBQT_BIND_LOCK - bind = s_hbqt_binds; while ( bind ) { - HB_TRACE( HB_TR_DEBUG, ( "Item on GLL %p %s", bind->qtObject, bind->szClassName ) ); + HB_TRACE( HB_TR_DEBUG, ( "Item on GList %p %s", bind->qtObject, bind->szClassName ) ); deleteIt << bind->hbObject; - bind = bind->next; } HBQT_BIND_UNLOCK -#ifdef HBQT_FORCE_RELEASE_GLL +#ifdef HBQT_FORCE_RELEASE_GLL HB_TRACE( HB_TR_DEBUG, ( "onExit before" ) ); while( ! deleteIt.isEmpty() ) { HB_TRACE( HB_TR_DEBUG, ( "onExit check" ) ); - int i = deleteIt.size() - 1; - /* check to see if PHB_ITEM is still in GLL */ - if( hbqt_bindIsHbObject( ( PHB_ITEM ) deleteIt.at( i ) ) ) + + if( hbqt_bindIsHbObject( ( PHB_ITEM ) deleteIt.at( 0 ) ) ) { + hbqt_bindDestroyHbObject( hb_arrayFromId( NULL, deleteIt.at( 0 ) ) ); HB_TRACE( HB_TR_DEBUG, ( "onExit itemRelease" ) ); - hb_itemRelease( ( PHB_ITEM ) deleteIt.at( i ) ); + hb_itemRelease( ( PHB_ITEM ) deleteIt.at( 0 ) ); } - deleteIt.removeAt( i ); + deleteIt.removeAt( 0 ); } HB_TRACE( HB_TR_DEBUG, ( "onExit after" ) ); #endif - HB_TRACE( HB_TR_DEBUG, ( "Exiting with %d items on GLL", __hbqt_bindItemsInGlobalList() ) ); + + HB_TRACE( HB_TR_DEBUG, ( "Exiting with %d items on GList", __hbqt_bindItemsInGlobalList() ) ); } PHB_ITEM hbqt_bindGetHbObject( PHB_ITEM pItem, void * qtObject, const char * szClassName, PHBQT_DEL_FUNC pDelFunc, int iFlags ) @@ -423,6 +421,7 @@ void hbqt_bindDestroyHbObject( PHB_ITEM pObject ) else fDelQtObject = true; } + HB_TRACE( HB_TR_DEBUG, ( "..............HARBOUR_DESTROY_BEGINS( %p, %i ).............. %s", bind->qtObject, bind->iFlags, bind->szClassName ) ); * bind_ptr = bind->next; if( fDelQtObject ) @@ -430,9 +429,14 @@ void hbqt_bindDestroyHbObject( PHB_ITEM pObject ) if( bind->pDelFunc != NULL ) { HB_TRACE( HB_TR_DEBUG, ( ".......HARBOUR_DESTROYING_ACTUAL_QT_OBJECT( %p, %i ).............. %s", bind->qtObject, bind->iFlags, bind->szClassName ) ); - bind->fDeleting = true; - bind->pDelFunc( bind->qtObject, bind->iFlags ); - bind->fDeleting = false; + if( hb_vmRequestReenter() ) + { + bind->fDeleting = true; + bind->pDelFunc( bind->qtObject, bind->iFlags ); + bind->fDeleting = false; + + hb_vmRequestRestore(); + } } } hb_xfree( bind ); @@ -448,27 +452,31 @@ 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 - bind_ptr = &s_hbqt_binds; - while( ( bind = * bind_ptr ) != NULL ) + if( hb_vmRequestReenter() ) { - if( bind->qtObject == qtObject ) - { - HB_TRACE( HB_TR_DEBUG, ( "........................QT_DESTROYING( %p ).....%s ... fDeleting=%s", qtObject, bind->szClassName, bind->fDeleting ? "YES" : "NO" ) ); + PHBQT_BIND * bind_ptr, bind; - * bind_ptr = bind->next; - if( ! bind->fDeleting ) + HBQT_BIND_LOCK + bind_ptr = &s_hbqt_binds; + while( ( bind = * bind_ptr ) != NULL ) + { + if( bind->qtObject == qtObject ) { - hb_xfree( bind ); + 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; } - break; + bind_ptr = &bind->next; } - bind_ptr = &bind->next; + HBQT_BIND_UNLOCK + + hb_vmRequestRestore(); } - HBQT_BIND_UNLOCK } diff --git a/harbour/contrib/hbqt/qtcore/hbqt_hbqevents.cpp b/harbour/contrib/hbqt/qtcore/hbqt_hbqevents.cpp index b3cda455da..4e6e7bc8d5 100644 --- a/harbour/contrib/hbqt/qtcore/hbqt_hbqevents.cpp +++ b/harbour/contrib/hbqt/qtcore/hbqt_hbqevents.cpp @@ -164,30 +164,36 @@ bool HBQEvents::eventFilter( QObject * object, QEvent * event ) { bool stopTheEventChain = false; - if( object ) + if( hb_vmRequestReenter() ) { - QEvent::Type eventtype = event->type(); - if( ( int ) eventtype > 0 ) + if( object ) { - int eventId = s_lstEvent.indexOf( eventtype ); + QEvent::Type eventtype = event->type(); + if( ( int ) eventtype > 0 ) + { + int eventId = s_lstEvent.indexOf( eventtype ); - if( eventId > -1 && hb_vmRequestReenter() ) - { - PHB_ITEM pArray = hbqt_bindGetEvents( hbqt_bindGetHbObjectByQtObject( object ), eventtype ); - if( pArray ) + if( eventId > -1 ) { - 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 ); + PHB_ITEM pArray = hbqt_bindGetEvents( hbqt_bindGetHbObjectByQtObject( object ), eventtype ); + if( pArray ) + { + if( hb_vmRequestQuery() == 0 ) + { + 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 ); + } + } + } + if( eventtype == QEvent::Close ) + { + stopTheEventChain = true; } - hb_vmRequestRestore(); - } - if( eventtype == QEvent::Close ) - { - return true; } } + hb_vmRequestRestore(); } return stopTheEventChain; } diff --git a/harbour/contrib/hbqt/qtgui/hbqt_init.cpp b/harbour/contrib/hbqt/qtgui/hbqt_init.cpp index 0f9f9dd2c8..0684c3ac3c 100644 --- a/harbour/contrib/hbqt/qtgui/hbqt_init.cpp +++ b/harbour/contrib/hbqt/qtgui/hbqt_init.cpp @@ -106,7 +106,7 @@ extern void hbqt_del_QTreeWidgetItem( void * pObj, int iFlags ); extern void hbqt_del_QTableWidgetItem( void * pObj, int iFlags ); extern void hbqt_del_QWidget( void * pObj, int iFlags ); extern void hbqt_del_QRect( void * pObj, int iFlags ); -// +// extern void hbqt_del_QActionEvent( void * pObj, int iFlags ); extern void hbqt_del_QContextMenuEvent( void * pObj, int iFlags ); extern void hbqt_del_QDragEnterEvent( void * pObj, int iFlags ); @@ -146,7 +146,7 @@ static void hbqt_SlotsExecQColor( PHB_ITEM * codeBlock, void ** arguments, QStri hb_vmPushEvalSym(); hb_vmPush( codeBlock ); - PHB_ITEM p0 = hbqt_bindGetHbObject( NULL, new QColor( ( *reinterpret_cast< QColor( * ) >( arguments[ 1 ] ) ) ), "HB_QCOLOR", hbqt_del_QColor, HBQT_BIT_OWNER ); + PHB_ITEM p0 = hbqt_bindGetHbObject( NULL, new QColor( ( *reinterpret_cast< QColor( * ) >( arguments[ 1 ] ) ) ), "HB_QCOLOR", hbqt_del_QColor, HBQT_BIT_OWNER ); hb_vmPush( p0 ); hb_vmSend( 1 ); hb_itemRelease( p0 ); @@ -158,7 +158,7 @@ static void hbqt_SlotsExecItemSelItemSel( PHB_ITEM * codeBlock, void ** argument hb_vmPushEvalSym(); hb_vmPush( codeBlock ); - PHB_ITEM p0 = hbqt_bindGetHbObject( NULL, new QItemSelection( ( *reinterpret_cast< QItemSelection( * ) >( arguments[ 1 ] ) ) ), "HB_QITEMSELECTION", hbqt_del_QObject, HBQT_BIT_OWNER ); + PHB_ITEM p0 = hbqt_bindGetHbObject( NULL, new QItemSelection( ( *reinterpret_cast< QItemSelection( * ) >( arguments[ 1 ] ) ) ), "HB_QITEMSELECTION", hbqt_del_QObject, HBQT_BIT_OWNER ); PHB_ITEM p1 = hbqt_bindGetHbObject( NULL, new QItemSelection( ( *reinterpret_cast< QItemSelection( * ) >( arguments[ 2 ] ) ) ), "HB_QITEMSELECTION", hbqt_del_QObject, HBQT_BIT_OWNER ) ; hb_vmPush( p0 ); hb_vmPush( p1 ); @@ -185,7 +185,7 @@ static void hbqt_SlotsExecQFont( PHB_ITEM * codeBlock, void ** arguments, QStrin hb_vmPushEvalSym(); hb_vmPush( codeBlock ); - PHB_ITEM p0 = hbqt_bindGetHbObject( NULL, new QFont( ( *reinterpret_cast< QFont( * ) >( arguments[ 1 ] ) ) ), "HB_QFONT", hbqt_del_QFont, HBQT_BIT_OWNER ); + PHB_ITEM p0 = hbqt_bindGetHbObject( NULL, new QFont( ( *reinterpret_cast< QFont( * ) >( arguments[ 1 ] ) ) ), "HB_QFONT", hbqt_del_QFont, HBQT_BIT_OWNER ); hb_vmPush( p0 ); hb_vmSend( 1 ); hb_itemRelease( p0 ); @@ -209,7 +209,7 @@ static void hbqt_SlotsExecQTextBlock( PHB_ITEM * codeBlock, void ** arguments, Q hb_vmPushEvalSym(); hb_vmPush( codeBlock ); - PHB_ITEM p0 = hbqt_bindGetHbObject( NULL, new QTextBlock( ( *reinterpret_cast< QTextBlock( * ) >( arguments[ 1 ] ) ) ), "HB_QTEXTBLOCK", hbqt_del_QTextBlock, HBQT_BIT_OWNER ); + PHB_ITEM p0 = hbqt_bindGetHbObject( NULL, new QTextBlock( ( *reinterpret_cast< QTextBlock( * ) >( arguments[ 1 ] ) ) ), "HB_QTEXTBLOCK", hbqt_del_QTextBlock, HBQT_BIT_OWNER ); hb_vmPush( p0 ); hb_vmSend( 1 ); hb_itemRelease( p0 ); @@ -221,7 +221,7 @@ static void hbqt_SlotsExecQAbstractButton( PHB_ITEM * codeBlock, void ** argumen hb_vmPushEvalSym(); hb_vmPush( codeBlock ); - PHB_ITEM p0 = hbqt_bindGetHbObject( NULL, new QWidget( ( QAbstractButton * ) ( arguments[ 1 ] ) ), "HB_QABSTRACTBUTTON", hbqt_del_QWidget, HBQT_BIT_OWNER | HBQT_BIT_QOBJECT ); + PHB_ITEM p0 = hbqt_bindGetHbObject( NULL, new QWidget( ( QAbstractButton * ) ( arguments[ 1 ] ) ), "HB_QABSTRACTBUTTON", hbqt_del_QWidget, HBQT_BIT_OWNER | HBQT_BIT_QOBJECT ); hb_vmPush( p0 ); hb_vmSend( 1 ); hb_itemRelease( p0 ); @@ -233,7 +233,7 @@ static void hbqt_SlotsExecQAction( PHB_ITEM * codeBlock, void ** arguments, QStr hb_vmPushEvalSym(); hb_vmPush( codeBlock ); - PHB_ITEM p0 = hbqt_bindGetHbObject( NULL, new QAction( ( QAction * ) ( arguments[ 1 ] ) ), "HB_QACTION", hbqt_del_QAction, HBQT_BIT_OWNER | HBQT_BIT_QOBJECT ); + PHB_ITEM p0 = hbqt_bindGetHbObject( NULL, new QAction( ( QAction * ) ( arguments[ 1 ] ) ), "HB_QACTION", hbqt_del_QAction, HBQT_BIT_OWNER | HBQT_BIT_QOBJECT ); hb_vmPush( p0 ); hb_vmSend( 1 ); hb_itemRelease( p0 ); @@ -257,7 +257,7 @@ static void hbqt_SlotsExecQTreeWidgetItem( PHB_ITEM * codeBlock, void ** argumen hb_vmPushEvalSym(); hb_vmPush( codeBlock ); - PHB_ITEM p0 = hbqt_bindGetHbObject( NULL, *reinterpret_cast< void*( * ) >( arguments[ 1 ] ) , "HB_QTREEWIDGETITEM", NULL, HBQT_BIT_NONE ); + PHB_ITEM p0 = hbqt_bindGetHbObject( NULL, *reinterpret_cast< void*( * ) >( arguments[ 1 ] ) , "HB_QTREEWIDGETITEM", NULL, HBQT_BIT_NONE ); hb_vmPush( p0 ); hb_vmSend( 1 ); hb_itemRelease( p0 ); @@ -269,7 +269,7 @@ static void hbqt_SlotsExecQTreeWidgetItemInt( PHB_ITEM * codeBlock, void ** argu hb_vmPushEvalSym(); hb_vmPush( codeBlock ); - PHB_ITEM p0 = hbqt_bindGetHbObject( NULL, *reinterpret_cast< void*( * ) >( arguments[ 1 ] ) , "HB_QTREEWIDGETITEM", NULL, HBQT_BIT_NONE ); + PHB_ITEM p0 = hbqt_bindGetHbObject( NULL, *reinterpret_cast< void*( * ) >( arguments[ 1 ] ) , "HB_QTREEWIDGETITEM", NULL, HBQT_BIT_NONE ); hb_vmPush( p0 ); hb_vmPushInteger( *reinterpret_cast< int( * ) >( arguments[ 2 ] ) ); hb_vmSend( 2 ); @@ -282,7 +282,7 @@ static void hbqt_SlotsExecQPrinter( PHB_ITEM * codeBlock, void ** arguments, QSt hb_vmPushEvalSym(); hb_vmPush( codeBlock ); - PHB_ITEM p0 = hbqt_bindGetHbObject( NULL, *reinterpret_cast< void*( * ) >( arguments[ 1 ] ) , "HB_QPRINTER", NULL, HBQT_BIT_NONE ); + PHB_ITEM p0 = hbqt_bindGetHbObject( NULL, *reinterpret_cast< void*( * ) >( arguments[ 1 ] ) , "HB_QPRINTER", NULL, HBQT_BIT_NONE ); hb_vmPush( p0 ); hb_vmSend( 1 ); hb_itemRelease( p0 ); @@ -294,7 +294,7 @@ static void hbqt_SlotsExecQStandardItem( PHB_ITEM * codeBlock, void ** arguments hb_vmPushEvalSym(); hb_vmPush( codeBlock ); - PHB_ITEM p0 = hbqt_bindGetHbObject( NULL, *reinterpret_cast< void*( * ) >( arguments[ 1 ] ) , "HB_QSTANDARDITEM", NULL, HBQT_BIT_NONE ); + PHB_ITEM p0 = hbqt_bindGetHbObject( NULL, *reinterpret_cast< void*( * ) >( arguments[ 1 ] ) , "HB_QSTANDARDITEM", NULL, HBQT_BIT_NONE ); hb_vmPush( p0 ); hb_vmSend( 1 ); hb_itemRelease( p0 ); @@ -306,7 +306,7 @@ static void hbqt_SlotsExecQListWidgetItem( PHB_ITEM * codeBlock, void ** argumen hb_vmPushEvalSym(); hb_vmPush( codeBlock ); - PHB_ITEM p0 = hbqt_bindGetHbObject( NULL, *reinterpret_cast< void*( * ) >( arguments[ 1 ] ) , "HB_QLISTWIDGETITEM", NULL, HBQT_BIT_NONE ); + PHB_ITEM p0 = hbqt_bindGetHbObject( NULL, *reinterpret_cast< void*( * ) >( arguments[ 1 ] ) , "HB_QLISTWIDGETITEM", NULL, HBQT_BIT_NONE ); hb_vmPush( p0 ); hb_vmSend( 1 ); hb_itemRelease( p0 ); @@ -318,8 +318,8 @@ static void hbqt_SlotsExecQListWidgetItemQListWidgetItem( PHB_ITEM * codeBlock, hb_vmPushEvalSym(); hb_vmPush( codeBlock ); - PHB_ITEM p0 = hbqt_bindGetHbObject( NULL, *reinterpret_cast< void*( * ) >( arguments[ 1 ] ) , "HB_QLISTWIDGETITEM", NULL, HBQT_BIT_NONE ); - PHB_ITEM p1 = hbqt_bindGetHbObject( NULL, *reinterpret_cast< void*( * ) >( arguments[ 2 ] ) , "HB_QLISTWIDGETITEM", NULL, HBQT_BIT_NONE ); + PHB_ITEM p0 = hbqt_bindGetHbObject( NULL, *reinterpret_cast< void*( * ) >( arguments[ 1 ] ) , "HB_QLISTWIDGETITEM", NULL, HBQT_BIT_NONE ); + PHB_ITEM p1 = hbqt_bindGetHbObject( NULL, *reinterpret_cast< void*( * ) >( arguments[ 2 ] ) , "HB_QLISTWIDGETITEM", NULL, HBQT_BIT_NONE ); hb_vmPush( p0 ); hb_vmPush( p1 ); hb_vmSend( 2 ); @@ -333,7 +333,7 @@ static void hbqt_SlotsExecQTableWidgetItem( PHB_ITEM * codeBlock, void ** argume hb_vmPushEvalSym(); hb_vmPush( codeBlock ); - PHB_ITEM p0 = hbqt_bindGetHbObject( NULL, *reinterpret_cast< void*( * ) >( arguments[ 1 ] ) , "HB_QTABLEWIDGETITEM", NULL, HBQT_BIT_NONE ); + PHB_ITEM p0 = hbqt_bindGetHbObject( NULL, *reinterpret_cast< void*( * ) >( arguments[ 1 ] ) , "HB_QTABLEWIDGETITEM", NULL, HBQT_BIT_NONE ); hb_vmPush( p0 ); hb_vmSend( 1 ); hb_itemRelease( p0 ); @@ -345,8 +345,8 @@ static void hbqt_SlotsExecQTableWidgetItemQTableWidgetItem( PHB_ITEM * codeBlock hb_vmPushEvalSym(); hb_vmPush( codeBlock ); - PHB_ITEM p0 = hbqt_bindGetHbObject( NULL, *reinterpret_cast< void*( * ) >( arguments[ 1 ] ) , "HB_QTABLEWIDGETITEM", NULL, HBQT_BIT_NONE ); - PHB_ITEM p1 = hbqt_bindGetHbObject( NULL, *reinterpret_cast< void*( * ) >( arguments[ 2 ] ) , "HB_QTABLEWIDGETITEM", NULL, HBQT_BIT_NONE ); + PHB_ITEM p0 = hbqt_bindGetHbObject( NULL, *reinterpret_cast< void*( * ) >( arguments[ 1 ] ) , "HB_QTABLEWIDGETITEM", NULL, HBQT_BIT_NONE ); + PHB_ITEM p1 = hbqt_bindGetHbObject( NULL, *reinterpret_cast< void*( * ) >( arguments[ 2 ] ) , "HB_QTABLEWIDGETITEM", NULL, HBQT_BIT_NONE ); hb_vmPush( p0 ); hb_vmPush( p1 ); hb_vmSend( 2 ); @@ -360,7 +360,7 @@ static void hbqt_SlotsExecQTreeWidgetItemQTreeWidgetItem( PHB_ITEM * codeBlock, hb_vmPushEvalSym(); hb_vmPush( codeBlock ); - PHB_ITEM p0 = hbqt_bindGetHbObject( NULL, *reinterpret_cast< void*( * ) >( arguments[ 1 ] ) , "HB_QTREEWIDGETITEM", NULL, HBQT_BIT_NONE ); + PHB_ITEM p0 = hbqt_bindGetHbObject( NULL, *reinterpret_cast< void*( * ) >( arguments[ 1 ] ) , "HB_QTREEWIDGETITEM", NULL, HBQT_BIT_NONE ); PHB_ITEM p1 = hbqt_bindGetHbObject( NULL, *reinterpret_cast< void*( * ) >( arguments[ 2 ] ) , "HB_QTREEWIDGETITEM", NULL, HBQT_BIT_NONE ); hb_vmPush( p0 ); hb_vmPush( p1 ); @@ -375,7 +375,7 @@ static void hbqt_SlotsExecQWidget( PHB_ITEM * codeBlock, void ** arguments, QStr hb_vmPushEvalSym(); hb_vmPush( codeBlock ); - PHB_ITEM p0 = hbqt_bindGetHbObject( NULL, *reinterpret_cast< void*( * ) >( arguments[ 1 ] ) , "HB_QWIDGET", NULL, HBQT_BIT_QOBJECT ); + PHB_ITEM p0 = hbqt_bindGetHbObject( NULL, *reinterpret_cast< void*( * ) >( arguments[ 1 ] ) , "HB_QWIDGET", NULL, HBQT_BIT_QOBJECT ); hb_vmPush( p0 ); hb_vmSend( 1 ); hb_itemRelease( p0 ); @@ -387,7 +387,7 @@ static void hbqt_SlotsExecQWidgetQWidget( PHB_ITEM * codeBlock, void ** argument hb_vmPushEvalSym(); hb_vmPush( codeBlock ); - PHB_ITEM p0 = hbqt_bindGetHbObject( NULL, *reinterpret_cast< void*( * ) >( arguments[ 1 ] ) , "HB_QWIDGET", NULL, HBQT_BIT_QOBJECT ); + PHB_ITEM p0 = hbqt_bindGetHbObject( NULL, *reinterpret_cast< void*( * ) >( arguments[ 1 ] ) , "HB_QWIDGET", NULL, HBQT_BIT_QOBJECT ); PHB_ITEM p1 = hbqt_bindGetHbObject( NULL, *reinterpret_cast< void*( * ) >( arguments[ 2 ] ) , "HB_QWIDGET", NULL, HBQT_BIT_QOBJECT ); hb_vmPush( p0 ); hb_vmPush( p1 ); @@ -402,7 +402,7 @@ static void hbqt_SlotsExecQWidgetInt( PHB_ITEM * codeBlock, void ** arguments, Q hb_vmPushEvalSym(); hb_vmPush( codeBlock ); - PHB_ITEM p0 = hbqt_bindGetHbObject( NULL, *reinterpret_cast< void*( * ) >( arguments[ 1 ] ) , "HB_QWIDGET", NULL, HBQT_BIT_QOBJECT ); + PHB_ITEM p0 = hbqt_bindGetHbObject( NULL, *reinterpret_cast< void*( * ) >( arguments[ 1 ] ) , "HB_QWIDGET", NULL, HBQT_BIT_QOBJECT ); hb_vmPush( p0 ); hb_vmPushInteger( *reinterpret_cast< int( * ) >( arguments[ 2 ] ) ); hb_vmSend( 2 ); @@ -414,7 +414,7 @@ static void hbqt_SlotsExecQRectInt( PHB_ITEM * codeBlock, void ** arguments, QSt Q_UNUSED( pList ); hb_vmPushEvalSym(); hb_vmPush( codeBlock ); - PHB_ITEM p0 = hbqt_bindGetHbObject( NULL, new QRect( ( *reinterpret_cast< QRect( * ) >( arguments[ 1 ] ) ) ), "HB_QRECT", hbqt_del_QRect, HBQT_BIT_OWNER ); + PHB_ITEM p0 = hbqt_bindGetHbObject( NULL, new QRect( ( *reinterpret_cast< QRect( * ) >( arguments[ 1 ] ) ) ), "HB_QRECT", hbqt_del_QRect, HBQT_BIT_OWNER ); hb_vmPush( p0 ); hb_vmPushInteger( *reinterpret_cast< int( * ) >( arguments[ 2 ] ) ); hb_vmSend( 2 ); @@ -712,6 +712,7 @@ static void hbqt_lib_exit( void * cargo ) HB_SYMBOL_UNUSED( cargo ); fIsQuitting = HB_TRUE; s_app->exit( 0 ); + delete s_app; } HB_FUNC( HBQT_ISACTIVEAPPLICATION ) diff --git a/harbour/contrib/hbqt/qtgui/qth/QApplication.qth b/harbour/contrib/hbqt/qtgui/qth/QApplication.qth index 9d16706948..ce7130ea34 100644 --- a/harbour/contrib/hbqt/qtgui/qth/QApplication.qth +++ b/harbour/contrib/hbqt/qtgui/qth/QApplication.qth @@ -43,19 +43,8 @@ HB_EXTERN_END HB_FUNC( QT_QAPPLICATION ) { - //__HB_RETPTRGC__( ( QApplication * ) __hbqtgui_app() ); hb_itemReturnRelease( hbqt_bindGetHbObject( NULL, ( void * ) __hbqtgui_app(), "HB_QAPPLICATION", NULL, HBQT_BIT_QOBJECT ) ); } - -HB_FUNC( QT_QAPPLICATION_EXECUTE ) -{ - hb_retni( __hbqtgui_app()->exec() ); -} - -HB_FUNC( QT_QAPPLICATION_QUIT ) -{ - __hbqtgui_app()->quit(); -} diff --git a/harbour/contrib/hbxbp/xbplistbox.prg b/harbour/contrib/hbxbp/xbplistbox.prg index 06e6f83e68..0aec377b00 100644 --- a/harbour/contrib/hbxbp/xbplistbox.prg +++ b/harbour/contrib/hbxbp/xbplistbox.prg @@ -192,41 +192,39 @@ METHOD XbpListBox:create( oParent, oOwner, aPos, aSize, aPresParams, lVisible ) METHOD XbpListBox:connect() -// ::oWidget:connect( QEvent_ContextMenu, {|e| ::grabEvent( QEvent_ContextMenu, e ) } ) - - ::oWidget:connect( "currentItemChanged(QListWidgetItem*,QListWidgetItem*)", {|p,p1| ::execSlot( "currentItemChanged(QListWidgetItem*,QListWidgetItem*)", p, p1 ) } ) ::oWidget:connect( "currentRowChanged(int)" , {|p,p1| ::execSlot( "currentRowChanged(int)" , p, p1 ) } ) - ::oWidget:connect( "currentTextChanged(QString)" , {|p,p1| ::execSlot( "currentTextChanged(QString)" , p, p1 ) } ) - ::oWidget:connect( "itemActivated(QListWidgetItem*)" , {|p,p1| ::execSlot( "itemActivated(QListWidgetItem*)" , p, p1 ) } ) - ::oWidget:connect( "itemChanged(QListWidgetItem*)" , {|p,p1| ::execSlot( "itemChanged(QListWidgetItem*)" , p, p1 ) } ) ::oWidget:connect( "itemClicked(QListWidgetItem*)" , {|p,p1| ::execSlot( "itemClicked(QListWidgetItem*)" , p, p1 ) } ) ::oWidget:connect( "itemDoubleClicked(QListWidgetItem*)" , {|p,p1| ::execSlot( "itemDoubleClicked(QListWidgetItem*)" , p, p1 ) } ) ::oWidget:connect( "itemEntered(QListWidgetItem*)" , {|p,p1| ::execSlot( "itemEntered(QListWidgetItem*)" , p, p1 ) } ) + ::oWidget:connect( "customContextMenuRequested(QPoint)" , {|p1 | ::execSlot( "customContextMenuRequested(QPoint)" , p1 ) } ) +/* + ::oWidget:connect( "currentItemChanged(QListWidgetItem*,QListWidgetItem*)", {|p,p1| ::execSlot( "currentItemChanged(QListWidgetItem*,QListWidgetItem*)", p, p1 ) } ) + ::oWidget:connect( "currentTextChanged(QString)" , {|p,p1| ::execSlot( "currentTextChanged(QString)" , p, p1 ) } ) + ::oWidget:connect( "itemActivated(QListWidgetItem*)" , {|p,p1| ::execSlot( "itemActivated(QListWidgetItem*)" , p, p1 ) } ) + ::oWidget:connect( "itemChanged(QListWidgetItem*)" , {|p,p1| ::execSlot( "itemChanged(QListWidgetItem*)" , p, p1 ) } ) ::oWidget:connect( "itemPressed(QListWidgetItem*)" , {|p,p1| ::execSlot( "itemPressed(QListWidgetItem*)" , p, p1 ) } ) ::oWidget:connect( "itemSelectionChanged()" , {|p,p1| ::execSlot( "itemSelectionChanged()" , p, p1 ) } ) - - ::oWidget:connect( "customContextMenuRequested(QPoint)" , {|p1 | ::execSlot( "customContextMenuRequested(QPoint)" , p1 ) } ) - +*/ RETURN Self /*----------------------------------------------------------------------*/ METHOD XbpListBox:disConnect() -// ::oWidget:disconnect( QEvent_ContextMenu ) - - ::oWidget:disConnect( "currentItemChanged(QListWidgetItem*,QListWidgetItem*)" ) ::oWidget:disConnect( "currentRowChanged(int)" ) - ::oWidget:disConnect( "currentTextChanged(QString)" ) - ::oWidget:disConnect( "itemActivated(QListWidgetItem*)" ) - ::oWidget:disConnect( "itemChanged(QListWidgetItem*)" ) ::oWidget:disConnect( "itemClicked(QListWidgetItem*)" ) ::oWidget:disConnect( "itemDoubleClicked(QListWidgetItem*)" ) ::oWidget:disConnect( "itemEntered(QListWidgetItem*)" ) + ::oWidget:disconnect( "customContextMenuRequested(QPoint)" ) + +/* + ::oWidget:disConnect( "currentItemChanged(QListWidgetItem*,QListWidgetItem*)" ) + ::oWidget:disConnect( "currentTextChanged(QString)" ) + ::oWidget:disConnect( "itemActivated(QListWidgetItem*)" ) + ::oWidget:disConnect( "itemChanged(QListWidgetItem*)" ) ::oWidget:disConnect( "itemPressed(QListWidgetItem*)" ) ::oWidget:disConnect( "itemSelectionChanged()" ) - - ::oWidget:disconnect( "customContextMenuRequested(QPoint)" ) +*/ RETURN Self @@ -257,6 +255,7 @@ METHOD XbpListBox:getItemIndex( pItm ) METHOD XbpListBox:execSlot( cSlot, p ) LOCAL qPos, qItm, nIndex, n, qPt + HB_TRACE( HB_TR_ALWAYS, "MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM" ) IF cSlot == "customContextMenuRequested(QPoint)" IF HB_ISBLOCK( ::hb_contextMenu ) @@ -285,8 +284,11 @@ METHOD XbpListBox:execSlot( cSlot, p ) ::nCurSelected := p + 1 EXIT CASE "itemClicked(QListWidgetItem*)" + HB_TRACE( HB_TR_ALWAYS, "MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM" ) ::toggleSelected( nIndex ) + HB_TRACE( HB_TR_ALWAYS, "MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM" ) ::itemMarked() + HB_TRACE( HB_TR_ALWAYS, "MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM" ) EXIT CASE "itemDoubleClicked(QListWidgetItem*)" ::itemSelected()