Author: cazfi
Date: Wed Nov  2 05:44:09 2016
New Revision: 34319

URL: http://svn.gna.org/viewcvs/freeciv?rev=34319&view=rev
Log:
Replaced deprecated gtk_widget_reparent() usages with modern solutions in 
gtk3.22-client

See patch #6733

Modified:
    branches/S2_6/client/gui-gtk-3.22/chatline.c
    branches/S2_6/client/gui-gtk-3.22/gui_main.c

Modified: branches/S2_6/client/gui-gtk-3.22/chatline.c
URL: 
http://svn.gna.org/viewcvs/freeciv/branches/S2_6/client/gui-gtk-3.22/chatline.c?rev=34319&r1=34318&r2=34319&view=diff
==============================================================================
--- branches/S2_6/client/gui-gtk-3.22/chatline.c        (original)
+++ branches/S2_6/client/gui-gtk-3.22/chatline.c        Wed Nov  2 05:44:09 2016
@@ -1174,7 +1174,11 @@
     if (ptoolkit->toolbar_displayed) {
       gtk_widget_hide(ptoolkit->toolbar);
     }
-    gtk_widget_reparent(ptoolkit->main_widget, toolkit_view);
+    g_object_ref(ptoolkit->main_widget); /* Make sure reference count stays 
above 0
+                                          * during the transition to new 
parent. */
+    gtk_container_remove(GTK_CONTAINER(parent), ptoolkit->main_widget);
+    gtk_container_add(GTK_CONTAINER(toolkit_view), ptoolkit->main_widget);
+    g_object_unref(ptoolkit->main_widget);
     if (ptoolkit->toolbar_displayed) {
       gtk_widget_show(ptoolkit->toolbar);
     }

Modified: branches/S2_6/client/gui-gtk-3.22/gui_main.c
URL: 
http://svn.gna.org/viewcvs/freeciv/branches/S2_6/client/gui-gtk-3.22/gui_main.c?rev=34319&r1=34318&r2=34319&view=diff
==============================================================================
--- branches/S2_6/client/gui-gtk-3.22/gui_main.c        (original)
+++ branches/S2_6/client/gui-gtk-3.22/gui_main.c        Wed Nov  2 05:44:09 2016
@@ -807,14 +807,20 @@
 static void tearoff_destroy(GtkWidget *w, gpointer data)
 {
   GtkWidget *p, *b, *box;
+  GtkWidget *old_parent;
 
   box = GTK_WIDGET(data);
+  old_parent = gtk_widget_get_parent(box);
   p = g_object_get_data(G_OBJECT(w), "parent");
   b = g_object_get_data(G_OBJECT(w), "toggle");
   gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(b), FALSE);
 
   gtk_widget_hide(w);
-  gtk_widget_reparent(box, p);
+  g_object_ref(box); /* Make sure reference count stays above 0
+                      * during the transition to new parent. */
+  gtk_container_remove(GTK_CONTAINER(old_parent), box);
+  gtk_container_add(GTK_CONTAINER(p), box);
+  g_object_unref(box);
 }
 
 /**************************************************************************
@@ -834,11 +840,13 @@
 static void tearoff_callback(GtkWidget *b, gpointer data)
 {
   GtkWidget *box = GTK_WIDGET(data);
-  GtkWidget *w;
 
   if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(b))) {
     GtkWidget *temp_hide;
-
+    GtkWidget *old_parent;
+    GtkWidget *w;
+
+    old_parent = gtk_widget_get_parent(box);
     w = gtk_window_new(GTK_WINDOW_TOPLEVEL);
     setup_dialog(w, toplevel);
     gtk_widget_set_name(w, "Freeciv");
@@ -854,7 +862,12 @@
     if (temp_hide != NULL) {
       gtk_widget_hide(temp_hide);
     }
-    gtk_widget_reparent(box, w);
+
+    g_object_ref(box); /* Make sure reference count stays above 0
+                        * during the transition to new parent. */
+    gtk_container_remove(GTK_CONTAINER(old_parent), box);
+    gtk_container_add(GTK_CONTAINER(w), box);
+    g_object_unref(box);
     gtk_widget_show(w);
     if (temp_hide != NULL) {
       gtk_widget_show(temp_hide);


_______________________________________________
Freeciv-commits mailing list
Freeciv-commits@gna.org
https://mail.gna.org/listinfo/freeciv-commits

Reply via email to