author | zecke <zecke> | 2004-09-12 23:02:35 (UTC) |
---|---|---|
committer | zecke <zecke> | 2004-09-12 23:02:35 (UTC) |
commit | 8123b75c55cb5140ae5b0c5aeddb4644a0a8ffbb (patch) (side-by-side diff) | |
tree | 2ada329a539b5143bd732be361b9bcb5e7784ec4 | |
parent | 0f705db7c338e9642294823333e5f4410aa0573f (diff) | |
download | opie-8123b75c55cb5140ae5b0c5aeddb4644a0a8ffbb.zip opie-8123b75c55cb5140ae5b0c5aeddb4644a0a8ffbb.tar.gz opie-8123b75c55cb5140ae5b0c5aeddb4644a0a8ffbb.tar.bz2 |
Remove memory leak
-rw-r--r-- | libopie2/opieui/otabwidget.cpp | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/libopie2/opieui/otabwidget.cpp b/libopie2/opieui/otabwidget.cpp index a9f7da9..d23b1c9 100644 --- a/libopie2/opieui/otabwidget.cpp +++ b/libopie2/opieui/otabwidget.cpp @@ -27,129 +27,132 @@ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include <opie2/otabwidget.h> /* OPIE */ #include <qpe/applnk.h> #include <qpe/config.h> #include <qpe/resource.h> #include <opie2/otabbar.h> /* QT */ #include <qcombobox.h> #include <qwidgetstack.h> using namespace Opie::Ui; OTabWidget::OTabWidget( QWidget *parent, const char *name, TabStyle s, TabPosition p ) : QWidget( parent, name ) { if ( s == Global ) { Config config( "qpe" ); config.setGroup( "Appearance" ); s = ( TabStyle ) config.readNumEntry( "TabStyle", (int) IconTab ); if ( s <= Global || s > IconList) { s = IconTab; } QString pos = config.readEntry( "TabPosition", "Top"); if ( pos == "Bottom" ) { p = Bottom; } else { p = Top; } } widgetStack = new QWidgetStack( this, "widgetstack" ); widgetStack->setFrameStyle( QFrame::NoFrame ); widgetStack->setLineWidth( style().defaultFrameWidth() ); tabBarStack = new QWidgetStack( this, "tabbarstack" ); tabBar = new OTabBar( tabBarStack, "tabbar" ); tabBarStack->addWidget( tabBar, 0 ); connect( tabBar, SIGNAL( selected(int) ), this, SLOT( slotTabBarSelected(int) ) ); tabList = new QComboBox( false, tabBarStack, "tablist" ); tabBarStack->addWidget( tabList, 1 ); connect( tabList, SIGNAL( activated(int) ), this, SLOT( slotTabListSelected(int) ) ); tabBarPosition = p; setTabStyle( s ); setTabPosition( p ); currTab= 0x0; } OTabWidget::~OTabWidget() -{} +{ + tabs.setAutoDelete( true ); + tabs.clear(); +} void OTabWidget::addTab( QWidget *child, const QString &icon, const QString &label ) { QPixmap iconset = loadSmooth( icon ); QTab *tab = new QTab(); if ( tabBarStyle == IconTab ) { tab->label = QString::null; } else { tab->label = label; } if ( tabBarStyle == IconTab || tabBarStyle == IconList ) { tab->iconset = new QIconSet( iconset ); } int tabid = tabBar->addTab( tab ); if ( tabBarStyle == IconTab || tabBarStyle == IconList ) { tabList->insertItem( iconset, label, -1 ); } else { tabList->insertItem( label ); } widgetStack->addWidget( child, tabid ); widgetStack->raiseWidget( child ); widgetStack->setFrameStyle( QFrame::StyledPanel | QFrame::Raised ); OTabInfo *tabinfo = new OTabInfo( tabid, child, icon, label ); tabs.append( tabinfo ); selectTab( tabinfo ); } void OTabWidget::removePage( QWidget *childwidget ) { if ( childwidget ) { OTabInfo *tab = tabs.first(); while ( tab && tab->control() != childwidget ) { tab = tabs.next(); } if ( tab && tab->control() == childwidget ) { tabBar->setTabEnabled( tab->id(), FALSE ); tabBar->removeTab( tabBar->tab( tab->id() ) ); int i = 0; while ( i < tabList->count() && tabList->text( i ) != tab->label() ) { i++; } if ( tabList->text( i ) == tab->label() ) { tabList->removeItem( i ); } widgetStack->removeWidget( childwidget ); tabs.remove( tab ); delete tab; currTab = tabs.current(); |