summaryrefslogtreecommitdiffstats
path: root/src/widgets/desktop-widget.cpp
diff options
context:
space:
mode:
authorTavmjong Bah <tavmjong@free.fr>2016-04-13 11:53:54 +0000
committertavmjong-free <tavmjong@free.fr>2016-04-13 11:53:54 +0000
commitea551934712e32620210338aa47f6bf5a6f81043 (patch)
treee784e28ba32a1ae58e4b89b235281443ae81fb26 /src/widgets/desktop-widget.cpp
parentMove background drawing to SPCanvas to avoid temporarily drawing an incorrect (diff)
downloadinkscape-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.cpp5
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 );