ListBoxItemDrag::ListBoxItemDrag( ListBoxItemList & items, bool sendPtr, QListBox * parent, const char * name ) : QStoredDrag( "qt/listboxitem", parent, name ) { // ### FIX! QByteArray data( sizeof( Q_INT32 ) + sizeof( QListBoxItem ) * items.count() ); QDataStream stream( data, IO_WriteOnly ); stream << items.count(); stream << (Q_UINT8) sendPtr; // just transfer item pointer; omit data QListBoxItem * i = items.first(); if ( sendPtr ) { while ( i ) { stream << (unsigned long) i; //###FIX: demands sizeof(ulong) >= sizeof(void*) i = items.next(); } } else { while ( i ) { Q_UINT8 b = 0; b = (Q_UINT8) ( i->text() != QString::null ); // does item have text ? stream << b; if ( b ) { stream << i->text(); } b = (Q_UINT8) ( !!i->pixmap() ); // does item have a pixmap ? stream << b; if ( b ) { stream << ( *i->pixmap() ); } stream << (Q_UINT8) i->isSelectable(); i = items.next(); } } setEncodedData( data ); }