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

List:       kde-commits
Subject:    branches/KDE/3.5/kdepim/kalarm
From:       David Jarvie <software () astrojar ! org ! uk>
Date:       2006-11-30 20:04:23
Message-ID: 1164917063.922916.20881.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 609441 by djarvie:

Bug 138124: fix crash when an alarm triggers while the user is answering the \
confirmation prompt while deleting it. Clearer error message when alarm deletion \
fails.

 M  +12 -9     mainwindow.cpp  


--- branches/KDE/3.5/kdepim/kalarm/mainwindow.cpp #609440:609441
@@ -686,6 +686,14 @@
 void MainWindow::slotDelete()
 {
 	QValueList<EventListViewItemBase*> items = mListView->selectedItems();
+	// Copy the events to be deleted, in case any are deleted by being
+	// triggered while the confirmation prompt is displayed.
+	QValueList<KAEvent> events;
+	for (QValueList<EventListViewItemBase*>::Iterator iit = items.begin();  iit != \
items.end();  ++iit) +	{
+		AlarmListViewItem* item = (AlarmListViewItem*)(*iit);
+		events.append(item->event());
+	}
 	if (Preferences::confirmAlarmDeletion())
 	{
 		int n = items.count();
@@ -700,17 +708,12 @@
 
 	int warnErr = 0;
 	int warnKOrg = 0;
-	QValueList<KAEvent> events;
 	AlarmCalendar::activeCalendar()->startUpdate();    // prevent multiple saves of the \
calendars until we're finished  AlarmCalendar::expiredCalendar()->startUpdate();
-	for (QValueList<EventListViewItemBase*>::Iterator it = items.begin();  it != \
items.end();  ++it) +	for (QValueList<KAEvent>::Iterator it = events.begin();  it != \
events.end();  ++it)  {
-		AlarmListViewItem* item = (AlarmListViewItem*)(*it);
-		KAEvent event = item->event();
-
 		// Delete the event from the calendar and displays
-		events.append(event);
-		switch (KAlarm::deleteEvent(event))
+		switch (KAlarm::deleteEvent(*it))
 		{
 			case KAlarm::UPDATE_ERROR:
 			case KAlarm::UPDATE_FAILED:
@@ -725,12 +728,12 @@
 		}
 	}
 	if (!AlarmCalendar::activeCalendar()->endUpdate())      // save the calendars now
-		warnErr = items.count();
+		warnErr = events.count();
 	AlarmCalendar::expiredCalendar()->endUpdate();
 	Undo::saveDeletes(events);
 
 	if (warnErr)
-		KAlarm::displayUpdateError(this, KAlarm::UPDATE_FAILED, KAlarm::ERR_ADD, warnErr);
+		KAlarm::displayUpdateError(this, KAlarm::UPDATE_FAILED, KAlarm::ERR_DELETE, \
warnErr);  else if (warnKOrg)
 		KAlarm::displayKOrgUpdateError(this, KAlarm::KORG_ERR_DELETE, warnKOrg);
 }


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

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