toggle_resize (GtkWidget *widget,
GtkWidget *child)
{
- GtkPaned *paned = GTK_PANED (child->parent);
- gboolean is_child1 = (child == paned->child1);
+ GtkWidget *parent;
+ GtkPaned *paned;
+ gboolean is_child1;
gboolean resize, shrink;
- resize = is_child1 ? paned->child1_resize : paned->child2_resize;
- shrink = is_child1 ? paned->child1_shrink : paned->child2_shrink;
+ parent = gtk_widget_get_parent (child);
+ paned = GTK_PANED (parent);
- gtk_widget_ref (child);
- gtk_container_remove (GTK_CONTAINER (child->parent), child);
+ is_child1 = (child == gtk_paned_get_child1 (paned));
+
+ gtk_container_child_get (GTK_CONTAINER (paned), child,
+ "resize", &resize,
+ "shrink", &shrink,
+ NULL);
+
+ g_object_ref (child);
+ gtk_container_remove (GTK_CONTAINER (parent), child);
if (is_child1)
gtk_paned_pack1 (paned, child, !resize, shrink);
else
gtk_paned_pack2 (paned, child, !resize, shrink);
- gtk_widget_unref (child);
+ g_object_unref (child);
}
void
toggle_shrink (GtkWidget *widget,
GtkWidget *child)
{
- GtkPaned *paned = GTK_PANED (child->parent);
- gboolean is_child1 = (child == paned->child1);
+ GtkWidget *parent;
+ GtkPaned *paned;
+ gboolean is_child1;
gboolean resize, shrink;
- resize = is_child1 ? paned->child1_resize : paned->child2_resize;
- shrink = is_child1 ? paned->child1_shrink : paned->child2_shrink;
+ parent = gtk_widget_get_parent (child);
+ paned = GTK_PANED (parent);
+
+ is_child1 = (child == gtk_paned_get_child1 (paned));
+
+ gtk_container_child_get (GTK_CONTAINER (paned), child,
+ "resize", &resize,
+ "shrink", &shrink,
+ NULL);
- gtk_widget_ref (child);
- gtk_container_remove (GTK_CONTAINER (child->parent), child);
+ g_object_ref (child);
+ gtk_container_remove (GTK_CONTAINER (parent), child);
if (is_child1)
gtk_paned_pack1 (paned, child, resize, !shrink);
else
gtk_paned_pack2 (paned, child, resize, !shrink);
- gtk_widget_unref (child);
+ g_object_unref (child);
}
GtkWidget *
const gchar *label1,
const gchar *label2)
{
+ GtkWidget *child1, *child2;
GtkWidget *frame;
GtkWidget *table;
GtkWidget *label;
GtkWidget *check_button;
-
+
+ child1 = gtk_paned_get_child1 (paned);
+ child2 = gtk_paned_get_child2 (paned);
+
frame = gtk_frame_new (frame_label);
gtk_container_set_border_width (GTK_CONTAINER (frame), 4);
gtk_table_attach_defaults (GTK_TABLE (table), check_button,
0, 1, 1, 2);
g_signal_connect (check_button, "toggled",
- G_CALLBACK (toggle_resize), paned->child1);
-
+ G_CALLBACK (toggle_resize), child1);
+
check_button = gtk_check_button_new_with_mnemonic ("_Shrink");
gtk_table_attach_defaults (GTK_TABLE (table), check_button,
0, 1, 2, 3);
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (check_button),
TRUE);
g_signal_connect (check_button, "toggled",
- G_CALLBACK (toggle_shrink), paned->child1);
-
+ G_CALLBACK (toggle_shrink), child1);
+
label = gtk_label_new (label2);
gtk_table_attach_defaults (GTK_TABLE (table), label,
1, 2, 0, 1);
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (check_button),
TRUE);
g_signal_connect (check_button, "toggled",
- G_CALLBACK (toggle_resize), paned->child2);
-
+ G_CALLBACK (toggle_resize), child2);
+
check_button = gtk_check_button_new_with_mnemonic ("_Shrink");
gtk_table_attach_defaults (GTK_TABLE (table), check_button,
1, 2, 2, 3);
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (check_button),
TRUE);
g_signal_connect (check_button, "toggled",
- G_CALLBACK (toggle_shrink), paned->child2);
+ G_CALLBACK (toggle_shrink), child2);
return frame;
}
gtk_window_set_title (GTK_WINDOW (window), "Panes");
gtk_container_set_border_width (GTK_CONTAINER (window), 0);
- vbox = gtk_vbox_new (FALSE, 0);
+ vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
gtk_container_add (GTK_CONTAINER (window), vbox);
-
- vpaned = gtk_vpaned_new ();
+
+ vpaned = gtk_paned_new (GTK_ORIENTATION_VERTICAL);
gtk_box_pack_start (GTK_BOX (vbox), vpaned, TRUE, TRUE, 0);
gtk_container_set_border_width (GTK_CONTAINER(vpaned), 5);
- hpaned = gtk_hpaned_new ();
+ hpaned = gtk_paned_new (GTK_ORIENTATION_HORIZONTAL);
gtk_paned_add1 (GTK_PANED (vpaned), hpaned);
frame = gtk_frame_new (NULL);
gtk_widget_show_all (vbox);
}
- if (!GTK_WIDGET_VISIBLE (window))
+ if (!gtk_widget_get_visible (window))
{
gtk_widget_show (window);
}