Skip to content

Commit 2b2da5d

Browse files
committedDec 10, 2012
Transfer ownership of widgets to C++ when pushed to the QgsMessageBar
1 parent 05746de commit 2b2da5d

File tree

2 files changed

+10
-2
lines changed

2 files changed

+10
-2
lines changed
 

‎python/gui/qgsmessagebar.sip

+1-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ class QgsMessageBar: QFrame
1313
* @param widget widget to add
1414
* @param level is 0 for information, 1 for warning, 2 for critical
1515
*/
16-
void pushWidget( QWidget *widget, int level = 0 );
16+
void pushWidget( QWidget *widget /Transfer/, int level = 0 );
1717

1818
/*! remove the passed widget from the bar (if previously added),
1919
* then display the next one in the stack if any or hide the bar

‎src/gui/qgsmessagebar.cpp

+9-1
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,11 @@ void QgsMessageBar::popItem( QgsMessageBarItem *item )
9090
{
9191
mLayout->removeWidget( mCurrentItem->widget() );
9292
mCurrentItem->widget()->hide();
93+
if ( mCurrentItem->widget()->parent() == this )
94+
{
95+
delete mCurrentItem->widget();
96+
}
97+
delete mCurrentItem;
9398
mCurrentItem = 0;
9499
}
95100

@@ -126,6 +131,10 @@ bool QgsMessageBar::popWidget( QWidget *widget )
126131
if ( item->widget() == widget )
127132
{
128133
mList.removeOne( item );
134+
if ( item->widget()->parent() == this )
135+
{
136+
delete item->widget();
137+
}
129138
delete item;
130139
return true;
131140
}
@@ -141,7 +150,6 @@ bool QgsMessageBar::popWidget()
141150

142151
QgsMessageBarItem *item = mCurrentItem;
143152
popItem( item );
144-
delete item;
145153

146154
return true;
147155
}

0 commit comments

Comments
 (0)
Please sign in to comment.