[prev in list] [next in list] [prev in thread] [next in thread] 

List:       koffice
Subject:    patch: kpresenter
From:       Simon Hausmann <sh () caldera ! de>
Date:       2000-08-28 8:24:15
[Download RAW message or body]

Hi,

The attached patch fixes a bunch of obvious memory leaks (like now all
QPopupMenus get deleted, finally ;-) , and in addition upon document
destruction the KPresenter objects get now destroyed, too (this used to be
not the case and it crashed konqueror quite beautifully when embedding,
because it left a few mapped widgets in the global qt widget mapper, which
lead to dead pointers and a marvelous segfault when closing konqueror ;-)

Thanks for reviewing :-)

Bye,
 Simon

["kpresenter_patch.txt" (TEXT/PLAIN)]

Index: kpobject.cc
===================================================================
RCS file: /home/kde/koffice/kpresenter/kpobject.cc,v
retrieving revision 1.27
diff -b -u -p -r1.27 kpobject.cc
--- kpobject.cc	2000/08/26 09:53:37	1.27
+++ kpobject.cc	2000/08/28 08:21:10
@@ -67,6 +67,10 @@ KPObject::KPObject()
     dcop = 0;
 }
 
+KPObject::~KPObject()
+{
+}
+
 /*================================================================*/
 KPObject &KPObject::operator=( const KPObject & )
 {
Index: kpobject.h
===================================================================
RCS file: /home/kde/koffice/kpresenter/kpobject.h,v
retrieving revision 1.18
diff -b -u -p -r1.18 kpobject.h
--- kpobject.h	2000/08/26 09:53:37	1.18
+++ kpobject.h	2000/08/28 08:21:10
@@ -46,6 +46,7 @@ class KPObject
 {
 public:
     KPObject();
+    virtual ~KPObject();
 
     KPObject &operator=( const KPObject & );
 
Index: kpresenter_doc.cc
===================================================================
RCS file: /home/kde/koffice/kpresenter/kpresenter_doc.cc,v
retrieving revision 1.234
diff -b -u -p -r1.234 kpresenter_doc.cc
--- kpresenter_doc.cc	2000/08/26 18:14:56	1.234
+++ kpresenter_doc.cc	2000/08/28 08:21:11
@@ -295,9 +295,12 @@ KPresenterDoc::~KPresenterDoc()
     delete _header;
     delete _footer;
 
+    _objectList->setAutoDelete( true );
     _objectList->clear();
     delete _objectList;
     _backgroundList.clear();
+
+    delete fCollection;
 }
 
 /*======================== draw contents as QPicture =============*/
Index: kpresenter_view.cc
===================================================================
RCS file: /home/kde/koffice/kpresenter/kpresenter_view.cc,v
retrieving revision 1.274
diff -b -u -p -r1.274 kpresenter_view.cc
--- kpresenter_view.cc	2000/08/25 10:29:34	1.274
+++ kpresenter_view.cc	2000/08/28 08:21:11
@@ -189,6 +189,9 @@ KPresenterView::~KPresenterView()
 {
     // ######### Reggie: Why that ?
 //    page->setToolEditMode( TEM_MOUSE );
+    delete rb_oalign;
+    delete rb_lbegin;
+    delete rb_lend;
     delete dcop;
 }
 
@@ -2531,11 +2534,16 @@ void KPresenterView::doAutomaticScreenPr
     screenStop();
 }
 
-void KPresenterView::updateReadWrite( bool /*readwrite*/ )
+void KPresenterView::updateReadWrite( bool readwrite )
 {
 #ifdef __GNUC__
 #warning TODO
 #endif
+    QValueList<KAction *> actions = actionCollection()->actions();
+    QValueList<KAction *>::ConstIterator aIt = actions.begin();
+    QValueList<KAction *>::ConstIterator aEnd = actions.end();
+    for (; aIt != aEnd; ++aIt )
+        (*aIt)->setEnabled( readwrite );
 }
 
 /*========================= change undo =========================*/
