diff options
| author | Tavmjong Bah <tavmjong@free.fr> | 2016-04-13 11:53:54 +0000 |
|---|---|---|
| committer | tavmjong-free <tavmjong@free.fr> | 2016-04-13 11:53:54 +0000 |
| commit | ea551934712e32620210338aa47f6bf5a6f81043 (patch) | |
| tree | e784e28ba32a1ae58e4b89b235281443ae81fb26 /src/widgets/desktop-widget.cpp | |
| parent | Move background drawing to SPCanvas to avoid temporarily drawing an incorrect (diff) | |
| download | inkscape-ea551934712e32620210338aa47f6bf5a6f81043.tar.gz inkscape-ea551934712e32620210338aa47f6bf5a6f81043.zip | |
Fix referencing problem with widget is moved from one container to another. Hackfest 2016.
(bzr r14822)
Diffstat (limited to 'src/widgets/desktop-widget.cpp')
| -rw-r--r-- | src/widgets/desktop-widget.cpp | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/src/widgets/desktop-widget.cpp b/src/widgets/desktop-widget.cpp index 759be551f..19c07075b 100644 --- a/src/widgets/desktop-widget.cpp +++ b/src/widgets/desktop-widget.cpp @@ -1698,8 +1698,11 @@ void SPDesktopWidget::setToolboxPosition(Glib::ustring const& id, GtkPositionTyp case GTK_POS_TOP: case GTK_POS_BOTTOM: if ( gtk_widget_is_ancestor(toolbox, hbox) ) { + // Removing a widget can reduce ref count to zero + gtk_object_ref(GTK_OBJECT(toolbox)); gtk_container_remove(GTK_CONTAINER(hbox), toolbox); gtk_container_add(GTK_CONTAINER(vbox), toolbox); + gtk_object_unref(GTK_OBJECT(toolbox)); gtk_box_set_child_packing(GTK_BOX(vbox), toolbox, FALSE, TRUE, 0, GTK_PACK_START); } ToolboxFactory::setOrientation(toolbox, GTK_ORIENTATION_HORIZONTAL); @@ -1707,8 +1710,10 @@ void SPDesktopWidget::setToolboxPosition(Glib::ustring const& id, GtkPositionTyp case GTK_POS_LEFT: case GTK_POS_RIGHT: if ( !gtk_widget_is_ancestor(toolbox, hbox) ) { + gtk_object_ref(GTK_OBJECT(toolbox)); gtk_container_remove(GTK_CONTAINER(vbox), toolbox); gtk_container_add(GTK_CONTAINER(hbox), toolbox); + gtk_object_unref(GTK_OBJECT(toolbox)); gtk_box_set_child_packing(GTK_BOX(hbox), toolbox, FALSE, TRUE, 0, GTK_PACK_START); if (pos == GTK_POS_LEFT) { gtk_box_reorder_child( GTK_BOX(hbox), toolbox, 0 ); |
