]> Pileus Git - ~andy/gtk/blobdiff - gtk/gtkclist.h
Use the correct screen for getting the height. (Fix from Stephen Browne,
[~andy/gtk] / gtk / gtkclist.h
index ef306c2668ccb2a1ae56ae8816c5d10ed20ca061..ae7cbaed6b9ba02fef7c9a001e1b2c847f647b91 100644 (file)
@@ -3,19 +3,30 @@
  * Copyright (C) 1997-1998 Jay Painter <jpaint@serv.net><jpaint@gimp.org>
  *
  * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
+ * modify it under the terms of the GNU Lesser General Public
  * License as published by the Free Software Foundation; either
  * version 2 of the License, or (at your option) any later version.
  *
  * This library is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
+ * Lesser General Public License for more details.
  *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the Free
- * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
  */
+
+/*
+ * Modified by the GTK+ Team and others 1997-2000.  See the AUTHORS
+ * file for a list of people on the GTK+ Team.  See the ChangeLog
+ * files for a list of changes.  These files are distributed with
+ * GTK+ at ftp://ftp.gtk.org/pub/gtk/. 
+ */
+
+#ifndef GTK_DISABLE_DEPRECATED
+
 #ifndef __GTK_CLIST_H__
 #define __GTK_CLIST_H__
 
 #include <gtk/gtkbutton.h>
 #include <gtk/gtkhscrollbar.h>
 #include <gtk/gtkvscrollbar.h>
+#include <gtk/gtkenums.h>
 
 #ifdef __cplusplus
-extern "C"
-{
-#endif                         /* __cplusplus */
+extern "C" {
+#endif /* __cplusplus */
 
 /* clist flags */
-enum                    
-{
-  CLIST_FROZEN          = 1 << 0,                                     
-  CLIST_IN_DRAG         = 1 << 1,                                        
-  CLIST_ROW_HEIGHT_SET  = 1 << 2,
-  CLIST_SHOW_TITLES     = 1 << 3
+enum {
+  GTK_CLIST_IN_DRAG             = 1 <<  0,
+  GTK_CLIST_ROW_HEIGHT_SET      = 1 <<  1,
+  GTK_CLIST_SHOW_TITLES         = 1 <<  2,
+  /* Unused */
+  GTK_CLIST_ADD_MODE            = 1 <<  4,
+  GTK_CLIST_AUTO_SORT           = 1 <<  5,
+  GTK_CLIST_AUTO_RESIZE_BLOCKED = 1 <<  6,
+  GTK_CLIST_REORDERABLE         = 1 <<  7,
+  GTK_CLIST_USE_DRAG_ICONS      = 1 <<  8,
+  GTK_CLIST_DRAW_DRAG_LINE      = 1 <<  9,
+  GTK_CLIST_DRAW_DRAG_RECT      = 1 << 10
 }; 
 
 /* cell types */
@@ -51,18 +68,46 @@ typedef enum
   GTK_CELL_WIDGET
 } GtkCellType;
 
-#define GTK_CLIST(obj)          GTK_CHECK_CAST (obj, gtk_clist_get_type (), GtkCList)
-#define GTK_CLIST_CLASS(klass)  GTK_CHECK_CLASS_CAST (klass, gtk_clist_get_type (), GtkCListClass)
-#define GTK_IS_CLIST(obj)       GTK_CHECK_TYPE (obj, gtk_clist_get_type ())
+typedef enum
+{
+  GTK_CLIST_DRAG_NONE,
+  GTK_CLIST_DRAG_BEFORE,
+  GTK_CLIST_DRAG_INTO,
+  GTK_CLIST_DRAG_AFTER
+} GtkCListDragPos;
+
+typedef enum
+{
+  GTK_BUTTON_IGNORED = 0,
+  GTK_BUTTON_SELECTS = 1 << 0,
+  GTK_BUTTON_DRAGS   = 1 << 1,
+  GTK_BUTTON_EXPANDS = 1 << 2
+} GtkButtonAction;
+
+#define GTK_TYPE_CLIST            (gtk_clist_get_type ())
+#define GTK_CLIST(obj)            (GTK_CHECK_CAST ((obj), GTK_TYPE_CLIST, GtkCList))
+#define GTK_CLIST_CLASS(klass)    (GTK_CHECK_CLASS_CAST ((klass), GTK_TYPE_CLIST, GtkCListClass))
+#define GTK_IS_CLIST(obj)         (GTK_CHECK_TYPE ((obj), GTK_TYPE_CLIST))
+#define GTK_IS_CLIST_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), GTK_TYPE_CLIST))
+#define GTK_CLIST_GET_CLASS(obj)  (GTK_CHECK_GET_CLASS ((obj), GTK_TYPE_CLIST, GtkCListClass))
 
-#define GTK_CLIST_FLAGS(clist)             (GTK_CLIST (clist)->flags)
-#define GTK_CLIST_SET_FLAGS(clist,flag)    (GTK_CLIST_FLAGS (clist) |= (flag))
-#define GTK_CLIST_UNSET_FLAGS(clist,flag)  (GTK_CLIST_FLAGS (clist) &= ~(flag))
 
-#define GTK_CLIST_FROZEN(clist)            (GTK_CLIST_FLAGS (clist) & CLIST_FROZEN)
-#define GTK_CLIST_IN_DRAG(clist)           (GTK_CLIST_FLAGS (clist) & CLIST_IN_DRAG)
-#define GTK_CLIST_ROW_HEIGHT_SET(clist)    (GTK_CLIST_FLAGS (clist) & CLIST_ROW_HEIGHT_SET)
-#define GTK_CLIST_SHOW_TITLES(clist)       (GTK_CLIST_FLAGS (clist) & CLIST_SHOW_TITLES)
+#define GTK_CLIST_FLAGS(clist)             (GTK_CLIST (clist)->flags)
+#define GTK_CLIST_SET_FLAG(clist,flag)     (GTK_CLIST_FLAGS (clist) |= (GTK_ ## flag))
+#define GTK_CLIST_UNSET_FLAG(clist,flag)   (GTK_CLIST_FLAGS (clist) &= ~(GTK_ ## flag))
+
+#define GTK_CLIST_IN_DRAG(clist)           (GTK_CLIST_FLAGS (clist) & GTK_CLIST_IN_DRAG)
+#define GTK_CLIST_ROW_HEIGHT_SET(clist)    (GTK_CLIST_FLAGS (clist) & GTK_CLIST_ROW_HEIGHT_SET)
+#define GTK_CLIST_SHOW_TITLES(clist)       (GTK_CLIST_FLAGS (clist) & GTK_CLIST_SHOW_TITLES)
+#define GTK_CLIST_ADD_MODE(clist)          (GTK_CLIST_FLAGS (clist) & GTK_CLIST_ADD_MODE)
+#define GTK_CLIST_AUTO_SORT(clist)         (GTK_CLIST_FLAGS (clist) & GTK_CLIST_AUTO_SORT)
+#define GTK_CLIST_AUTO_RESIZE_BLOCKED(clist) (GTK_CLIST_FLAGS (clist) & GTK_CLIST_AUTO_RESIZE_BLOCKED)
+#define GTK_CLIST_REORDERABLE(clist)       (GTK_CLIST_FLAGS (clist) & GTK_CLIST_REORDERABLE)
+#define GTK_CLIST_USE_DRAG_ICONS(clist)    (GTK_CLIST_FLAGS (clist) & GTK_CLIST_USE_DRAG_ICONS)
+#define GTK_CLIST_DRAW_DRAG_LINE(clist)    (GTK_CLIST_FLAGS (clist) & GTK_CLIST_DRAW_DRAG_LINE)
+#define GTK_CLIST_DRAW_DRAG_RECT(clist)    (GTK_CLIST_FLAGS (clist) & GTK_CLIST_DRAW_DRAG_RECT)
+
+#define GTK_CLIST_ROW(_glist_) ((GtkCListRow *)((_glist_)->data))
 
 /* pointer casting for cells */
 #define GTK_CELL_TEXT(cell)     (((GtkCellText *) &(cell)))
@@ -81,23 +126,43 @@ typedef struct _GtkCellPixmap GtkCellPixmap;
 typedef struct _GtkCellPixText GtkCellPixText;
 typedef struct _GtkCellWidget GtkCellWidget;
 
+typedef gint (*GtkCListCompareFunc) (GtkCList     *clist,
+                                    gconstpointer ptr1,
+                                    gconstpointer ptr2);
+
+typedef struct _GtkCListCellInfo GtkCListCellInfo;
+typedef struct _GtkCListDestInfo GtkCListDestInfo;
+
+struct _GtkCListCellInfo
+{
+  gint row;
+  gint column;
+};
+
+struct _GtkCListDestInfo
+{
+  GtkCListCellInfo cell;
+  GtkCListDragPos  insert_pos;
+};
+
 struct _GtkCList
 {
   GtkContainer container;
   
-  guint8 flags;
-
+  guint16 flags;
+  
   /* mem chunks */
   GMemChunk *row_mem_chunk;
   GMemChunk *cell_mem_chunk;
 
+  guint freeze_count;
+  
   /* allocation rectangle after the conatiner_border_width
    * and the width of the shadow border */
   GdkRectangle internal_allocation;
-
+  
   /* rows */
   gint rows;
-  gint row_center_offset;
   gint row_height;
   GList *row_list;
   GList *row_list_end;
@@ -110,7 +175,7 @@ struct _GtkCList
   /* dynamicly allocated array of column structures */
   GtkCListColumn *column;
   
-  /*the scrolling window and it's height and width to
+  /* the scrolling window and its height and width to
    * make things a little speedier */
   GdkWindow *clist_window;
   gint clist_window_width;
@@ -125,46 +190,137 @@ struct _GtkCList
   
   /* the list's selection mode (gtkenums.h) */
   GtkSelectionMode selection_mode;
-
+  
   /* list of selected rows */
   GList *selection;
+  GList *selection_end;
+  
+  GList *undo_selection;
+  GList *undo_unselection;
+  gint undo_anchor;
+  
+  /* mouse buttons */
+  guint8 button_actions[5];
 
-  /* scrollbars */
-  GtkWidget *vscrollbar;
-  GtkWidget *hscrollbar;
-  guint8 vscrollbar_policy;
-  guint8 hscrollbar_policy;
+  guint8 drag_button;
 
+  /* dnd */
+  GtkCListCellInfo click_cell;
+
+  /* scroll adjustments */
+  GtkAdjustment *hadjustment;
+  GtkAdjustment *vadjustment;
+  
   /* xor GC for the vertical drag line */
   GdkGC *xor_gc;
-
+  
   /* gc for drawing unselected cells */
   GdkGC *fg_gc;
   GdkGC *bg_gc;
-
+  
   /* cursor used to indicate dragging */
   GdkCursor *cursor_drag;
-
+  
   /* the current x-pixel location of the xor-drag line */
   gint x_drag;
+  
+  /* focus handling */
+  gint focus_row;
+
+  gint focus_header_column;
+  
+  /* dragging the selection */
+  gint anchor;
+  GtkStateType anchor_state;
+  gint drag_pos;
+  gint htimer;
+  gint vtimer;
+  
+  GtkSortType sort_type;
+  GtkCListCompareFunc compare;
+  gint sort_column;
+
+  gint drag_highlight_row;
+  GtkCListDragPos drag_highlight_pos;
 };
 
 struct _GtkCListClass
 {
   GtkContainerClass parent_class;
   
-  void (*select_row) (GtkCList * clist,
-                     gint row,
-                     gint column,
-                     GdkEventButton * event);
-  void (*unselect_row) (GtkCList * clist,
-                       gint row,
-                       gint column,
-                       GdkEventButton * event);
-  void (*click_column) (GtkCList * clist,
-                       gint column);
-
-  gint scrollbar_spacing;
+  void  (*set_scroll_adjustments) (GtkCList       *clist,
+                                  GtkAdjustment  *hadjustment,
+                                  GtkAdjustment  *vadjustment);
+  void   (*refresh)             (GtkCList       *clist);
+  void   (*select_row)          (GtkCList       *clist,
+                                gint            row,
+                                gint            column,
+                                GdkEvent       *event);
+  void   (*unselect_row)        (GtkCList       *clist,
+                                gint            row,
+                                gint            column,
+                                GdkEvent       *event);
+  void   (*row_move)            (GtkCList       *clist,
+                                gint            source_row,
+                                gint            dest_row);
+  void   (*click_column)        (GtkCList       *clist,
+                                gint            column);
+  void   (*resize_column)       (GtkCList       *clist,
+                                gint            column,
+                                 gint            width);
+  void   (*toggle_focus_row)    (GtkCList       *clist);
+  void   (*select_all)          (GtkCList       *clist);
+  void   (*unselect_all)        (GtkCList       *clist);
+  void   (*undo_selection)      (GtkCList       *clist);
+  void   (*start_selection)     (GtkCList       *clist);
+  void   (*end_selection)       (GtkCList       *clist);
+  void   (*extend_selection)    (GtkCList       *clist,
+                                GtkScrollType   scroll_type,
+                                gfloat          position,
+                                gboolean        auto_start_selection);
+  void   (*scroll_horizontal)   (GtkCList       *clist,
+                                GtkScrollType   scroll_type,
+                                gfloat          position);
+  void   (*scroll_vertical)     (GtkCList       *clist,
+                                GtkScrollType   scroll_type,
+                                gfloat          position);
+  void   (*toggle_add_mode)     (GtkCList       *clist);
+  void   (*abort_column_resize) (GtkCList       *clist);
+  void   (*resync_selection)    (GtkCList       *clist,
+                                GdkEvent       *event);
+  GList* (*selection_find)      (GtkCList       *clist,
+                                gint            row_number,
+                                GList          *row_list_element);
+  void   (*draw_row)            (GtkCList       *clist,
+                                GdkRectangle   *area,
+                                gint            row,
+                                GtkCListRow    *clist_row);
+  void   (*draw_drag_highlight) (GtkCList        *clist,
+                                GtkCListRow     *target_row,
+                                gint             target_row_number,
+                                GtkCListDragPos  drag_pos);
+  void   (*clear)               (GtkCList       *clist);
+  void   (*fake_unselect_all)   (GtkCList       *clist,
+                                gint            row);
+  void   (*sort_list)           (GtkCList       *clist);
+  gint   (*insert_row)          (GtkCList       *clist,
+                                gint            row,
+                                gchar          *text[]);
+  void   (*remove_row)          (GtkCList       *clist,
+                                gint            row);
+  void   (*set_cell_contents)   (GtkCList       *clist,
+                                GtkCListRow    *clist_row,
+                                gint            column,
+                                GtkCellType     type,
+                                const gchar    *text,
+                                guint8          spacing,
+                                GdkPixmap      *pixmap,
+                                GdkBitmap      *mask);
+  void   (*cell_size_request)   (GtkCList       *clist,
+                                GtkCListRow    *clist_row,
+                                gint            column,
+                                GtkRequisition *requisition);
+
 };
 
 struct _GtkCListColumn
@@ -174,26 +330,35 @@ struct _GtkCListColumn
   
   GtkWidget *button;
   GdkWindow *window;
-
+  
   gint width;
+  gint min_width;
+  gint max_width;
   GtkJustification justification;
-
-  gint width_set : 1;
+  
+  guint visible        : 1;  
+  guint width_set      : 1;
+  guint resizeable     : 1;
+  guint auto_resize    : 1;
+  guint button_passive : 1;
 };
 
 struct _GtkCListRow
 {
   GtkCell *cell;
   GtkStateType state;
-
+  
   GdkColor foreground;
   GdkColor background;
+  
+  GtkStyle *style;
 
   gpointer data;
   GtkDestroyNotify destroy;
-
-  gint fg_set : 1;
-  gint bg_set : 1;
+  
+  guint fg_set     : 1;
+  guint bg_set     : 1;
+  guint selectable : 1;
 };
 
 /* Cell Structures */
@@ -201,9 +366,11 @@ struct _GtkCellText
 {
   GtkCellType type;
   
-  gint vertical;
-  gint horizontal;
+  gint16 vertical;
+  gint16 horizontal;
   
+  GtkStyle *style;
+
   gchar *text;
 };
 
@@ -211,9 +378,11 @@ struct _GtkCellPixmap
 {
   GtkCellType type;
   
-  gint vertical;
-  gint horizontal;
+  gint16 vertical;
+  gint16 horizontal;
   
+  GtkStyle *style;
+
   GdkPixmap *pixmap;
   GdkBitmap *mask;
 };
@@ -222,9 +391,11 @@ struct _GtkCellPixText
 {
   GtkCellType type;
   
-  gint vertical;
-  gint horizontal;
+  gint16 vertical;
+  gint16 horizontal;
   
+  GtkStyle *style;
+
   gchar *text;
   guint8 spacing;
   GdkPixmap *pixmap;
@@ -235,247 +406,389 @@ struct _GtkCellWidget
 {
   GtkCellType type;
   
-  gint vertical;
-  gint horizontal;
+  gint16 vertical;
+  gint16 horizontal;
   
+  GtkStyle *style;
+
   GtkWidget *widget;
 };
 
 struct _GtkCell
 {
   GtkCellType type;
-
-  gint vertical;
-  gint horizontal;
+  
+  gint16 vertical;
+  gint16 horizontal;
+  
+  GtkStyle *style;
 
   union {
     gchar *text;
-
+    
     struct {
       GdkPixmap *pixmap;
       GdkBitmap *mask;
     } pm;
-
+    
     struct {
       gchar *text;
       guint8 spacing;
       GdkPixmap *pixmap;
       GdkBitmap *mask;
     } pt;
-
+    
     GtkWidget *widget;
   } u;
 };
 
-guint gtk_clist_get_type (void);
-
-/* constructers useful for gtk-- wrappers */
-void gtk_clist_construct (GtkCList * clist,
-                         gint columns,
-                         gchar * titles[]);
+GtkType gtk_clist_get_type (void) G_GNUC_CONST;
 
 /* create a new GtkCList */
-GtkWidget *gtk_clist_new (gint columns);
-GtkWidget *gtk_clist_new_with_titles (gint columns,
-                                     gchar * titles[]);
+GtkWidget* gtk_clist_new             (gint   columns);
+GtkWidget* gtk_clist_new_with_titles (gint   columns,
+                                     gchar *titles[]);
+
+/* set adjustments of clist */
+void gtk_clist_set_hadjustment (GtkCList      *clist,
+                               GtkAdjustment *adjustment);
+void gtk_clist_set_vadjustment (GtkCList      *clist,
+                               GtkAdjustment *adjustment);
+
+/* get adjustments of clist */
+GtkAdjustment* gtk_clist_get_hadjustment (GtkCList *clist);
+GtkAdjustment* gtk_clist_get_vadjustment (GtkCList *clist);
 
 /* set the border style of the clist */
-void gtk_clist_set_border (GtkCList * clist,
-                          GtkShadowType border);
+void gtk_clist_set_shadow_type (GtkCList      *clist,
+                               GtkShadowType  type);
 
 /* set the clist's selection mode */
-void gtk_clist_set_selection_mode (GtkCList * clist,
-                                  GtkSelectionMode mode);
-
-/* set policy on the scrollbar, to either show them all the time
- * or show them only when they are needed, ie., when there is more than one page
- * of information */
-void gtk_clist_set_policy (GtkCList * clist,
-                          GtkPolicyType vscrollbar_policy,
-                          GtkPolicyType hscrollbar_policy);
-
-/* freeze all visual updates of the list, and then thaw the list after you have made
- * a number of changes and the updates wil occure in a more efficent mannor than if
- * you made them on a unfrozen list */
-void gtk_clist_freeze (GtkCList * clist);
-void gtk_clist_thaw (GtkCList * clist);
+void gtk_clist_set_selection_mode (GtkCList         *clist,
+                                  GtkSelectionMode  mode);
+
+/* enable clists reorder ability */
+void gtk_clist_set_reorderable (GtkCList *clist,
+                               gboolean  reorderable);
+void gtk_clist_set_use_drag_icons (GtkCList *clist,
+                                  gboolean  use_icons);
+void gtk_clist_set_button_actions (GtkCList *clist,
+                                  guint     button,
+                                  guint8    button_actions);
+
+/* freeze all visual updates of the list, and then thaw the list after
+ * you have made a number of changes and the updates wil occure in a
+ * more efficent mannor than if you made them on a unfrozen list
+ */
+void gtk_clist_freeze (GtkCList *clist);
+void gtk_clist_thaw   (GtkCList *clist);
 
 /* show and hide the column title buttons */
-void gtk_clist_column_titles_show (GtkCList * clist);
-void gtk_clist_column_titles_hide (GtkCList * clist);
+void gtk_clist_column_titles_show (GtkCList *clist);
+void gtk_clist_column_titles_hide (GtkCList *clist);
 
 /* set the column title to be a active title (responds to button presses, 
  * prelights, and grabs keyboard focus), or passive where it acts as just
- * a title */
-void gtk_clist_column_title_active (GtkCList * clist,
-                                    gint column);
-void gtk_clist_column_title_passive (GtkCList * clist,
-                                    gint column);
-void gtk_clist_column_titles_active (GtkCList * clist);
-void gtk_clist_column_titles_passive (GtkCList * clist);
+ * a title
+ */
+void gtk_clist_column_title_active   (GtkCList *clist,
+                                     gint      column);
+void gtk_clist_column_title_passive  (GtkCList *clist,
+                                     gint      column);
+void gtk_clist_column_titles_active  (GtkCList *clist);
+void gtk_clist_column_titles_passive (GtkCList *clist);
 
 /* set the title in the column title button */
-void gtk_clist_set_column_title (GtkCList * clist,
-                                gint column,
-                                gchar * title);
+void gtk_clist_set_column_title (GtkCList    *clist,
+                                gint         column,
+                                const gchar *title);
+
+/* returns the title of column. Returns NULL if title is not set */
+gchar * gtk_clist_get_column_title (GtkCList *clist,
+                                   gint      column);
 
 /* set a widget instead of a title for the column title button */
-void gtk_clist_set_column_widget (GtkCList * clist,
-                                 gint column,
-                                 GtkWidget * widget);
+void gtk_clist_set_column_widget (GtkCList  *clist,
+                                 gint       column,
+                                 GtkWidget *widget);
+
+/* returns the column widget */
+GtkWidget * gtk_clist_get_column_widget (GtkCList *clist,
+                                        gint      column);
 
 /* set the justification on a column */
-void gtk_clist_set_column_justification (GtkCList * clist,
-                                        gint column,
-                                        GtkJustification justification);
+void gtk_clist_set_column_justification (GtkCList         *clist,
+                                        gint              column,
+                                        GtkJustification  justification);
+
+/* set visibility of a column */
+void gtk_clist_set_column_visibility (GtkCList *clist,
+                                     gint      column,
+                                     gboolean  visible);
+
+/* enable/disable column resize operations by mouse */
+void gtk_clist_set_column_resizeable (GtkCList *clist,
+                                     gint      column,
+                                     gboolean  resizeable);
+
+/* resize column automatically to its optimal width */
+void gtk_clist_set_column_auto_resize (GtkCList *clist,
+                                      gint      column,
+                                      gboolean  auto_resize);
+
+gint gtk_clist_columns_autosize (GtkCList *clist);
+
+/* return the optimal column width, i.e. maximum of all cell widths */
+gint gtk_clist_optimal_column_width (GtkCList *clist,
+                                    gint      column);
 
 /* set the pixel width of a column; this is a necessary step in
  * creating a CList because otherwise the column width is chozen from
- * the width of the column title, which will never be right */
-void gtk_clist_set_column_width (GtkCList * clist,
-                                gint column,
-                                gint width);
-
-/* change the height of the rows, the default is the hight of the current
- * font */
-void gtk_clist_set_row_height (GtkCList * clist,
-                              gint height);
-
-/* scroll the viewing area of the list to the given column
- * and row; row_align and col_align are between 0-1 representing the
- * location the row should appear on the screnn, 0.0 being top or left,
- * 1.0 being bottom or right; if row or column is -1 then then there
- * is no change */
-void gtk_clist_moveto (GtkCList * clist,
-                      gint row,
-                      gint column,
-                      gfloat row_align,
-                      gfloat col_align);
-
-/* returns true if the row is visible */
-gint gtk_clist_row_is_visible (GtkCList * clist,
-                              gint row);
+ * the width of the column title, which will never be right
+ */
+void gtk_clist_set_column_width (GtkCList *clist,
+                                gint      column,
+                                gint      width);
+
+/* set column minimum/maximum width. min/max_width < 0 => no restriction */
+void gtk_clist_set_column_min_width (GtkCList *clist,
+                                    gint      column,
+                                    gint      min_width);
+void gtk_clist_set_column_max_width (GtkCList *clist,
+                                    gint      column,
+                                    gint      max_width);
+
+/* change the height of the rows, the default (height=0) is
+ * the hight of the current font.
+ */
+void gtk_clist_set_row_height (GtkCList *clist,
+                              guint     height);
+
+/* scroll the viewing area of the list to the given column and row;
+ * row_align and col_align are between 0-1 representing the location the
+ * row should appear on the screnn, 0.0 being top or left, 1.0 being
+ * bottom or right; if row or column is -1 then then there is no change
+ */
+void gtk_clist_moveto (GtkCList *clist,
+                      gint      row,
+                      gint      column,
+                      gfloat    row_align,
+                      gfloat    col_align);
+
+/* returns whether the row is visible */
+GtkVisibility gtk_clist_row_is_visible (GtkCList *clist,
+                                       gint      row);
 
 /* returns the cell type */
-GtkCellType gtk_clist_get_cell_type (GtkCList * clist,
-                                    gint row,
-                                    gint column);
+GtkCellType gtk_clist_get_cell_type (GtkCList *clist,
+                                    gint      row,
+                                    gint      column);
 
-/* sets a given cell's text, replacing it's current contents */
-void gtk_clist_set_text (GtkCList clist,
-                        gint row,
-                        gint column,
-                        gchar * text);
+/* sets a given cell's text, replacing its current contents */
+void gtk_clist_set_text (GtkCList    *clist,
+                        gint         row,
+                        gint         column,
+                        const gchar *text);
 
 /* for the "get" functions, any of the return pointer can be
- * NULL if you are not interested */
-gint gtk_clist_get_text (GtkCList * clist,
-                        gint row,
-                        gint column,
-                        gchar ** text);
-
-/* sets a given cell's pixmap, replacing it's current contents */
-void gtk_clist_set_pixmap (GtkCList * clist,
-                          gint row,
-                          gint column,
-                          GdkPixmap * pixmap,
-                          GdkBitmap * mask);
-
-gint gtk_clist_get_pixmap (GtkCList * clist,
-                          gint row,
-                          gint column,
-                          GdkPixmap ** pixmap,
-                          GdkBitmap ** mask);
-
-/* sets a given cell's pixmap and text, replacing it's current contents */
-void gtk_clist_set_pixtext (GtkCList * clist,
-                           gint row,
-                           gint column,
-                           gchar * text,
-                           guint8 spacing,
-                           GdkPixmap * pixmap,
-                           GdkBitmap * mask);
-
-gint gtk_clist_get_pixtext (GtkCList * clist,
-                           gint row,
-                           gint column,
-                           gchar ** text,
-                           guint8 * spacing,
-                           GdkPixmap ** pixmap,
-                           GdkBitmap ** mask);
-
-/* sets the foreground color of a row, the colar must already
- * be allocated */
-void gtk_clist_set_foreground (GtkCList * clist,
-                              gint row,
-                              GdkColor * color);
-
-/* sets the background color of a row, the colar must already
- * be allocated */
-void gtk_clist_set_background (GtkCList * clist,
-                              gint row,
-                              GdkColor * color);
+ * NULL if you are not interested
+ */
+gint gtk_clist_get_text (GtkCList  *clist,
+                        gint       row,
+                        gint       column,
+                        gchar    **text);
+
+/* sets a given cell's pixmap, replacing its current contents */
+void gtk_clist_set_pixmap (GtkCList  *clist,
+                          gint       row,
+                          gint       column,
+                          GdkPixmap *pixmap,
+                          GdkBitmap *mask);
+
+gint gtk_clist_get_pixmap (GtkCList   *clist,
+                          gint        row,
+                          gint        column,
+                          GdkPixmap **pixmap,
+                          GdkBitmap **mask);
+
+/* sets a given cell's pixmap and text, replacing its current contents */
+void gtk_clist_set_pixtext (GtkCList    *clist,
+                           gint         row,
+                           gint         column,
+                           const gchar *text,
+                           guint8       spacing,
+                           GdkPixmap   *pixmap,
+                           GdkBitmap   *mask);
+
+gint gtk_clist_get_pixtext (GtkCList   *clist,
+                           gint        row,
+                           gint        column,
+                           gchar     **text,
+                           guint8     *spacing,
+                           GdkPixmap **pixmap,
+                           GdkBitmap **mask);
+
+/* sets the foreground color of a row, the color must already
+ * be allocated
+ */
+void gtk_clist_set_foreground (GtkCList *clist,
+                              gint      row,
+                              GdkColor *color);
+
+/* sets the background color of a row, the color must already
+ * be allocated
+ */
+void gtk_clist_set_background (GtkCList *clist,
+                              gint      row,
+                              GdkColor *color);
+
+/* set / get cell styles */
+void gtk_clist_set_cell_style (GtkCList *clist,
+                              gint      row,
+                              gint      column,
+                              GtkStyle *style);
+
+GtkStyle *gtk_clist_get_cell_style (GtkCList *clist,
+                                   gint      row,
+                                   gint      column);
+
+void gtk_clist_set_row_style (GtkCList *clist,
+                             gint      row,
+                             GtkStyle *style);
+
+GtkStyle *gtk_clist_get_row_style (GtkCList *clist,
+                                  gint      row);
 
 /* this sets a horizontal and vertical shift for drawing
- * the contents of a cell; it can be positive or negitive; this is
- * partuculary useful for indenting items in a column */
-void gtk_clist_set_shift (GtkCList * clist,
-                         gint row,
-                         gint column,
-                         gint vertical,
-                         gint horizontal);
-
-/* append returns the index of the row you just added, making
- * it easier to append and modify a row */
-gint gtk_clist_append (GtkCList * clist,
-                      gchar * text[]);
-
-/* inserts a row at index row */
-void gtk_clist_insert (GtkCList * clist,
-                      gint row,
-                      gchar * text[]);
+ * the contents of a cell; it can be positive or negitive;
+ * this is particulary useful for indenting items in a column
+ */
+void gtk_clist_set_shift (GtkCList *clist,
+                         gint      row,
+                         gint      column,
+                         gint      vertical,
+                         gint      horizontal);
+
+/* set/get selectable flag of a single row */
+void gtk_clist_set_selectable (GtkCList *clist,
+                              gint      row,
+                              gboolean  selectable);
+gboolean gtk_clist_get_selectable (GtkCList *clist,
+                                  gint      row);
+
+/* prepend/append returns the index of the row you just added,
+ * making it easier to append and modify a row
+ */
+gint gtk_clist_prepend (GtkCList    *clist,
+                       gchar       *text[]);
+gint gtk_clist_append  (GtkCList    *clist,
+                       gchar       *text[]);
+
+/* inserts a row at index row and returns the row where it was
+ * actually inserted (may be different from "row" in auto_sort mode)
+ */
+gint gtk_clist_insert (GtkCList    *clist,
+                      gint         row,
+                      gchar       *text[]);
 
 /* removes row at index row */
-void gtk_clist_remove (GtkCList * clist,
-                      gint row);
+void gtk_clist_remove (GtkCList *clist,
+                      gint      row);
 
 /* sets a arbitrary data pointer for a given row */
-void gtk_clist_set_row_data (GtkCList * clist,
-                            gint row,
-                            gpointer data);
+void gtk_clist_set_row_data (GtkCList *clist,
+                            gint      row,
+                            gpointer  data);
 
 /* sets a data pointer for a given row with destroy notification */
-void gtk_clist_set_row_data_full (GtkCList clist,
-                                 gint row,
-                                 gpointer data,
-                                 GtkDestroyNotify destroy);
+void gtk_clist_set_row_data_full (GtkCList         *clist,
+                                 gint              row,
+                                 gpointer          data,
+                                 GtkDestroyNotify  destroy);
 
 /* returns the data set for a row */
-gpointer gtk_clist_get_row_data (GtkCList * clist,
-                                gint row);
+gpointer gtk_clist_get_row_data (GtkCList *clist,
+                                gint      row);
 
 /* givin a data pointer, find the first (and hopefully only!)
- * row that points to that data, or -1 if none do */
-gint gtk_clist_find_row_from_data (GtkCList * clist,
-                                  gpointer data);
+ * row that points to that data, or -1 if none do
+ */
+gint gtk_clist_find_row_from_data (GtkCList *clist,
+                                  gpointer  data);
 
 /* force selection of a row */
-void gtk_clist_select_row (GtkCList * clist,
-                          gint row,
-                          gint column);
+void gtk_clist_select_row (GtkCList *clist,
+                          gint      row,
+                          gint      column);
 
 /* force unselection of a row */
-void gtk_clist_unselect_row (GtkCList * clist,
-                            gint row,
-                            gint column);
+void gtk_clist_unselect_row (GtkCList *clist,
+                            gint      row,
+                            gint      column);
+
+/* undo the last select/unselect operation */
+void gtk_clist_undo_selection (GtkCList *clist);
+
+/* clear the entire list -- this is much faster than removing
+ * each item with gtk_clist_remove
+ */
+void gtk_clist_clear (GtkCList *clist);
 
-/* clear the entire list -- this is much faster than removing each item 
- * with gtk_clist_remove */
-void gtk_clist_clear (GtkCList * clist);
+/* return the row column corresponding to the x and y coordinates,
+ * the returned values are only valid if the x and y coordinates
+ * are respectively to a window == clist->clist_window
+ */
+gint gtk_clist_get_selection_info (GtkCList *clist,
+                                  gint      x,
+                                  gint      y,
+                                  gint     *row,
+                                  gint     *column);
+
+/* in multiple or extended mode, select all rows */
+void gtk_clist_select_all (GtkCList *clist);
+
+/* in all modes except browse mode, deselect all rows */
+void gtk_clist_unselect_all (GtkCList *clist);
+
+/* swap the position of two rows */
+void gtk_clist_swap_rows (GtkCList *clist,
+                         gint      row1,
+                         gint      row2);
+
+/* move row from source_row position to dest_row position */
+void gtk_clist_row_move (GtkCList *clist,
+                        gint      source_row,
+                        gint      dest_row);
+
+/* sets a compare function different to the default */
+void gtk_clist_set_compare_func (GtkCList            *clist,
+                                GtkCListCompareFunc  cmp_func);
+
+/* the column to sort by */
+void gtk_clist_set_sort_column (GtkCList *clist,
+                               gint      column);
+
+/* how to sort : ascending or descending */
+void gtk_clist_set_sort_type (GtkCList    *clist,
+                             GtkSortType  sort_type);
+
+/* sort the list with the current compare function */
+void gtk_clist_sort (GtkCList *clist);
+
+/* Automatically sort upon insertion */
+void gtk_clist_set_auto_sort (GtkCList *clist,
+                             gboolean  auto_sort);
+
+/* Private function for clist, ctree */
+
+PangoLayout *_gtk_clist_create_cell_layout (GtkCList       *clist,
+                                           GtkCListRow    *clist_row,
+                                           gint            column);
 
 #ifdef __cplusplus
 }
 #endif                         /* __cplusplus */
 
-
 #endif                         /* __GTK_CLIST_H__ */
+
+#endif /* GTK_DISABLE_DEPRECATED */