Index: kpresenter_view.h
===================================================================
RCS file: /home/kde/koffice/kpresenter/kpresenter_view.h,v
retrieving revision 1.103
diff -b -u -p -r1.103 kpresenter_view.h
--- kpresenter_view.h	2000/07/17 00:27:55	1.103
+++ kpresenter_view.h	2000/08/28 08:21:11
@@ -234,7 +234,7 @@ public:
     unsigned int getCurrPgNum();
 
     // return pointer to document
-    class KPresenterDoc *kPresenterDoc() {return m_pKPresenterDoc; }
+    class KPresenterDoc *kPresenterDoc() const {return m_pKPresenterDoc; }
 
     // repaint page
     void repaint( bool );
Index: page.cc
===================================================================
RCS file: /home/kde/koffice/kpresenter/page.cc,v
retrieving revision 1.176
diff -b -u -p -r1.176 page.cc
--- page.cc	2000/08/24 18:37:53	1.176
+++ page.cc	2000/08/28 08:21:12
@@ -70,6 +70,24 @@ Page::Page( QWidget *parent, const char 
 {
     setWFlags( WResizeNoErase );
 
+    alignMenu1 = 0;
+    alignMenu2 = 0;
+    alignMenu3 = 0;
+    alignMenu4 = 0;
+    alignMenu5 = 0;
+    alignMenu6 = 0;
+    alignMenu7 = 0;
+    graphMenu = 0;
+    partMenu = 0;
+    rectMenu = 0;
+    pieMenu = 0;
+    picResizeMenu = 0;
+    picMenu = 0;
+    clipMenu = 0;
+    txtMenu = 0;
+    presMenu = 0;
+    pageMenu = 0;
+
     if ( parent ) {
         mousePressed = false;
         modType = MT_NONE;
@@ -130,6 +148,24 @@ Page::~Page()
             return;
         }
     }
+
+    delete alignMenu1;
+    delete alignMenu2;
+    delete alignMenu3;
+    delete alignMenu4;
+    delete alignMenu5;
+    delete alignMenu6;
+    delete alignMenu7;
+    delete graphMenu;
+    delete partMenu;
+    delete rectMenu;
+    delete pieMenu;
+    delete picResizeMenu;
+    delete picMenu;
+    delete clipMenu;
+    delete txtMenu;
+    delete presMenu;
+    delete pageMenu;
 }
 
 /*============================ draw contents ====================*/
@@ -1365,7 +1401,7 @@ void Page::setupMenus()
     pieMenu->setMouseTracking( true );
 
     // pic-resize menu
-    QPopupMenu *picResizeMenu = new QPopupMenu();
+    picResizeMenu = new QPopupMenu();
     picResizeMenu->insertItem( i18n( "640x480" ), this, SLOT( picViewOrig640x480() ) );
     picResizeMenu->insertItem( i18n( "800x600" ), this, SLOT( picViewOrig800x600() ) );
     picResizeMenu->insertItem( i18n( "1024x768" ), this, SLOT( picViewOrig1024x768() ) );
Index: page.h
===================================================================
RCS file: /home/kde/koffice/kpresenter/page.h,v
retrieving revision 1.84
diff -b -u -p -r1.84 page.h
--- page.h	2000/08/18 08:47:29	1.84
+++ page.h	2000/08/28 08:21:12
@@ -219,6 +219,7 @@ protected:
     QPopupMenu *graphMenu, *picMenu, *txtMenu, *clipMenu, *presMenu;
     QPopupMenu *alignMenu1, *alignMenu2, *alignMenu3, *alignMenu4, *alignMenu5;
     QPopupMenu *pageMenu, *pieMenu, *rectMenu, *alignMenu6, *partMenu, *alignMenu7;
+    QPopupMenu *picResizeMenu;
     bool mousePressed;
     ModifyType modType;
     unsigned int oldMx, oldMy;


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic