]> Pileus Git - ~andy/gtk/blobdiff - gtk/gtkctree.c
Set colormap of offscreen pixmaps
[~andy/gtk] / gtk / gtkctree.c
index fc637bbf97c4f78cd5453e976aa229959968473d..a396db543afb688a5b31ec15aa532df548d425fb 100644 (file)
  * GTK+ at ftp://ftp.gtk.org/pub/gtk/. 
  */
 
+#include "config.h"
 #include <stdlib.h>
+
+#undef GTK_DISABLE_DEPRECATED
+#define __GTK_CTREE_C__
+
 #include "gtkctree.h"
 #include "gtkbindings.h"
 #include "gtkmain.h"
+#include "gtkmarshalers.h"
 #include "gtkdnd.h"
+#include "gtkintl.h"
 #include <gdk/gdkkeysyms.h>
 
+#include "gtkalias.h"
+
 #define PM_SIZE                    8
 #define TAB_SIZE                   (PM_SIZE + 6)
 #define CELL_SPACING               1
@@ -336,6 +345,7 @@ gtk_ctree_get_type (void)
         (GtkClassInitFunc) NULL,
       };
 
+      I_("GtkCTree");
       ctree_type = gtk_type_unique (GTK_TYPE_CLIST, &ctree_info);
     }
 
@@ -398,165 +408,149 @@ gtk_ctree_class_init (GtkCTreeClass *klass)
   klass->tree_move = real_tree_move;
   klass->change_focus_row_expansion = change_focus_row_expansion;
 
-  gtk_object_add_arg_type ("GtkCTree::n_columns", /* overrides GtkCList::n_columns!! */
+  gtk_object_add_arg_type ("GtkCTree::n-columns", /* overrides GtkCList::n_columns!! */
                           GTK_TYPE_UINT,
-                          GTK_ARG_READWRITE | GTK_ARG_CONSTRUCT_ONLY,
+                          GTK_ARG_READWRITE | GTK_ARG_CONSTRUCT_ONLY | G_PARAM_STATIC_NAME,
                           ARG_N_COLUMNS);
-  gtk_object_add_arg_type ("GtkCTree::tree_column",
+  gtk_object_add_arg_type ("GtkCTree::tree-column",
                           GTK_TYPE_UINT,
-                          GTK_ARG_READWRITE | GTK_ARG_CONSTRUCT_ONLY,
+                          GTK_ARG_READWRITE | GTK_ARG_CONSTRUCT_ONLY | G_PARAM_STATIC_NAME,
                           ARG_TREE_COLUMN);
   gtk_object_add_arg_type ("GtkCTree::indent",
                           GTK_TYPE_UINT,
-                          GTK_ARG_READWRITE,
+                          GTK_ARG_READWRITE | G_PARAM_STATIC_NAME,
                           ARG_INDENT);
   gtk_object_add_arg_type ("GtkCTree::spacing",
                           GTK_TYPE_UINT,
-                          GTK_ARG_READWRITE,
+                          GTK_ARG_READWRITE | G_PARAM_STATIC_NAME,
                           ARG_SPACING);
-  gtk_object_add_arg_type ("GtkCTree::show_stub",
+  gtk_object_add_arg_type ("GtkCTree::show-stub",
                           GTK_TYPE_BOOL,
-                          GTK_ARG_READWRITE,
+                          GTK_ARG_READWRITE | G_PARAM_STATIC_NAME,
                           ARG_SHOW_STUB);
-  gtk_object_add_arg_type ("GtkCTree::line_style",
+  gtk_object_add_arg_type ("GtkCTree::line-style",
                           GTK_TYPE_CTREE_LINE_STYLE,
-                          GTK_ARG_READWRITE,
+                          GTK_ARG_READWRITE | G_PARAM_STATIC_NAME,
                           ARG_LINE_STYLE);
-  gtk_object_add_arg_type ("GtkCTree::expander_style",
+  gtk_object_add_arg_type ("GtkCTree::expander-style",
                           GTK_TYPE_CTREE_EXPANDER_STYLE,
-                          GTK_ARG_READWRITE,
+                          GTK_ARG_READWRITE | G_PARAM_STATIC_NAME,
                           ARG_EXPANDER_STYLE);
 
   ctree_signals[TREE_SELECT_ROW] =
-    gtk_signal_new ("tree_select_row",
+    gtk_signal_new (I_("tree-select-row"),
                    GTK_RUN_FIRST,
                    GTK_CLASS_TYPE (object_class),
                    GTK_SIGNAL_OFFSET (GtkCTreeClass, tree_select_row),
-                   gtk_marshal_VOID__POINTER_INT,
-                   GTK_TYPE_NONE, 2, GTK_TYPE_POINTER, GTK_TYPE_INT);
+                   _gtk_marshal_VOID__POINTER_INT,
+                   GTK_TYPE_NONE, 2,
+                   GTK_TYPE_CTREE_NODE,
+                   GTK_TYPE_INT);
   ctree_signals[TREE_UNSELECT_ROW] =
-    gtk_signal_new ("tree_unselect_row",
+    gtk_signal_new (I_("tree-unselect-row"),
                    GTK_RUN_FIRST,
                    GTK_CLASS_TYPE (object_class),
                    GTK_SIGNAL_OFFSET (GtkCTreeClass, tree_unselect_row),
-                   gtk_marshal_VOID__POINTER_INT,
-                   GTK_TYPE_NONE, 2, GTK_TYPE_POINTER, GTK_TYPE_INT);
+                   _gtk_marshal_VOID__POINTER_INT,
+                   GTK_TYPE_NONE, 2,
+                   GTK_TYPE_CTREE_NODE,
+                   GTK_TYPE_INT);
   ctree_signals[TREE_EXPAND] =
-    gtk_signal_new ("tree_expand",
+    gtk_signal_new (I_("tree-expand"),
                    GTK_RUN_LAST,
                    GTK_CLASS_TYPE (object_class),
                    GTK_SIGNAL_OFFSET (GtkCTreeClass, tree_expand),
-                   gtk_marshal_VOID__POINTER,
-                   GTK_TYPE_NONE, 1, GTK_TYPE_POINTER);
+                   _gtk_marshal_VOID__POINTER,
+                   GTK_TYPE_NONE, 1,
+                   GTK_TYPE_CTREE_NODE);
   ctree_signals[TREE_COLLAPSE] =
-    gtk_signal_new ("tree_collapse",
+    gtk_signal_new (I_("tree-collapse"),
                    GTK_RUN_LAST,
                    GTK_CLASS_TYPE (object_class),
                    GTK_SIGNAL_OFFSET (GtkCTreeClass, tree_collapse),
-                   gtk_marshal_VOID__POINTER,
-                   GTK_TYPE_NONE, 1, GTK_TYPE_POINTER);
+                   _gtk_marshal_VOID__POINTER,
+                   GTK_TYPE_NONE, 1,
+                   GTK_TYPE_CTREE_NODE);
   ctree_signals[TREE_MOVE] =
-    gtk_signal_new ("tree_move",
+    gtk_signal_new (I_("tree-move"),
                    GTK_RUN_LAST,
                    GTK_CLASS_TYPE (object_class),
                    GTK_SIGNAL_OFFSET (GtkCTreeClass, tree_move),
-                   gtk_marshal_VOID__POINTER_POINTER_POINTER,
-                   GTK_TYPE_NONE, 3, GTK_TYPE_POINTER,
-                   GTK_TYPE_POINTER, GTK_TYPE_POINTER);
+                   _gtk_marshal_VOID__POINTER_POINTER_POINTER,
+                   GTK_TYPE_NONE, 3,
+                   GTK_TYPE_CTREE_NODE,
+                   GTK_TYPE_CTREE_NODE,
+                   GTK_TYPE_CTREE_NODE);
   ctree_signals[CHANGE_FOCUS_ROW_EXPANSION] =
-    gtk_signal_new ("change_focus_row_expansion",
+    gtk_signal_new (I_("change-focus-row-expansion"),
                    GTK_RUN_LAST | GTK_RUN_ACTION,
                    GTK_CLASS_TYPE (object_class),
                    GTK_SIGNAL_OFFSET (GtkCTreeClass,
                                       change_focus_row_expansion),
-                   gtk_marshal_VOID__ENUM,
+                   _gtk_marshal_VOID__ENUM,
                    GTK_TYPE_NONE, 1, GTK_TYPE_CTREE_EXPANSION_TYPE);
 
   binding_set = gtk_binding_set_by_class (klass);
-  gtk_binding_entry_add_signal (binding_set,
-                               GDK_plus, GDK_SHIFT_MASK,
-                               "change_focus_row_expansion", 1,
-                               GTK_TYPE_ENUM, GTK_CTREE_EXPANSION_EXPAND);
   gtk_binding_entry_add_signal (binding_set,
                                GDK_plus, 0,
-                               "change_focus_row_expansion", 1,
+                               "change-focus-row-expansion", 1,
                                GTK_TYPE_ENUM, GTK_CTREE_EXPANSION_EXPAND);
-  gtk_binding_entry_add_signal (binding_set,
-                               GDK_plus, GDK_CONTROL_MASK | GDK_SHIFT_MASK,
-                               "change_focus_row_expansion", 1,
-                               GTK_TYPE_ENUM, GTK_CTREE_EXPANSION_EXPAND_RECURSIVE);
   gtk_binding_entry_add_signal (binding_set,
                                GDK_plus, GDK_CONTROL_MASK,
-                               "change_focus_row_expansion", 1,
+                               "change-focus-row-expansion", 1,
                                GTK_TYPE_ENUM, GTK_CTREE_EXPANSION_EXPAND_RECURSIVE);
 
-  gtk_binding_entry_add_signal (binding_set,
-                               GDK_KP_Add, GDK_SHIFT_MASK,
-                               "change_focus_row_expansion", 1,
-                               GTK_TYPE_ENUM, GTK_CTREE_EXPANSION_EXPAND);
   gtk_binding_entry_add_signal (binding_set,
                                GDK_KP_Add, 0,
-                               "change_focus_row_expansion", 1,
+                               "change-focus-row-expansion", 1,
                                GTK_TYPE_ENUM, GTK_CTREE_EXPANSION_EXPAND);
-  gtk_binding_entry_add_signal (binding_set,
-                               GDK_KP_Add, GDK_CONTROL_MASK | GDK_SHIFT_MASK,
-                               "change_focus_row_expansion", 1,
-                               GTK_TYPE_ENUM, GTK_CTREE_EXPANSION_EXPAND_RECURSIVE);
   gtk_binding_entry_add_signal (binding_set,
                                GDK_KP_Add, GDK_CONTROL_MASK,
-                               "change_focus_row_expansion", 1,
+                               "change-focus-row-expansion", 1,
                                GTK_TYPE_ENUM, GTK_CTREE_EXPANSION_EXPAND_RECURSIVE);
   
   gtk_binding_entry_add_signal (binding_set,
                                GDK_minus, 0,
-                               "change_focus_row_expansion", 1,
+                               "change-focus-row-expansion", 1,
                                GTK_TYPE_ENUM, GTK_CTREE_EXPANSION_COLLAPSE);
   gtk_binding_entry_add_signal (binding_set,
                                 GDK_minus, GDK_CONTROL_MASK,
-                               "change_focus_row_expansion", 1,
+                               "change-focus-row-expansion", 1,
                                GTK_TYPE_ENUM,
                                GTK_CTREE_EXPANSION_COLLAPSE_RECURSIVE);
   gtk_binding_entry_add_signal (binding_set,
                                GDK_KP_Subtract, 0,
-                               "change_focus_row_expansion", 1,
+                               "change-focus-row-expansion", 1,
                                GTK_TYPE_ENUM, GTK_CTREE_EXPANSION_COLLAPSE);
   gtk_binding_entry_add_signal (binding_set,
                                GDK_KP_Subtract, GDK_CONTROL_MASK,
-                               "change_focus_row_expansion", 1,
+                               "change-focus-row-expansion", 1,
                                GTK_TYPE_ENUM,
                                GTK_CTREE_EXPANSION_COLLAPSE_RECURSIVE);
   gtk_binding_entry_add_signal (binding_set,
                                GDK_equal, 0,
-                               "change_focus_row_expansion", 1,
+                               "change-focus-row-expansion", 1,
                                GTK_TYPE_ENUM, GTK_CTREE_EXPANSION_TOGGLE);
   gtk_binding_entry_add_signal (binding_set,
                                GDK_KP_Equal, 0,
-                               "change_focus_row_expansion", 1,
-                               GTK_TYPE_ENUM, GTK_CTREE_EXPANSION_TOGGLE);
-  gtk_binding_entry_add_signal (binding_set,
-                               GDK_equal, GDK_SHIFT_MASK,
-                               "change_focus_row_expansion", 1,
-                               GTK_TYPE_ENUM, GTK_CTREE_EXPANSION_TOGGLE);
-  gtk_binding_entry_add_signal (binding_set,
-                                GDK_KP_Equal, GDK_SHIFT_MASK,
-                               "change_focus_row_expansion", 1,
+                               "change-focus-row-expansion", 1,
                                GTK_TYPE_ENUM, GTK_CTREE_EXPANSION_TOGGLE);
   gtk_binding_entry_add_signal (binding_set,
                                GDK_KP_Multiply, 0,
-                               "change_focus_row_expansion", 1,
+                               "change-focus-row-expansion", 1,
                                GTK_TYPE_ENUM, GTK_CTREE_EXPANSION_TOGGLE);
   gtk_binding_entry_add_signal (binding_set,
                                GDK_asterisk, 0,
-                               "change_focus_row_expansion", 1,
+                               "change-focus-row-expansion", 1,
                                GTK_TYPE_ENUM, GTK_CTREE_EXPANSION_TOGGLE);
   gtk_binding_entry_add_signal (binding_set,
                                GDK_KP_Multiply, GDK_CONTROL_MASK,
-                               "change_focus_row_expansion", 1,
+                               "change-focus-row-expansion", 1,
                                GTK_TYPE_ENUM,
                                GTK_CTREE_EXPANSION_TOGGLE_RECURSIVE);
   gtk_binding_entry_add_signal (binding_set,
                                GDK_asterisk, GDK_CONTROL_MASK,
-                               "change_focus_row_expansion", 1,
+                               "change-focus-row-expansion", 1,
                                GTK_TYPE_ENUM,
                                GTK_CTREE_EXPANSION_TOGGLE_RECURSIVE);  
 }
@@ -575,24 +569,12 @@ gtk_ctree_set_arg (GtkObject      *object,
   switch (arg_id)
     {
     case ARG_N_COLUMNS: /* construct-only arg, only set at construction time */
-      g_return_if_fail (clist->row_mem_chunk == NULL);
       clist->columns = MAX (1, GTK_VALUE_UINT (*arg));
-      clist->row_mem_chunk = g_mem_chunk_new ("ctree row mem chunk",
-                                             sizeof (GtkCTreeRow),
-                                             sizeof (GtkCTreeRow)
-                                             * CLIST_OPTIMUM_SIZE,
-                                             G_ALLOC_AND_FREE);
-      clist->cell_mem_chunk = g_mem_chunk_new ("ctree cell mem chunk",
-                                              sizeof (GtkCell) * clist->columns,
-                                              sizeof (GtkCell) * clist->columns
-                                              * CLIST_OPTIMUM_SIZE,
-                                              G_ALLOC_AND_FREE);
       ctree->tree_column = CLAMP (ctree->tree_column, 0, clist->columns);
       break;
     case ARG_TREE_COLUMN: /* construct-only arg, only set at construction time */
       ctree->tree_column = GTK_VALUE_UINT (*arg);
-      if (clist->row_mem_chunk)
-       ctree->tree_column = CLAMP (ctree->tree_column, 0, clist->columns);
+      ctree->tree_column = CLAMP (ctree->tree_column, 0, clist->columns);
       break;
     case ARG_INDENT:
       gtk_ctree_set_indent (ctree, GTK_VALUE_UINT (*arg));
@@ -693,9 +675,13 @@ ctree_attach_styles (GtkCTree     *ctree,
 
       colormap = gtk_widget_get_colormap (GTK_WIDGET (ctree));
       if (GTK_CTREE_ROW (node)->row.fg_set)
-       gdk_color_alloc (colormap, &(GTK_CTREE_ROW (node)->row.foreground));
+       gdk_colormap_alloc_color (colormap,
+                                  &(GTK_CTREE_ROW (node)->row.foreground),
+                                  FALSE, TRUE);
       if (GTK_CTREE_ROW (node)->row.bg_set)
-       gdk_color_alloc (colormap, &(GTK_CTREE_ROW (node)->row.background));
+       gdk_colormap_alloc_color (colormap,
+                                  &(GTK_CTREE_ROW (node)->row.background),
+                                  FALSE, TRUE);
     }
 
   for (i = 0; i < clist->columns; i++)
@@ -762,9 +748,11 @@ gtk_ctree_realize (GtkWidget *widget)
 
   if (ctree->line_style == GTK_CTREE_LINES_DOTTED)
     {
+      gint8 dashes[] = { 1, 1 };
+
       gdk_gc_set_line_attributes (ctree->lines_gc, 1, 
                                  GDK_LINE_ON_OFF_DASH, GDK_CAP_BUTT, GDK_JOIN_MITER);
-      gdk_gc_set_dashes (ctree->lines_gc, 0, "\1\1", 2);
+      gdk_gc_set_dashes (ctree->lines_gc, 0, dashes, G_N_ELEMENTS (dashes));
     }
 }
 
@@ -799,7 +787,7 @@ gtk_ctree_unrealize (GtkWidget *widget)
        }
     }
 
-  gdk_gc_destroy (ctree->lines_gc);
+  g_object_unref (ctree->lines_gc);
 }
 
 static gint
@@ -1044,7 +1032,7 @@ draw_cell_pixmap (GdkWindow    *window,
     height = clip_rectangle->y + clip_rectangle->height - y;
 
   if (width > 0 && height > 0)
-    gdk_draw_pixmap (window, fg_gc, pixmap, xsrc, ysrc, x, y, width, height);
+    gdk_draw_drawable (window, fg_gc, pixmap, xsrc, ysrc, x, y, width, height);
 
   if (mask)
     {
@@ -1638,7 +1626,6 @@ draw_row (GtkCList     *clist,
 {
   GtkWidget *widget;
   GtkCTree  *ctree;
-  GdkRectangle *rect;
   GdkRectangle *crect;
   GdkRectangle row_rectangle;
   GdkRectangle cell_rectangle; 
@@ -1700,21 +1687,19 @@ draw_row (GtkCList     *clist,
   /* draw the cell borders */
   if (area)
     {
-      rect = &intersect_rectangle;
       crect = &intersect_rectangle;
 
       if (gdk_rectangle_intersect (area, &cell_rectangle, crect))
        gdk_draw_rectangle (clist->clist_window,
-                           widget->style->base_gc[GTK_STATE_ACTIVE], TRUE,
+                           widget->style->base_gc[GTK_STATE_NORMAL], TRUE,
                            crect->x, crect->y, crect->width, crect->height);
     }
   else
     {
-      rect = &clip_rectangle;
       crect = &cell_rectangle;
 
       gdk_draw_rectangle (clist->clist_window,
-                         widget->style->base_gc[GTK_STATE_ACTIVE], TRUE,
+                         widget->style->base_gc[GTK_STATE_NORMAL], TRUE,
                          crect->x, crect->y, crect->width, crect->height);
     }
 
@@ -1761,7 +1746,7 @@ draw_row (GtkCList     *clist,
       if (!area || gdk_rectangle_intersect (area, &cell_rectangle, crect))
        {
          gdk_draw_rectangle (clist->clist_window,
-                             widget->style->base_gc[GTK_STATE_ACTIVE], TRUE,
+                             widget->style->base_gc[GTK_STATE_NORMAL], TRUE,
                              crect->x, crect->y, crect->width, crect->height);
 
          /* horizontal black lines */
@@ -1855,7 +1840,7 @@ draw_row (GtkCList     *clist,
          switch (clist_row->cell[i].type)
            {
            case GTK_CELL_PIXMAP:
-             gdk_window_get_size
+             gdk_drawable_get_size
                (GTK_CELL_PIXMAP (clist_row->cell[i])->pixmap, &pixmap_width,
                 &height);
              width += pixmap_width;
@@ -1863,7 +1848,7 @@ draw_row (GtkCList     *clist,
            case GTK_CELL_PIXTEXT:
              if (GTK_CELL_PIXTEXT (clist_row->cell[i])->pixmap)
                {
-                 gdk_window_get_size 
+                 gdk_drawable_get_size
                    (GTK_CELL_PIXTEXT (clist_row->cell[i])->pixmap,
                     &pixmap_width, &height);
                  width += pixmap_width;
@@ -1927,7 +1912,7 @@ draw_row (GtkCList     *clist,
                case GTK_CELL_TEXT:
                  if (layout)
                    {
-                     gint row_center_offset = 1.5 + (clist->row_height - logical_rect.height - 1) / 2;
+                     gint row_center_offset = (clist->row_height - logical_rect.height) / 2;
 
                      gdk_gc_set_clip_rectangle (fg_gc, &clip_rectangle);
                      gdk_draw_layout (clist->clist_window, fg_gc,
@@ -1990,7 +1975,7 @@ draw_row (GtkCList     *clist,
 
       if (layout)
        {
-         gint row_center_offset = 1.5 + (clist->row_height - logical_rect.height - 1) / 2;
+         gint row_center_offset = (clist->row_height - logical_rect.height) / 2;
          
          if (clist->column[i].justification == GTK_JUSTIFY_RIGHT)
            {
@@ -2495,7 +2480,8 @@ change_focus_row_expansion (GtkCTree          *ctree,
 
   clist = GTK_CLIST (ctree);
 
-  if (gdk_pointer_is_grabbed () && GTK_WIDGET_HAS_GRAB (ctree))
+  if (gdk_display_pointer_is_grabbed (gtk_widget_get_display (GTK_WIDGET (ctree))) && 
+      GTK_WIDGET_HAS_GRAB (ctree))
     return;
   
   if (!(node =
@@ -2534,7 +2520,6 @@ real_tree_expand (GtkCTree     *ctree,
   GtkCTreeNode *work;
   GtkRequisition requisition;
   gboolean visible;
-  gint level;
 
   g_return_if_fail (GTK_IS_CTREE (ctree));
 
@@ -2546,7 +2531,6 @@ real_tree_expand (GtkCTree     *ctree,
   GTK_CLIST_GET_CLASS (clist)->resync_selection (clist, NULL);
 
   GTK_CTREE_ROW (node)->expanded = TRUE;
-  level = GTK_CTREE_ROW (node)->level;
 
   visible = gtk_ctree_is_viewable (ctree, node);
   /* get cell width if tree_column is auto resized */
@@ -2559,7 +2543,7 @@ real_tree_expand (GtkCTree     *ctree,
   if (GTK_CELL_PIXTEXT 
       (GTK_CTREE_ROW (node)->row.cell[ctree->tree_column])->pixmap)
     {
-      gdk_pixmap_unref
+      g_object_unref
        (GTK_CELL_PIXTEXT
         (GTK_CTREE_ROW (node)->row.cell[ctree->tree_column])->pixmap);
       
@@ -2569,7 +2553,7 @@ real_tree_expand (GtkCTree     *ctree,
       if (GTK_CELL_PIXTEXT 
          (GTK_CTREE_ROW (node)->row.cell[ctree->tree_column])->mask)
        {
-         gdk_pixmap_unref
+         g_object_unref
            (GTK_CELL_PIXTEXT 
             (GTK_CTREE_ROW (node)->row.cell[ctree->tree_column])->mask);
          GTK_CELL_PIXTEXT 
@@ -2582,12 +2566,12 @@ real_tree_expand (GtkCTree     *ctree,
     {
       GTK_CELL_PIXTEXT 
        (GTK_CTREE_ROW (node)->row.cell[ctree->tree_column])->pixmap = 
-       gdk_pixmap_ref (GTK_CTREE_ROW (node)->pixmap_opened);
+       g_object_ref (GTK_CTREE_ROW (node)->pixmap_opened);
 
       if (GTK_CTREE_ROW (node)->mask_opened) 
        GTK_CELL_PIXTEXT 
          (GTK_CTREE_ROW (node)->row.cell[ctree->tree_column])->mask = 
-         gdk_pixmap_ref (GTK_CTREE_ROW (node)->mask_opened);
+         g_object_ref (GTK_CTREE_ROW (node)->mask_opened);
     }
 
 
@@ -2703,7 +2687,7 @@ real_tree_collapse (GtkCTree     *ctree,
   if (GTK_CELL_PIXTEXT 
       (GTK_CTREE_ROW (node)->row.cell[ctree->tree_column])->pixmap)
     {
-      gdk_pixmap_unref
+      g_object_unref
        (GTK_CELL_PIXTEXT
         (GTK_CTREE_ROW (node)->row.cell[ctree->tree_column])->pixmap);
       
@@ -2713,7 +2697,7 @@ real_tree_collapse (GtkCTree     *ctree,
       if (GTK_CELL_PIXTEXT 
          (GTK_CTREE_ROW (node)->row.cell[ctree->tree_column])->mask)
        {
-         gdk_pixmap_unref
+         g_object_unref
            (GTK_CELL_PIXTEXT 
             (GTK_CTREE_ROW (node)->row.cell[ctree->tree_column])->mask);
          GTK_CELL_PIXTEXT 
@@ -2726,12 +2710,12 @@ real_tree_collapse (GtkCTree     *ctree,
     {
       GTK_CELL_PIXTEXT 
        (GTK_CTREE_ROW (node)->row.cell[ctree->tree_column])->pixmap = 
-       gdk_pixmap_ref (GTK_CTREE_ROW (node)->pixmap_closed);
+       g_object_ref (GTK_CTREE_ROW (node)->pixmap_closed);
 
       if (GTK_CTREE_ROW (node)->mask_closed) 
        GTK_CELL_PIXTEXT 
          (GTK_CTREE_ROW (node)->row.cell[ctree->tree_column])->mask = 
-         gdk_pixmap_ref (GTK_CTREE_ROW (node)->mask_closed);
+         g_object_ref (GTK_CTREE_ROW (node)->mask_closed);
     }
 
   work = GTK_CTREE_ROW (node)->children;
@@ -2881,9 +2865,9 @@ cell_size_request (GtkCList       *clist,
     case GTK_CELL_PIXTEXT:
       if (GTK_CELL_PIXTEXT (clist_row->cell[column])->pixmap)
        {
-         gdk_window_get_size (GTK_CELL_PIXTEXT
-                              (clist_row->cell[column])->pixmap,
-                              &width, &height);
+         gdk_drawable_get_size (GTK_CELL_PIXTEXT
+                                 (clist_row->cell[column])->pixmap,
+                                 &width, &height);
          width += GTK_CELL_PIXTEXT (clist_row->cell[column])->spacing;
        }
       else
@@ -2913,14 +2897,12 @@ cell_size_request (GtkCList       *clist,
        }
       break;
     case GTK_CELL_PIXMAP:
-      gdk_window_get_size (GTK_CELL_PIXMAP (clist_row->cell[column])->pixmap,
-                          &width, &height);
+      gdk_drawable_get_size (GTK_CELL_PIXMAP (clist_row->cell[column])->pixmap,
+                             &width, &height);
       requisition->width += width;
       requisition->height = MAX (requisition->height, height);
       break;
     default:
-      requisition->width  = 0;
-      requisition->height = 0;
       break;
     }
 
@@ -2982,7 +2964,7 @@ set_cell_contents (GtkCList    *clist,
       old_mask = GTK_CELL_PIXTEXT (clist_row->cell[column])->mask;
       break;
     case GTK_CELL_WIDGET:
-      /* unimplimented */
+      /* unimplemented */
       break;
       
     default:
@@ -3050,12 +3032,11 @@ set_cell_contents (GtkCList    *clist,
       !GTK_CLIST_AUTO_RESIZE_BLOCKED (clist))
     column_auto_resize (clist, clist_row, column, requisition.width);
 
-  if (old_text)
-    g_free (old_text);
+  g_free (old_text);
   if (old_pixmap)
-    gdk_pixmap_unref (old_pixmap);
+    g_object_unref (old_pixmap);
   if (old_mask)
-    gdk_pixmap_unref (old_mask);
+    g_object_unref (old_mask);
 }
 
 static void 
@@ -3072,15 +3053,15 @@ set_node_info (GtkCTree     *ctree,
 {
   if (GTK_CTREE_ROW (node)->pixmap_opened)
     {
-      gdk_pixmap_unref (GTK_CTREE_ROW (node)->pixmap_opened);
+      g_object_unref (GTK_CTREE_ROW (node)->pixmap_opened);
       if (GTK_CTREE_ROW (node)->mask_opened) 
-       gdk_bitmap_unref (GTK_CTREE_ROW (node)->mask_opened);
+       g_object_unref (GTK_CTREE_ROW (node)->mask_opened);
     }
   if (GTK_CTREE_ROW (node)->pixmap_closed)
     {
-      gdk_pixmap_unref (GTK_CTREE_ROW (node)->pixmap_closed);
+      g_object_unref (GTK_CTREE_ROW (node)->pixmap_closed);
       if (GTK_CTREE_ROW (node)->mask_closed) 
-       gdk_bitmap_unref (GTK_CTREE_ROW (node)->mask_closed);
+       g_object_unref (GTK_CTREE_ROW (node)->mask_closed);
     }
 
   GTK_CTREE_ROW (node)->pixmap_opened = NULL;
@@ -3090,15 +3071,15 @@ set_node_info (GtkCTree     *ctree,
 
   if (pixmap_closed)
     {
-      GTK_CTREE_ROW (node)->pixmap_closed = gdk_pixmap_ref (pixmap_closed);
+      GTK_CTREE_ROW (node)->pixmap_closed = g_object_ref (pixmap_closed);
       if (mask_closed) 
-       GTK_CTREE_ROW (node)->mask_closed = gdk_bitmap_ref (mask_closed);
+       GTK_CTREE_ROW (node)->mask_closed = g_object_ref (mask_closed);
     }
   if (pixmap_opened)
     {
-      GTK_CTREE_ROW (node)->pixmap_opened = gdk_pixmap_ref (pixmap_opened);
+      GTK_CTREE_ROW (node)->pixmap_opened = g_object_ref (pixmap_opened);
       if (mask_opened) 
-       GTK_CTREE_ROW (node)->mask_opened = gdk_bitmap_ref (mask_opened);
+       GTK_CTREE_ROW (node)->mask_opened = g_object_ref (mask_opened);
     }
 
   GTK_CTREE_ROW (node)->is_leaf  = is_leaf;
@@ -3216,8 +3197,8 @@ row_new (GtkCTree *ctree)
   int i;
 
   clist = GTK_CLIST (ctree);
-  ctree_row = g_chunk_new (GtkCTreeRow, clist->row_mem_chunk);
-  ctree_row->row.cell = g_chunk_new (GtkCell, clist->cell_mem_chunk);
+  ctree_row = g_slice_new (GtkCTreeRow);
+  ctree_row->row.cell = g_slice_alloc (sizeof (GtkCell) * clist->columns);
 
   for (i = 0; i < clist->columns; i++)
     {
@@ -3280,21 +3261,21 @@ row_delete (GtkCTree    *ctree,
 
   if (ctree_row->pixmap_closed)
     {
-      gdk_pixmap_unref (ctree_row->pixmap_closed);
+      g_object_unref (ctree_row->pixmap_closed);
       if (ctree_row->mask_closed)
-       gdk_bitmap_unref (ctree_row->mask_closed);
+       g_object_unref (ctree_row->mask_closed);
     }
 
   if (ctree_row->pixmap_opened)
     {
-      gdk_pixmap_unref (ctree_row->pixmap_opened);
+      g_object_unref (ctree_row->pixmap_opened);
       if (ctree_row->mask_opened)
-       gdk_bitmap_unref (ctree_row->mask_opened);
+       g_object_unref (ctree_row->mask_opened);
     }
 
   if (ctree_row->row.destroy)
     {
-      GtkDestroyNotify dnotify = ctree_row->row.destroy;
+      GDestroyNotify dnotify = ctree_row->row.destroy;
       gpointer ddata = ctree_row->row.data;
 
       ctree_row->row.destroy = NULL;
@@ -3303,8 +3284,8 @@ row_delete (GtkCTree    *ctree,
       dnotify (ddata);
     }
 
-  g_mem_chunk_free (clist->cell_mem_chunk, ctree_row->row.cell);
-  g_mem_chunk_free (clist->row_mem_chunk, ctree_row);
+  g_slice_free1 (sizeof (GtkCell) * clist->columns, ctree_row->row.cell);
+  g_slice_free (GtkCTreeRow, ctree_row);
 }
 
 static void
@@ -3534,7 +3515,6 @@ ctree_is_hot_spot (GtkCTree     *ctree,
 {
   GtkCTreeRow *tree_row;
   GtkCList *clist;
-  GtkCellPixText *cell;
   gint xl;
   gint yu;
   
@@ -3549,8 +3529,6 @@ ctree_is_hot_spot (GtkCTree     *ctree,
 
   tree_row = GTK_CTREE_ROW (node);
 
-  cell = GTK_CELL_PIXTEXT (tree_row->row.cell[ctree->tree_column]);
-
   yu = (ROW_TOP_YPIXEL (clist, row) + (clist->row_height - PM_SIZE) / 2 -
        (clist->row_height - 1) % 2);
 
@@ -3600,7 +3578,7 @@ gtk_ctree_new_with_titles (gint         columns,
   g_return_val_if_fail (columns > 0, NULL);
   g_return_val_if_fail (tree_column >= 0 && tree_column < columns, NULL);
 
-  widget = gtk_widget_new (GTK_TYPE_CTREE,
+  widget = g_object_new (GTK_TYPE_CTREE,
                           "n_columns", columns,
                           "tree_column", tree_column,
                           NULL);
@@ -3873,9 +3851,6 @@ gtk_ctree_remove_node (GtkCTree     *ctree,
 
   if (node)
     {
-      gboolean visible;
-
-      visible = gtk_ctree_is_viewable (ctree, node);
       gtk_ctree_unlink (ctree, node, TRUE);
       gtk_ctree_post_recursive (ctree, node, GTK_CTREE_FUNC (tree_delete),
                                NULL);
@@ -4104,8 +4079,8 @@ gtk_ctree_find_node_ptr (GtkCTree    *ctree,
 {
   GtkCTreeNode *node;
   
-  g_return_val_if_fail (GTK_IS_CTREE (ctree), FALSE);
-  g_return_val_if_fail (ctree_row != NULL, FALSE);
+  g_return_val_if_fail (GTK_IS_CTREE (ctree), NULL);
+  g_return_val_if_fail (ctree_row != NULL, NULL);
   
   if (ctree_row->parent)
     node = GTK_CTREE_ROW (ctree_row->parent)->children;
@@ -4124,7 +4099,7 @@ gtk_ctree_node_nth (GtkCTree *ctree,
 {
   g_return_val_if_fail (GTK_IS_CTREE (ctree), NULL);
 
-  if ((row < 0) || (row >= GTK_CLIST(ctree)->rows))
+  if ((row >= GTK_CLIST(ctree)->rows))
     return NULL;
  
   return GTK_CTREE_NODE (g_list_nth (GTK_CLIST (ctree)->row_list, row));
@@ -4640,9 +4615,9 @@ gtk_ctree_node_set_pixmap (GtkCTree     *ctree,
   if (column < 0 || column >= GTK_CLIST (ctree)->columns)
     return;
 
-  gdk_pixmap_ref (pixmap);
+  g_object_ref (pixmap);
   if (mask) 
-    gdk_pixmap_ref (mask);
+    g_object_ref (mask);
 
   clist = GTK_CLIST (ctree);
 
@@ -4675,9 +4650,9 @@ gtk_ctree_node_set_pixtext (GtkCTree     *ctree,
 
   if (pixmap)
     {
-      gdk_pixmap_ref (pixmap);
+      g_object_ref (pixmap);
       if (mask) 
-       gdk_pixmap_ref (mask);
+       g_object_ref (mask);
     }
 
   GTK_CLIST_GET_CLASS (clist)->set_cell_contents
@@ -4780,21 +4755,23 @@ gtk_ctree_node_set_shift (GtkCTree     *ctree,
 static void
 remove_grab (GtkCList *clist)
 {
-  if (gdk_pointer_is_grabbed () && GTK_WIDGET_HAS_GRAB (clist))
+  if (gdk_display_pointer_is_grabbed (gtk_widget_get_display (GTK_WIDGET (clist))) && 
+      GTK_WIDGET_HAS_GRAB (clist))
     {
       gtk_grab_remove (GTK_WIDGET (clist));
-      gdk_pointer_ungrab (GDK_CURRENT_TIME);
+      gdk_display_pointer_ungrab (gtk_widget_get_display (GTK_WIDGET (clist)),
+                                 GDK_CURRENT_TIME);
     }
 
   if (clist->htimer)
     {
-      gtk_timeout_remove (clist->htimer);
+      g_source_remove (clist->htimer);
       clist->htimer = 0;
     }
 
   if (clist->vtimer)
     {
-      gtk_timeout_remove (clist->vtimer);
+      g_source_remove (clist->vtimer);
       clist->vtimer = 0;
     }
 }
@@ -5110,9 +5087,9 @@ gtk_ctree_node_get_row_style (GtkCTree     *ctree,
 }
 
 void
-gtk_ctree_node_set_foreground (GtkCTree     *ctree,
-                              GtkCTreeNode *node,
-                              GdkColor     *color)
+gtk_ctree_node_set_foreground (GtkCTree       *ctree,
+                              GtkCTreeNode   *node,
+                              const GdkColor *color)
 {
   g_return_if_fail (GTK_IS_CTREE (ctree));
   g_return_if_fail (node != NULL);
@@ -5122,8 +5099,9 @@ gtk_ctree_node_set_foreground (GtkCTree     *ctree,
       GTK_CTREE_ROW (node)->row.foreground = *color;
       GTK_CTREE_ROW (node)->row.fg_set = TRUE;
       if (GTK_WIDGET_REALIZED (ctree))
-       gdk_color_alloc (gtk_widget_get_colormap (GTK_WIDGET (ctree)),
-                        &GTK_CTREE_ROW (node)->row.foreground);
+       gdk_colormap_alloc_color (gtk_widget_get_colormap (GTK_WIDGET (ctree)),
+                                  &GTK_CTREE_ROW (node)->row.foreground,
+                                  FALSE, TRUE);
     }
   else
     GTK_CTREE_ROW (node)->row.fg_set = FALSE;
@@ -5132,9 +5110,9 @@ gtk_ctree_node_set_foreground (GtkCTree     *ctree,
 }
 
 void
-gtk_ctree_node_set_background (GtkCTree     *ctree,
-                              GtkCTreeNode *node,
-                              GdkColor     *color)
+gtk_ctree_node_set_background (GtkCTree       *ctree,
+                              GtkCTreeNode   *node,
+                              const GdkColor *color)
 {
   g_return_if_fail (GTK_IS_CTREE (ctree));
   g_return_if_fail (node != NULL);
@@ -5144,8 +5122,9 @@ gtk_ctree_node_set_background (GtkCTree     *ctree,
       GTK_CTREE_ROW (node)->row.background = *color;
       GTK_CTREE_ROW (node)->row.bg_set = TRUE;
       if (GTK_WIDGET_REALIZED (ctree))
-       gdk_color_alloc (gtk_widget_get_colormap (GTK_WIDGET (ctree)),
-                        &GTK_CTREE_ROW (node)->row.background);
+       gdk_colormap_alloc_color (gtk_widget_get_colormap (GTK_WIDGET (ctree)),
+                                  &GTK_CTREE_ROW (node)->row.background,
+                                  FALSE, TRUE);
     }
   else
     GTK_CTREE_ROW (node)->row.bg_set = FALSE;
@@ -5162,12 +5141,12 @@ gtk_ctree_node_set_row_data (GtkCTree     *ctree,
 }
 
 void
-gtk_ctree_node_set_row_data_full (GtkCTree         *ctree,
-                                 GtkCTreeNode     *node,
-                                 gpointer          data,
-                                 GtkDestroyNotify  destroy)
+gtk_ctree_node_set_row_data_full (GtkCTree       *ctree,
+                                 GtkCTreeNode   *node,
+                                 gpointer        data,
+                                 GDestroyNotify  destroy)
 {
-  GtkDestroyNotify dnotify;
+  GDestroyNotify dnotify;
   gpointer ddata;
   
   g_return_if_fail (GTK_IS_CTREE (ctree));
@@ -5215,8 +5194,9 @@ gtk_ctree_node_moveto (GtkCTree     *ctree,
   gtk_clist_moveto (clist, row, column, row_align, col_align);
 }
 
-GtkVisibility gtk_ctree_node_is_visible (GtkCTree     *ctree,
-                                         GtkCTreeNode *node)
+GtkVisibility 
+gtk_ctree_node_is_visible (GtkCTree     *ctree,
+                           GtkCTreeNode *node)
 {
   gint row;
   
@@ -5337,6 +5317,8 @@ gtk_ctree_set_line_style (GtkCTree          *ctree,
 
   if (GTK_WIDGET_REALIZED (ctree))
     {
+      gint8 dashes[] = { 1, 1 };
+
       switch (line_style)
        {
        case GTK_CTREE_LINES_SOLID:
@@ -5348,7 +5330,7 @@ gtk_ctree_set_line_style (GtkCTree          *ctree,
          if (GTK_WIDGET_REALIZED (ctree))
            gdk_gc_set_line_attributes (ctree->lines_gc, 1, 
                                        GDK_LINE_ON_OFF_DASH, GDK_CAP_BUTT, GDK_JOIN_MITER);
-         gdk_gc_set_dashes (ctree->lines_gc, 0, "\1\1", 2);
+         gdk_gc_set_dashes (ctree->lines_gc, 0, dashes, G_N_ELEMENTS (dashes));
          break;
        case GTK_CTREE_LINES_TABBED:
          if (GTK_WIDGET_REALIZED (ctree))
@@ -5975,12 +5957,12 @@ gtk_ctree_drag_motion (GtkWidget      *widget,
   if (GTK_CLIST_REORDERABLE (clist))
     {
       GList *list;
-      GdkAtom atom = gdk_atom_intern ("gtk-clist-drag-reorder", FALSE);
+      GdkAtom atom = gdk_atom_intern_static_string ("gtk-clist-drag-reorder");
 
       list = context->targets;
       while (list)
        {
-         if (atom == GPOINTER_TO_INT (list->data))
+         if (atom == GDK_POINTER_TO_ATOM (list->data))
            break;
          list = list->next;
        }
@@ -6063,8 +6045,8 @@ gtk_ctree_drag_data_received (GtkWidget        *widget,
   if (GTK_CLIST_REORDERABLE (clist) &&
       gtk_drag_get_source_widget (context) == widget &&
       selection_data->target ==
-      gdk_atom_intern ("gtk-clist-drag-reorder", FALSE) &&
-      selection_data->format == GTK_TYPE_POINTER &&
+      gdk_atom_intern_static_string ("gtk-clist-drag-reorder") &&
+      selection_data->format == 8 &&
       selection_data->length == sizeof (GtkCListCellInfo))
     {
       GtkCListCellInfo *source_info;
@@ -6116,3 +6098,16 @@ gtk_ctree_drag_data_received (GtkWidget        *widget,
        }
     }
 }
+
+GType
+gtk_ctree_node_get_type (void)
+{
+  static GType our_type = 0;
+  
+  if (our_type == 0)
+    our_type = g_pointer_type_register_static ("GtkCTreeNode");
+
+  return our_type;
+}
+
+#include "gtkaliasdef.c"