[Knode-devel] kdepim/knode
Volker Krause
volker.krause at rwth-aachen.de
Fri Apr 16 18:07:22 CEST 2004
CVS commit by vkrause:
Convert the static member object i_nstances into a static member pointer.
As a static member object it seems to be recreated as soon as a shared object linked against libknodecommon (e.g. a KCM) is loaded.
M +22 -10 knarticlewidget.cpp 1.172
M +2 -1 knarticlewidget.h 1.59
--- kdepim/knode/knarticlewidget.cpp #1.171:1.172
@@ -139,5 +139,5 @@ KNArticleWidget::KNArticleWidget(KAction
emuKMail(false), f_inddialog(0), a_ctions(actColl)
{
- i_nstances.append(this);
+ instances()->append(this);
setNotifyClick( true );
@@ -226,5 +226,9 @@ KNArticleWidget::~KNArticleWidget()
delete a_rticle; //don't leak orphant articles
- i_nstances.removeRef(this);
+ instances()->removeRef(this);
+ if(instances()->count() == 0) {
+ delete i_nstances;
+ i_nstances = 0;
+ }
delete a_tt;
delete a_ttPopup;
@@ -1878,9 +1882,17 @@ void KNArticleWidget::slotVerify()
-QPtrList<KNArticleWidget> KNArticleWidget::i_nstances;
+QPtrList<KNArticleWidget>* KNArticleWidget::i_nstances = 0;
+
+QPtrList<KNArticleWidget>* KNArticleWidget::instances()
+{
+ if(!i_nstances)
+ i_nstances = new QPtrList<KNArticleWidget>();
+ return i_nstances;
+}
+
void KNArticleWidget::configChanged()
{
- for(KNArticleWidget *i=i_nstances.first(); i; i=i_nstances.next())
+ for(KNArticleWidget *i=instances()->first(); i; i=instances()->next())
i->applyConfig();
}
@@ -1889,5 +1901,5 @@ void KNArticleWidget::configChanged()
bool KNArticleWidget::articleVisible(KNArticle *a)
{
- for(KNArticleWidget *i=i_nstances.first(); i; i=i_nstances.next())
+ for(KNArticleWidget *i=instances()->first(); i; i=instances()->next())
if(a==i->article())
return true;
@@ -1898,5 +1910,5 @@ bool KNArticleWidget::articleVisible(KNA
void KNArticleWidget::articleRemoved(KNArticle *a)
{
- for(KNArticleWidget *i=i_nstances.first(); i; i=i_nstances.next())
+ for(KNArticleWidget *i=instances()->first(); i; i=instances()->next())
if(a==i->article())
i->showBlankPage();
@@ -1906,5 +1918,5 @@ void KNArticleWidget::articleRemoved(KNA
void KNArticleWidget::articleChanged(KNArticle *a)
{
- for(KNArticleWidget *i=i_nstances.first(); i; i=i_nstances.next())
+ for(KNArticleWidget *i=instances()->first(); i; i=instances()->next())
if(a==i->article())
i->updateContents();
@@ -1914,5 +1926,5 @@ void KNArticleWidget::articleChanged(KNA
void KNArticleWidget::articleLoadError(KNArticle *a, const QString &error)
{
- for(KNArticleWidget *i=i_nstances.first(); i; i=i_nstances.next())
+ for(KNArticleWidget *i=instances()->first(); i; i=instances()->next())
if(a==i->article())
i->showErrorMessage(error);
@@ -1922,5 +1934,5 @@ void KNArticleWidget::articleLoadError(K
void KNArticleWidget::collectionRemoved(KNArticleCollection *c)
{
- for(KNArticleWidget *i=i_nstances.first(); i; i=i_nstances.next())
+ for(KNArticleWidget *i=instances()->first(); i; i=instances()->next())
if(i->article() && i->article()->collection()==c)
i->showBlankPage();
@@ -1930,5 +1942,5 @@ void KNArticleWidget::collectionRemoved(
void KNArticleWidget::cleanup()
{
- for(KNArticleWidget *i=i_nstances.first(); i; i=i_nstances.next())
+ for(KNArticleWidget *i=instances()->first(); i; i=instances()->next())
i->setArticle(0); //delete orphant articles => avoid crash in destructor
}
--- kdepim/knode/knarticlewidget.h #1.58:1.59
@@ -207,5 +207,6 @@ class KNArticleWidget : public KTextBrow
protected:
- static QPtrList<KNArticleWidget> i_nstances;
+ static QPtrList<KNArticleWidget> *i_nstances;
+ static QPtrList<KNArticleWidget> *instances();
};
More information about the Knode-devel
mailing list