Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:Evergreen:11.1
kdepim4
r905619.diff
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File r905619.diff of Package kdepim4
Subject: korganizer: fix performance problems with month switching From: wstephenson@suse.de Bug: kde#166771 Patch-upstream: 905619 --- korganizer/views/monthview/monthview.cpp (revision 905618) +++ korganizer/views/monthview/monthview.cpp (revision 905619) @@ -315,14 +315,38 @@ void MonthView::reloadIncidences() if ( ( event = dynamic_cast<Event *>( incidence ) ) ) { offset = event->dtStart().daysTo( event->dtEnd() ); } - for ( QDate d = mStartDate.addDays( -offset ); d <= mEndDate; d = d.addDays( 1 ) ) { - if ( incidence->recursOn( d, timeSpec ) ) { - MonthItem *manager = new IncidenceMonthItem( mScene, incidence, d ); - mScene->mManagerList << manager; - if ( incidenceSelected == incidence ) { - // If there was an item selected before, reselect it. - mScene->selectItem( manager ); + + KDateTime startDateTime( mStartDate.addDays( - offset ), timeSpec ); + KDateTime endDateTime( mEndDate, timeSpec ); + + DateTimeList dateTimeList; + + if ( incidence->recurs() ) { + // Get a list of all dates that the recurring event will happen + dateTimeList = incidence->recurrence()->timesInInterval( startDateTime, endDateTime ); + } else { + KDateTime dateToAdd; + + if ( incidence->type() == "Todo" ) { + Todo *todo = dynamic_cast<Todo *>( incidence ); + if ( todo->hasDueDate() ) { + dateToAdd = todo->dtDue(); } + } else { + dateToAdd = incidence->dtStart(); + } + + if ( dateToAdd >= startDateTime && dateToAdd <= endDateTime ) { + dateTimeList += dateToAdd; + } + } + DateTimeList::iterator t; + for ( t = dateTimeList.begin(); t != dateTimeList.end(); ++t ) { + MonthItem *manager = new IncidenceMonthItem( mScene, incidence, t->date() ); + mScene->mManagerList << manager; + if ( incidenceSelected == incidence ) { + // If there was an item selected before, reselect it. + mScene->selectItem( manager ); } } } Index: korganizer/views/monthview/monthview.cpp ===================================================================
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor