File r893494.diff of Package kdepim4

Subject: korganizer: make paste work on actual selection
From: wstephenson@suse.de
Bug: kde#175814,kde#132863
Patch-upstream: 893494
--- korganizer/views/monthview/monthview.cpp	(revision 893493)
+++ korganizer/views/monthview/monthview.cpp	(revision 893494)
@@ -259,6 +259,25 @@ void MonthView::setStartDate( const QDat
   reloadIncidences();
 }
 
+Incidence::List MonthView::selectedIncidences()
+{
+  Incidence *incidenceSelected = 0;
+  Incidence::List selected;
+
+  if ( mScene->selectedItem() ) {
+    IncidenceMonthItem *tmp = dynamic_cast<IncidenceMonthItem *>( mScene->selectedItem() );
+    if ( tmp ) {
+      incidenceSelected = tmp->incidence();
+
+      if ( incidenceSelected ) {
+        selected.append( incidenceSelected );
+      }
+    }
+  }
+
+  return selected;
+}
+
 void MonthView::reloadIncidences()
 {
   // keep selection if it exists
--- korganizer/views/monthview/monthview.h	(revision 893493)
+++ korganizer/views/monthview/monthview.h	(revision 893494)
@@ -48,8 +48,7 @@ class MonthView : public KOEventView
     ~MonthView();
 
     virtual int currentDateCount();
-    virtual Incidence::List selectedIncidences()
-    { return Incidence::List(); }
+    Incidence::List selectedIncidences();
 
     /** Returns dates of the currently selected events */
     virtual DateList selectedDates();
--- korganizer/calendarview.cpp	(revision 893493)
+++ korganizer/calendarview.cpp	(revision 893494)
@@ -833,7 +833,7 @@ void CalendarView::edit_copy()
 
 void CalendarView::edit_paste()
 {
-// If in agenda view, use the selected time and date from there.
+// If in agenda and month view, use the selected time and date from there.
 // In all other cases, paste the event on the first day of the
 // selection in the day matrix on the left
 
@@ -852,7 +852,14 @@ void CalendarView::edit_paste()
     if ( !aView->selectedIsAllDay() ) {
       time = aView->selectionStart().time();
     }
-  } else {
+  }
+
+  MonthView *mView = mViewManager->monthView();
+  if ( mView && !mView->selectedDates().isEmpty() ) {
+    date = mView->selectedDates().first();
+  }
+
+  if ( !date.isValid() ) {
     date = mNavigator->selectedDates().first();
   }
 
@@ -1786,9 +1793,10 @@ void CalendarView::showLeftFrame( bool s
     mLeftFrame->show();
     emit calendarViewExpanded( false );
   } else {
-    // splitter sizes of mPanner are useless if mLeftFrame is hidden, so remember them before we hide it
-    if ( mMainSplitterSizes.isEmpty() )
+    // mPanner splitter sizes are useless if mLeftFrame is hidden, so remember them beforehand.
+    if ( mMainSplitterSizes.isEmpty() ) {
       mMainSplitterSizes = mPanner->sizes();
+    }
 
     mLeftFrame->hide();
     emit calendarViewExpanded( true );
@@ -2348,7 +2356,7 @@ void CalendarView::moveIncidenceTo( Inci
   delete oldIncidence;
 }
 
-bool CalendarView::eventFilter(QObject * watched, QEvent * event)
+bool CalendarView::eventFilter( QObject *watched, QEvent *event )
 {
   if ( watched == mLeftFrame && event->type() == QEvent::Show ) {
     mSplitterSizesValid = true;
--- korganizer/koviewmanager.h	(revision 893493)
+++ korganizer/koviewmanager.h	(revision 893494)
@@ -89,7 +89,8 @@ class KOViewManager : public QObject
     QDate currentSelectionDate();
 
     KOAgendaView *agendaView() const { return mAgendaView; }
-    KOTodoView   *todoView() const { return mTodoView; }
+    KOTodoView *todoView() const { return mTodoView; }
+    KOrg::MonthView *monthView() const { return mMonthView; }
 
   signals:
     void configChanged();
Index: korganizer/views/monthview/monthview.cpp
===================================================================
Index: korganizer/views/monthview/monthview.h
===================================================================
Index: korganizer/calendarview.cpp
===================================================================
Index: korganizer/koviewmanager.h
===================================================================
openSUSE Build Service is sponsored by