From f8c683f700a3fff30540ff343df2bfba15080e86 Mon Sep 17 00:00:00 2001 From: Tannin Date: Thu, 20 Jun 2013 21:55:37 +0200 Subject: - some fixes for qt5 compatibility - hook.dll no longer creates a dump and uninstalls it if an exception is reported that doesn't originate from it - NCC used read-only transactions again because otherwise solid archives become unusably slow. - removed the integrated nexus browser - the mod description and motd are now rendered in QTextBrowser. This (and the above) eliminates the dependency on qtwebkit - removed the direct file download for mod files - reduced CPU usage during downloads by invalidating only one column of the download list. This widget still needs to be replaced - added the complete filename as an option for the modname - applications that require elevation can now be started by invoking an elevated secondary ModOrganizer instance - MO will now register nexus file servers and provides a settings dialog to pick preferred servers. (This preference is not used yet) - worked around 1-2 bugs in QSortFilterProxy - handling of nxm links is now done by an external application. This allows the registration of different applications depending on the game - integrated fomod installer now displays the screenshot in a scalable view - bugfix: integrated fomod installer didn't name output files correctly if the name differs from the source name - bugfix: a successful login to nexus was (sometimes?) not correctly detected as a success - bugfix: top-level entries in QtGroupingProxy were sometimes incorrectly displayed as groups - bugfix: GetPrivateProfile... optimization could cause null-pointer indirection - bugfix: GetCurrentWorkingDirectory caused buffer overflow in case of pre-flighting (buffer size 0) - bugfix: configurator plugin now also uses qt5 (it's currently broken though) --- src/qtgroupingproxy.cpp | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) (limited to 'src/qtgroupingproxy.cpp') diff --git a/src/qtgroupingproxy.cpp b/src/qtgroupingproxy.cpp index 3891cc12..f62d45d3 100644 --- a/src/qtgroupingproxy.cpp +++ b/src/qtgroupingproxy.cpp @@ -183,7 +183,7 @@ QtGroupingProxy::buildTree() for (auto iter = m_groupHash.begin(); iter != m_groupHash.end(); ++iter) { if ((iter.key() == quint32max) || - (iter->count() == 1)) { + (iter->count() < 2)) { temp[quint32max].append(iter.value()); if (iter.key() != quint32max) { rmgroups.push_back(iter.key()); @@ -194,15 +194,15 @@ QtGroupingProxy::buildTree() } m_groupHash = temp; - // second loop is necessary because qt containers can't be iterated from end to - // removing by index from begin to end is ugly - for (auto iter = rmgroups.rbegin(); iter != rmgroups.rend(); ++iter) { + // second loop is necessary because qt containers can't be iterated from end to front + // and removing by index from begin to end is ugly + std::sort(rmgroups.begin(), rmgroups.end(), [] (int lhs, int rhs) { return rhs < lhs; }); + for (auto iter = rmgroups.begin(); iter != rmgroups.end(); ++iter) { m_groupMaps.removeAt(*iter); } } endResetModel(); - // restore expand-state for( int row = 0; row < rowCount(); row++ ) { QModelIndex idx = index( row, 0, QModelIndex() ); @@ -215,6 +215,8 @@ QtGroupingProxy::buildTree() QList QtGroupingProxy::addSourceRow( const QModelIndex &idx ) { + // TODO: modeltest reports a discrepance between the "rowAboutToBeInserted" and "rowInserted" events + QList updatedGroups; QList groupData = belongsTo( idx ); @@ -624,8 +626,9 @@ QModelIndex QtGroupingProxy::mapToSource( const QModelIndex &index ) const { //qDebug() << "mapToSource: " << index; - if( !index.isValid() ) + if( !index.isValid() ) { return m_rootNode; + } if( isGroup( index ) ) { @@ -856,8 +859,9 @@ QtGroupingProxy::removeGroup( const QModelIndex &idx ) bool QtGroupingProxy::hasChildren( const QModelIndex &parent ) const { - if( !parent.isValid() ) + if( !parent.isValid() ) { return true; + } if( isGroup( parent ) ) { return !m_groupHash.value( parent.row() ).isEmpty(); -- cgit v1.3.1