Show
Ignore:
Timestamp:
06/14/08 23:21:57 (6 months ago)
Author:
flynd
Message:

dataChanged signal cannot be sent between beginInsertRow and endInsertRow. Revised signalling when adding and removing users in groups to fix this. This fixes the empty rows sometimes seen first in groups after users have been added.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • trunk/qt4-gui/src/contactlist/contactgroup.cpp

    r6283 r6309  
    133133void ContactGroup::addUser(ContactUser* user, ContactListModel::SubGroupType subGroup) 
    134134{ 
     135  // Signal that we are about to add a row 
     136  emit beginInsert(this, rowCount()); 
     137 
    135138  myUsers.append(user); 
    136139  if (user->visibility()) 
     
    139142  myEvents += user->numEvents(); 
    140143  myBars[subGroup]->updateNumEvents(user->numEvents()); 
     144 
     145  // Signal that we're done adding 
     146  emit endInsert(); 
     147 
     148  // Update group and bar as counters may have changed 
    141149  emit barDataChanged(myBars[subGroup], subGroup); 
    142  
    143150  emit dataChanged(this); 
    144151} 
     
    146153void ContactGroup::removeUser(ContactUser* user, ContactListModel::SubGroupType subGroup) 
    147154{ 
     155  // Signal that we are about to remove a row 
     156  emit beginRemove(this, indexOf(user)); 
     157 
    148158  myUsers.removeAll(user); 
    149159  if (user->visibility()) 
     
    152162  myEvents -= user->numEvents(); 
    153163  myBars[subGroup]->updateNumEvents(-user->numEvents()); 
     164 
     165  // Signal that we're done removing 
     166  emit endRemove(); 
     167 
     168  // Update group and bar as counters may have changed 
    154169  emit barDataChanged(myBars[subGroup], subGroup); 
    155  
    156170  emit dataChanged(this); 
    157171}