diff options
-rw-r--r-- | korganizer/calendarview.cpp | 13 | ||||
-rw-r--r-- | korganizer/incidencechanger.cpp | 13 | ||||
-rw-r--r-- | libkcal/resourcecached.cpp | 4 |
3 files changed, 23 insertions, 7 deletions
diff --git a/korganizer/calendarview.cpp b/korganizer/calendarview.cpp index 340c6dab7..ae4a5b6e2 100644 --- a/korganizer/calendarview.cpp +++ b/korganizer/calendarview.cpp @@ -832,6 +832,7 @@ void CalendarView::updateView() void CalendarView::updateUnmanagedViews() { mDateNavigator->updateDayMatrix(); + updateView(); } int CalendarView::msgItemDelete( Incidence *incidence ) @@ -2062,7 +2063,15 @@ void CalendarView::deleteIncidence(Incidence *incidence, bool force) Incidence *oldIncidence = incidence->clone(); if (incidence->recurrence()->startDate() == itemDate) { // Moving the first in a series...don't bother with the nonstandard exclusion list - incidence->recurrence()->setStartDateTime( incidence->recurrence()->getNextDateTime( incidence->recurrence()->startDateTime() ) ); + Recurrence *recur = incidence->recurrence(); + Event* thisevent = static_cast<Event*>(incidence); + QDateTime newEnd; + QDateTime newRecurEnd; + newRecurEnd = recur->endDateTime(); + newEnd.setTime_t( incidence->dtEnd().toTime_t() + ( recur->getNextDateTime( recur->startDateTime() ).toTime_t() - recur->startDateTime().toTime_t() ) ); + thisevent->setDtEnd( newEnd ); + incidence->setDtStart( recur->getNextDateTime( recur->startDateTime() ) ); + recur->setEndDateTime(newRecurEnd); } else { // No choice but to use the exclusion list @@ -2094,6 +2103,8 @@ void CalendarView::deleteIncidence(Incidence *incidence, bool force) processIncidenceSelection( 0 ); } } + + updateView(); } void CalendarView::connectIncidenceEditor( KOIncidenceEditor *editor ) diff --git a/korganizer/incidencechanger.cpp b/korganizer/incidencechanger.cpp index 92332578c..46be25ba7 100644 --- a/korganizer/incidencechanger.cpp +++ b/korganizer/incidencechanger.cpp @@ -118,8 +118,8 @@ kdDebug(5850)<<"IncidenceChanger::deleteIncidence for incidence \""<<incidence-> scheduler.performTransaction( tmp, Scheduler::Reply ); } } - emit incidenceDeleted( incidence ); } + emit incidenceDeleted( incidence ); return doDelete; } @@ -298,14 +298,15 @@ kdDebug(5850)<<"IncidenceChanger::changeIncidence for incidence \""<<newinc->sum KCal::Scheduler::Request, newinc, false, statusChanged ) ) { // Accept the event changes - if ( action<0 ) { - emit incidenceChanged( oldinc, newinc ); - } else { - emit incidenceChanged( oldinc, newinc, action ); - } revert = false; } + if ( action<0 ) { + emit incidenceChanged( oldinc, newinc ); + } else { + emit incidenceChanged( oldinc, newinc, action ); + } + if ( revert ) { assignIncidence( newinc, oldinc ); return false; diff --git a/libkcal/resourcecached.cpp b/libkcal/resourcecached.cpp index 22fa79bb9..2fecbb50f 100644 --- a/libkcal/resourcecached.cpp +++ b/libkcal/resourcecached.cpp @@ -19,6 +19,10 @@ Boston, MA 02110-1301, USA. */ +// TODO [FIXME] IMPORTANT +// If a cached resource initiates a reload while an event editor is active, or an event is locked for editing, +// a big fat crash will ensue. The reload subroutine must ABORT if ANY korganizer events are locked for editing!!! + #include <tqdatastream.h> #include <tqdatetime.h> #include <tqfile.h> |