summaryrefslogtreecommitdiffabout
authorzautrix <zautrix>2005-08-06 09:54:42 (UTC)
committer zautrix <zautrix>2005-08-06 09:54:42 (UTC)
commitb841f4f2d54ac531c1f9ec88852d31307b9145f2 (patch) (side-by-side diff)
treec334106e75e73bbc3fc33cd3c0d6480314a42774
parentcd215c243d0636cabbc73006652b9b6783319de1 (diff)
downloadkdepimpi-b841f4f2d54ac531c1f9ec88852d31307b9145f2.zip
kdepimpi-b841f4f2d54ac531c1f9ec88852d31307b9145f2.tar.gz
kdepimpi-b841f4f2d54ac531c1f9ec88852d31307b9145f2.tar.bz2
fixes
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--bin/kdepim/WhatsNew.txt4
-rw-r--r--korganizer/kotodoview.cpp46
-rw-r--r--korganizer/kotodoview.h2
3 files changed, 34 insertions, 18 deletions
diff --git a/bin/kdepim/WhatsNew.txt b/bin/kdepim/WhatsNew.txt
index f4b3ddb..201f863 100644
--- a/bin/kdepim/WhatsNew.txt
+++ b/bin/kdepim/WhatsNew.txt
@@ -1,10 +1,12 @@
Info about the changes in new versions of KDE-Pim/Pi
********** VERSION 2.1.19 ************
-Fixed a crash in journal view and a crash in setting a todo to stopped when KO/Pi saved the file when "stop todo" dialog was shown.
+Fixed a crash in journal view.
+Fixed a crash at setting a todo to stopped if KO/Pi saved the file while "stop todo" dialog was shown.
Fixed a minor problem with the marcus bains line (whatever that is).
+Fixed a crash when setting a todo to complete from the show dialog which was called from the What's Next View.
********** VERSION 2.1.18 ************
Pi-Sync mode:
diff --git a/korganizer/kotodoview.cpp b/korganizer/kotodoview.cpp
index 00c2d97..27d755e 100644
--- a/korganizer/kotodoview.cpp
+++ b/korganizer/kotodoview.cpp
@@ -501,9 +501,10 @@ void KOQuickTodo::focusOutEvent(QFocusEvent *ev)
/////////////////////////////////////////////////////////////////////////////
KOTodoView::KOTodoView(Calendar *calendar,QWidget* parent,const char* name) :
KOrg::BaseView(calendar,parent,name)
-{
+{
+ mActiveItem = 0;
mCategoryPopupMenu = 0;
mPendingUpdateBeforeRepaint = false;
isFlatDisplay = false;
mNavigator = 0;
@@ -806,30 +807,40 @@ void KOTodoView::paintEvent(QPaintEvent * pevent)
}
KOrg::BaseView::paintEvent( pevent);
}
+void KOTodoView::clearList( bool saveCurrentItem ) // default true
+{
+ if ( mTodoListView->childCount() ) {
+ if ( saveCurrentItem )
+ storeCurrentItem();
+ mTodoListView->clear();
+ mTodoMap.clear();
+ }
+}
void KOTodoView::updateView()
{
+ mActiveItem = 0;
pendingSubtodo = 0;
if ( mBlockUpdate ) {
return;
}
if ( !isVisible() ) {
- mPendingUpdateBeforeRepaint = true;
- return;
+ clearList ();
+ mPendingUpdateBeforeRepaint = true;
+ return;
}
//qDebug("KOTodoView::updateView() %x", this);
if ( isFlatDisplay ) {
displayAllFlat();
return;
}
- storeCurrentItem();
//qDebug("update ");
// kdDebug() << "KOTodoView::updateView()" << endl;
QFont fo = KOPrefs::instance()->mTodoViewFont;
-
- mTodoListView->clear();
+ clearList ();
+
if ( mName == "todolistsmall" ) {
if ( KOPrefs::instance()->mTodoViewUsesSmallFont ) {
int ps = fo.pointSize() -2;
if ( ps > 12 )
@@ -863,9 +874,8 @@ void KOTodoView::updateView()
// Put for each Event a KOTodoViewItem in the list view. Don't rely on a
// specific order of events. That means that we have to generate parent items
// recursively for proper hierarchical display of Todos.
- mTodoMap.clear();
Todo *todo;
todo = todoList.first();// todo; todo = todoList.next()) {
while ( todo ) {
bool next = true;
@@ -973,9 +983,10 @@ void KOTodoView::resetCurrentItem()
}
}
}
processSelectionChange();
- QTimer::singleShot( 100, this, SLOT ( resetFocusToList() ));
+ if ( mName != "todolistsmall" )
+ QTimer::singleShot( 100, this, SLOT ( resetFocusToList() ));
}
void KOTodoView::resetFocusToList()
{
topLevelWidget()->setActiveWindow();
@@ -1099,14 +1110,16 @@ void KOTodoView::printPreview(CalPrinter *calPrinter, const QDate &fd,
}
void KOTodoView::editItem(QListViewItem *item )
{
- emit editTodoSignal(((KOTodoViewItem *)item)->todo());
+ if ( item )
+ emit editTodoSignal(((KOTodoViewItem *)item)->todo());
}
void KOTodoView::showItem(QListViewItem *item,const QPoint &,int)
{
- emit showTodoSignal(((KOTodoViewItem *)item)->todo());
+ if ( item )
+ emit showTodoSignal(((KOTodoViewItem *)item)->todo());
}
void KOTodoView::popupMenu(QListViewItem *item,const QPoint &p,int column)
{
@@ -1356,9 +1369,9 @@ void KOTodoView::toggleRunningItem()
int yy = (QApplication::desktop()->height()-hei)/2;
tp.setGeometry( xx,yy,wid,hei );
}
tp.exec();
- updateTodo ( t, 0 );
+ updateTodo ( t, KOGlobals::EVENTEDITED );
} else {
KOStartTodoPrefs tp ( t->summary(), this );
if (QApplication::desktop()->width() <= 800 ){
int wid = tp.width();
@@ -1373,9 +1386,9 @@ void KOTodoView::toggleRunningItem()
t->setRunning( true );
updateView();
} else {
t->setRunning( true );
- updateTodo ( t, 0 );
+ updateTodo ( t, KOGlobals::EVENTEDITED );
}
}
}
@@ -1504,18 +1517,18 @@ void KOTodoView::setOpen( QListViewItem* item, bool setOpenI)
}
void KOTodoView::displayAllFlat()
{
- storeCurrentItem();
+
+ mActiveItem = 0;
pendingSubtodo = 0;
if ( mBlockUpdate ) {
return;
}
+ clearList ();
mPopupMenu->setItemChecked( 8,true );
isFlatDisplay = true;
QPtrList<Todo> todoList = calendar()->todos();
- mTodoMap.clear();
- mTodoListView->clear();
Todo *todo;
for(todo = todoList.first(); todo; todo = todoList.next()) {
if ( checkTodo( todo ) ) {
KOTodoViewItem *todoItem = new KOTodoViewItem(mTodoListView,todo,this);
@@ -1695,11 +1708,12 @@ void KOTodoView::keyPressEvent ( QKeyEvent * e )
e->accept();
}
}
}
+
void KOTodoView::updateTodo( Todo * t, int type )
{
- if ( mBlockUpdate)
+ if ( mBlockUpdate )
return;
QMap<Todo *,KOTodoViewItem *>::ConstIterator itemIterator;
itemIterator = mTodoMap.find(t);
diff --git a/korganizer/kotodoview.h b/korganizer/kotodoview.h
index a8e90e2..9180015 100644
--- a/korganizer/kotodoview.h
+++ b/korganizer/kotodoview.h
@@ -173,9 +173,9 @@ class KOTodoView : public KOrg::BaseView
void saveLayout(KConfig *config, const QString &group) const;
void restoreLayout(KConfig *config, const QString &group);
void setNavigator( DateNavigator* nav ) {mNavigator = nav;}
QString getWhatsThisText(QPoint p);
- void clearList() {mTodoListView->clear(); }
+ void clearList( bool saveCurrentItem = true );
public slots:
void updateView();
void updateConfig();