Resolved some Gtk container warnings
This commit is contained in:
parent
8f201b76b7
commit
1ce8a626eb
7 changed files with 54 additions and 20 deletions
|
|
@ -61,6 +61,14 @@ Panel::Panel(workspace::PanelManager &panel_manager,
|
|||
Panel::~Panel()
|
||||
{
|
||||
REQUIRE(dockItem != NULL);
|
||||
|
||||
// Detach the panel bar
|
||||
GdlDockItemGrip *grip = GDL_DOCK_ITEM_GRIP(
|
||||
gdl_dock_item_get_grip(dockItem));
|
||||
gtk_container_remove (GTK_CONTAINER(grip),
|
||||
((Widget&)panelBar).gobj());
|
||||
|
||||
// Unref the dock item
|
||||
g_object_unref(dockItem);
|
||||
dockItem = NULL;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -53,11 +53,11 @@ TimelineWidget::TimelineWidget(
|
|||
verticalScroll(verticalAdjustment),
|
||||
update_tracks_frozen(false)
|
||||
{
|
||||
body = new TimelineBody(*this);
|
||||
body = manage(new TimelineBody(*this));
|
||||
ENSURE(body != NULL);
|
||||
headerContainer = new TimelineHeaderContainer(*this);
|
||||
headerContainer = manage(new TimelineHeaderContainer(*this));
|
||||
ENSURE(headerContainer != NULL);
|
||||
ruler = new TimelineRuler(*this);
|
||||
ruler = manage(new TimelineRuler(*this));
|
||||
ENSURE(ruler != NULL);
|
||||
|
||||
horizontalAdjustment.signal_value_changed().connect( sigc::mem_fun(
|
||||
|
|
@ -82,20 +82,10 @@ TimelineWidget::TimelineWidget(
|
|||
|
||||
TimelineWidget::~TimelineWidget()
|
||||
{
|
||||
trackMap.clear();
|
||||
|
||||
// Destroy child widgets
|
||||
REQUIRE(body != NULL);
|
||||
if(body != NULL)
|
||||
delete body;
|
||||
REQUIRE(headerContainer);
|
||||
headerContainer->clear_headers();
|
||||
|
||||
REQUIRE(headerContainer != NULL);
|
||||
if(headerContainer != NULL)
|
||||
delete headerContainer;
|
||||
|
||||
REQUIRE(ruler != NULL);
|
||||
if(ruler != NULL)
|
||||
delete ruler;
|
||||
trackMap.clear();
|
||||
}
|
||||
|
||||
/* ===== Data Access ===== */
|
||||
|
|
|
|||
|
|
@ -86,6 +86,20 @@ TimelineHeaderContainer::update_headers()
|
|||
ENSURE(widget.get_parent() == this);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
TimelineHeaderContainer::clear_headers()
|
||||
{
|
||||
// Unparent all the headers
|
||||
pair<shared_ptr<model::Track>, shared_ptr<timeline::Track> > pair;
|
||||
BOOST_FOREACH( pair, timelineWidget.trackMap )
|
||||
{
|
||||
REQUIRE(pair.second);
|
||||
Widget &widget = pair.second->get_header_widget();
|
||||
if(widget.get_parent() != NULL) // Is the header unparented?
|
||||
widget.unparent();
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
TimelineHeaderContainer::on_realize()
|
||||
|
|
@ -298,9 +312,19 @@ TimelineHeaderContainer::forall_vfunc(gboolean /* include_internals */,
|
|||
}
|
||||
|
||||
void
|
||||
TimelineHeaderContainer::on_remove(Widget*)
|
||||
TimelineHeaderContainer::on_remove(Widget* widget)
|
||||
{
|
||||
// Do nothing - this is just to keep Gtk::Container happy
|
||||
REQUIRE(widget);
|
||||
|
||||
// Ensure headers are parented correctly
|
||||
pair<shared_ptr<model::Track>, shared_ptr<timeline::Track> > pair;
|
||||
BOOST_FOREACH( pair, timelineWidget.trackMap )
|
||||
{
|
||||
REQUIRE(pair.second);
|
||||
Widget &this_widget = pair.second->get_header_widget();
|
||||
if(&this_widget == widget)
|
||||
this_widget.unparent();
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
|||
|
|
@ -70,6 +70,8 @@ public:
|
|||
* the backend.
|
||||
*/
|
||||
void update_headers();
|
||||
|
||||
void clear_headers();
|
||||
|
||||
/* ===== Overrides ===== */
|
||||
private:
|
||||
|
|
@ -125,7 +127,7 @@ private:
|
|||
* An event handler that is called when a widget is removed from the
|
||||
* container.
|
||||
**/
|
||||
void on_remove(Widget*);
|
||||
void on_remove(Widget* widget);
|
||||
|
||||
/* ===== Events ===== */
|
||||
private:
|
||||
|
|
|
|||
|
|
@ -48,7 +48,7 @@ public:
|
|||
* widget
|
||||
**/
|
||||
TimelineHeaderWidget(timeline::Track &timeline_track);
|
||||
|
||||
|
||||
void set_child_widget(Widget& child);
|
||||
|
||||
private:
|
||||
|
|
|
|||
|
|
@ -84,6 +84,11 @@ Track::Track(TimelineWidget &timeline_widget,
|
|||
|
||||
}
|
||||
|
||||
Track::~Track()
|
||||
{
|
||||
headerWidget.remove(headerBox);
|
||||
}
|
||||
|
||||
Gtk::Widget&
|
||||
Track::get_header_widget()
|
||||
{
|
||||
|
|
|
|||
|
|
@ -64,6 +64,11 @@ public:
|
|||
public:
|
||||
Track(TimelineWidget &timeline_widget,
|
||||
boost::shared_ptr<model::Track> track);
|
||||
|
||||
/**
|
||||
* Destructor
|
||||
**/
|
||||
~Track();
|
||||
|
||||
Gtk::Widget& get_header_widget();
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue