[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    branches/kdepim/enterprise/kdepim/korganizer
From:       Sergio Luis Martins <iamsergio () gmail ! com>
Date:       2010-12-13 0:25:43
Message-ID: 20101213002543.E8BF9AC8A7 () svn ! kde ! org
[Download RAW message or body]

SVN commit 1205912 by smartins:

Be careful when deleting attendees (while expanding), we're still waiting for signals \
that will affect the item we deleted.

Fixes kolab/issue4660

 M  +1 -1      freebusymanager.cpp  
 M  +15 -4     koattendeeeditor.cpp  


--- branches/kdepim/enterprise/kdepim/korganizer/freebusymanager.cpp #1205911:1205912
@@ -580,7 +580,7 @@
 KCal::FreeBusy *FreeBusyManager::iCalToFreeBusy( const QCString &data )
 {
   kdDebug(5850) << "FreeBusyManager::iCalToFreeBusy()" << endl;
-  kdDebug(5850) << data << endl;
+  //kdDebug(5850) << data << endl;
 
   QString freeBusyVCal = QString::fromUtf8( data );
   KCal::FreeBusy *fb = mFormat.parseFreeBusy( freeBusyVCal );
--- branches/kdepim/enterprise/kdepim/korganizer/koattendeeeditor.cpp \
#1205911:1205912 @@ -377,16 +377,27 @@
 
 void KOAttendeeEditor::expandAttendee()
 {
+  /* When return is pressed mNameEdit emits returnPressed() and then a textChanged() \
signal. +   * The textChanged() signal triggers the updateAttendee() slot to be \
called which will +   * change the wrong Attendee, because after expandAttendee() is \
executed, the currentItem() +   * will be some other Attendee.
+   * That's why we delay this call with a singleShot
+   * */
+  if ( sender() != mNameEdit ) {
   KABC::Addressee::List aList = expandDistList( mNameEdit->text() );
+    KCal::Attendee *current = currentAttendee();
   if ( !aList.isEmpty() ) {
-    int index = selectedIndex();
     for ( KABC::Addressee::List::iterator itr = aList.begin(); itr != aList.end(); \
++itr ) {  insertAttendeeFromAddressee( (*itr) );
     }
-    setSelected( index );
-    removeAttendee( currentAttendee() );
+      removeAttendee( current );
+      setSelected( 0 );
   }
+  } else {
+    // delay this call.
+    QTimer::singleShot( 0, this, SLOT(expandAttendee()) );
 }
+}
 
 void KOAttendeeEditor::updateAttendee()
 {
@@ -409,7 +420,7 @@
     email = mNameEdit->text();
   }
 
-  bool iAmTheOrganizer = mOrganizerCombo &&
+  const bool iAmTheOrganizer = mOrganizerCombo &&
     KOPrefs::instance()->thatIsMe( mOrganizerCombo->currentText() );
   if ( iAmTheOrganizer ) {
     bool myself =


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic