eventhandling (catch segfault on disabling deco by rmb menu), moc vs. local deconstructor

svn path=/trunk/KDE/kdebase/workspace/; revision=1062392
This commit is contained in:
Thomas Lübking 2009-12-14 15:43:26 +00:00
parent 72b50354a0
commit 6f761f2082
2 changed files with 7 additions and 18 deletions

View file

@ -35,16 +35,6 @@ TabstripDecoration::TabstripDecoration( KDecorationBridge *bridge, KDecorationFa
button = Qt::NoButton; button = Qt::NoButton;
} }
TabstripDecoration::~TabstripDecoration()
{
for( int i = 0; i < closeButtons.size(); ++i )
{
TabstripButton *btn = closeButtons.front();
closeButtons.removeFirst();
delete btn;
}
}
KCommonDecorationButton *TabstripDecoration::createButton( ButtonType type ) KCommonDecorationButton *TabstripDecoration::createButton( ButtonType type )
{ {
switch( type ) switch( type )
@ -151,9 +141,9 @@ void TabstripDecoration::paintEvent( QPaintEvent * )
// Delete unneeded tab close buttons // Delete unneeded tab close buttons
while( tabCount < closeButtons.size() || ( tabCount == 1 && closeButtons.size() > 0 )) while( tabCount < closeButtons.size() || ( tabCount == 1 && closeButtons.size() > 0 ))
{ {
TabstripButton *btn = closeButtons.front(); TabstripButton *btn = closeButtons.takeFirst();
closeButtons.removeFirst(); btn->hide();
delete btn; btn->deleteLater();
} }
if( tabCount > 1 ) if( tabCount > 1 )
@ -255,12 +245,12 @@ bool TabstripDecoration::eventFilter( QObject* o, QEvent* e )
else if( e->type() == QEvent::Drop && widget() == o ) else if( e->type() == QEvent::Drop && widget() == o )
state = dropEvent( static_cast< QDropEvent* >( e ) ); state = dropEvent( static_cast< QDropEvent* >( e ) );
if( TabstripButton *btn = dynamic_cast< TabstripButton* >( o ) ) if ( !state && e->type() == QEvent::MouseButtonRelease &&
static_cast<QMouseEvent*>(e)->button() == Qt::LeftButton )
{ {
if( e->type() == QEvent::MouseButtonRelease ) if( TabstripButton *btn = dynamic_cast< TabstripButton* >( o ) )
{ {
if( static_cast<QMouseEvent*>(e)->button() == Qt::LeftButton ) closeClientGroupItem( closeButtons.indexOf( btn ) );
{ closeClientGroupItem( closeButtons.indexOf( btn ) ); }
return true; return true;
} }
} }

View file

@ -33,7 +33,6 @@ class TabstripDecoration : public KCommonDecorationUnstable
{ {
public: public:
TabstripDecoration( KDecorationBridge *bridge, KDecorationFactory *factory ); TabstripDecoration( KDecorationBridge *bridge, KDecorationFactory *factory );
~TabstripDecoration();
KCommonDecorationButton *createButton( ButtonType type ); KCommonDecorationButton *createButton( ButtonType type );
void init(); void init();
QString visibleName() const; QString visibleName() const;