rearranged some functions (gtk_clist_set_column_auto_resize): new

Mon Oct 19 23:44:41 1998  Lars Hamann  <lars@gtk.org>

	* gtk/gtkclist.c: rearranged some functions
	(gtk_clist_set_column_auto_resize): new function. toggle auto_resize
 	flag of column
	(gtk_clist_set_column_resizeable): if resizeable disable auto_resize
	(gtk_clist_set_border): deprecated function, use
 	gtk_clist_set_shadow_type instead.
	(gtk_clist_set_shadow_type): replacement for gtk_clist_set_border
 	(adjust_scrollbars): some cleanups
	(select_row) (unselect_row): removed. replaced by equivalent
	gtk_signal_emit calls
	(add_style_data): removed, use gtk_clist_style_set instead
	(gtk_clist_style_set): fill in size data, after style was set.
 	(set_cell_contents) (gtk_clist_set_shift) (gtk_clist_set_row_style)
 	(gtk_clist_set_cell_style): auto_resize columns if needed
	(column_auto_resize): resize column if needed for auto_resize
	(real_clear): disable auto_resize while list destroy
	(resize_column): removed

	* gtk/gtkctree.c : (gtk_ctree_remove_node)
	(gtk_ctree_set_line_style) (gtk_ctree_set_expander_style)
	(gtk_ctree_node_set_row_style) (gtk_ctree_node_set_cell_style)
 	(set_cell_contents) (gtk_ctree_node_set_shift) (gtk_ctree_set_spacing)
	(real_tree_move) (gtk_ctree_set_indent) (gtk_ctree_insert_node)
	(real_tree_collapse) (real_tree_expand) (column_auto_resize):
 	auto_resize columns if needed
	(gtk_ctree_collapse_recursive) (gtk_ctree_collapse_to_depth)
	(real_clear): disable auto_resize while processing the tree

	* gtk/testgtk.c (create_clist) (create_ctree): set auto_resize
	for one column
This commit is contained in:
Lars Hamann 1998-10-19 22:46:38 +00:00 committed by Lars Hamann
parent b443f453ed
commit e45890a616
12 changed files with 3551 additions and 2566 deletions

View File

@ -1,3 +1,36 @@
Mon Oct 19 23:44:41 1998 Lars Hamann <lars@gtk.org>
* gtk/gtkclist.c: rearranged some functions
(gtk_clist_set_column_auto_resize): new function. toggle auto_resize
flag of column
(gtk_clist_set_column_resizeable): if resizeable disable auto_resize
(gtk_clist_set_border): deprecated function, use
gtk_clist_set_shadow_type instead.
(gtk_clist_set_shadow_type): replacement for gtk_clist_set_border
(adjust_scrollbars): some cleanups
(select_row) (unselect_row): removed. replaced by equivalent
gtk_signal_emit calls
(add_style_data): removed, use gtk_clist_style_set instead
(gtk_clist_style_set): fill in size data, after style was set.
(set_cell_contents) (gtk_clist_set_shift) (gtk_clist_set_row_style)
(gtk_clist_set_cell_style): auto_resize columns if needed
(column_auto_resize): resize column if needed for auto_resize
(real_clear): disable auto_resize while list destroy
(resize_column): removed
* gtk/gtkctree.c : (gtk_ctree_remove_node)
(gtk_ctree_set_line_style) (gtk_ctree_set_expander_style)
(gtk_ctree_node_set_row_style) (gtk_ctree_node_set_cell_style)
(set_cell_contents) (gtk_ctree_node_set_shift) (gtk_ctree_set_spacing)
(real_tree_move) (gtk_ctree_set_indent) (gtk_ctree_insert_node)
(real_tree_collapse) (real_tree_expand) (column_auto_resize):
auto_resize columns if needed
(gtk_ctree_collapse_recursive) (gtk_ctree_collapse_to_depth)
(real_clear): disable auto_resize while processing the tree
* gtk/testgtk.c (create_clist) (create_ctree): set auto_resize
for one column
Mon Oct 19 08:31:36 1998 Owen Taylor <otaylor@redhat.com> Mon Oct 19 08:31:36 1998 Owen Taylor <otaylor@redhat.com>
* gtk/gtkdnd.c (gtk_drag_selection_received): Fixed * gtk/gtkdnd.c (gtk_drag_selection_received): Fixed

View File

@ -1,3 +1,36 @@
Mon Oct 19 23:44:41 1998 Lars Hamann <lars@gtk.org>
* gtk/gtkclist.c: rearranged some functions
(gtk_clist_set_column_auto_resize): new function. toggle auto_resize
flag of column
(gtk_clist_set_column_resizeable): if resizeable disable auto_resize
(gtk_clist_set_border): deprecated function, use
gtk_clist_set_shadow_type instead.
(gtk_clist_set_shadow_type): replacement for gtk_clist_set_border
(adjust_scrollbars): some cleanups
(select_row) (unselect_row): removed. replaced by equivalent
gtk_signal_emit calls
(add_style_data): removed, use gtk_clist_style_set instead
(gtk_clist_style_set): fill in size data, after style was set.
(set_cell_contents) (gtk_clist_set_shift) (gtk_clist_set_row_style)
(gtk_clist_set_cell_style): auto_resize columns if needed
(column_auto_resize): resize column if needed for auto_resize
(real_clear): disable auto_resize while list destroy
(resize_column): removed
* gtk/gtkctree.c : (gtk_ctree_remove_node)
(gtk_ctree_set_line_style) (gtk_ctree_set_expander_style)
(gtk_ctree_node_set_row_style) (gtk_ctree_node_set_cell_style)
(set_cell_contents) (gtk_ctree_node_set_shift) (gtk_ctree_set_spacing)
(real_tree_move) (gtk_ctree_set_indent) (gtk_ctree_insert_node)
(real_tree_collapse) (real_tree_expand) (column_auto_resize):
auto_resize columns if needed
(gtk_ctree_collapse_recursive) (gtk_ctree_collapse_to_depth)
(real_clear): disable auto_resize while processing the tree
* gtk/testgtk.c (create_clist) (create_ctree): set auto_resize
for one column
Mon Oct 19 08:31:36 1998 Owen Taylor <otaylor@redhat.com> Mon Oct 19 08:31:36 1998 Owen Taylor <otaylor@redhat.com>
* gtk/gtkdnd.c (gtk_drag_selection_received): Fixed * gtk/gtkdnd.c (gtk_drag_selection_received): Fixed

View File

@ -1,3 +1,36 @@
Mon Oct 19 23:44:41 1998 Lars Hamann <lars@gtk.org>
* gtk/gtkclist.c: rearranged some functions
(gtk_clist_set_column_auto_resize): new function. toggle auto_resize
flag of column
(gtk_clist_set_column_resizeable): if resizeable disable auto_resize
(gtk_clist_set_border): deprecated function, use
gtk_clist_set_shadow_type instead.
(gtk_clist_set_shadow_type): replacement for gtk_clist_set_border
(adjust_scrollbars): some cleanups
(select_row) (unselect_row): removed. replaced by equivalent
gtk_signal_emit calls
(add_style_data): removed, use gtk_clist_style_set instead
(gtk_clist_style_set): fill in size data, after style was set.
(set_cell_contents) (gtk_clist_set_shift) (gtk_clist_set_row_style)
(gtk_clist_set_cell_style): auto_resize columns if needed
(column_auto_resize): resize column if needed for auto_resize
(real_clear): disable auto_resize while list destroy
(resize_column): removed
* gtk/gtkctree.c : (gtk_ctree_remove_node)
(gtk_ctree_set_line_style) (gtk_ctree_set_expander_style)
(gtk_ctree_node_set_row_style) (gtk_ctree_node_set_cell_style)
(set_cell_contents) (gtk_ctree_node_set_shift) (gtk_ctree_set_spacing)
(real_tree_move) (gtk_ctree_set_indent) (gtk_ctree_insert_node)
(real_tree_collapse) (real_tree_expand) (column_auto_resize):
auto_resize columns if needed
(gtk_ctree_collapse_recursive) (gtk_ctree_collapse_to_depth)
(real_clear): disable auto_resize while processing the tree
* gtk/testgtk.c (create_clist) (create_ctree): set auto_resize
for one column
Mon Oct 19 08:31:36 1998 Owen Taylor <otaylor@redhat.com> Mon Oct 19 08:31:36 1998 Owen Taylor <otaylor@redhat.com>
* gtk/gtkdnd.c (gtk_drag_selection_received): Fixed * gtk/gtkdnd.c (gtk_drag_selection_received): Fixed

View File

@ -1,3 +1,36 @@
Mon Oct 19 23:44:41 1998 Lars Hamann <lars@gtk.org>
* gtk/gtkclist.c: rearranged some functions
(gtk_clist_set_column_auto_resize): new function. toggle auto_resize
flag of column
(gtk_clist_set_column_resizeable): if resizeable disable auto_resize
(gtk_clist_set_border): deprecated function, use
gtk_clist_set_shadow_type instead.
(gtk_clist_set_shadow_type): replacement for gtk_clist_set_border
(adjust_scrollbars): some cleanups
(select_row) (unselect_row): removed. replaced by equivalent
gtk_signal_emit calls
(add_style_data): removed, use gtk_clist_style_set instead
(gtk_clist_style_set): fill in size data, after style was set.
(set_cell_contents) (gtk_clist_set_shift) (gtk_clist_set_row_style)
(gtk_clist_set_cell_style): auto_resize columns if needed
(column_auto_resize): resize column if needed for auto_resize
(real_clear): disable auto_resize while list destroy
(resize_column): removed
* gtk/gtkctree.c : (gtk_ctree_remove_node)
(gtk_ctree_set_line_style) (gtk_ctree_set_expander_style)
(gtk_ctree_node_set_row_style) (gtk_ctree_node_set_cell_style)
(set_cell_contents) (gtk_ctree_node_set_shift) (gtk_ctree_set_spacing)
(real_tree_move) (gtk_ctree_set_indent) (gtk_ctree_insert_node)
(real_tree_collapse) (real_tree_expand) (column_auto_resize):
auto_resize columns if needed
(gtk_ctree_collapse_recursive) (gtk_ctree_collapse_to_depth)
(real_clear): disable auto_resize while processing the tree
* gtk/testgtk.c (create_clist) (create_ctree): set auto_resize
for one column
Mon Oct 19 08:31:36 1998 Owen Taylor <otaylor@redhat.com> Mon Oct 19 08:31:36 1998 Owen Taylor <otaylor@redhat.com>
* gtk/gtkdnd.c (gtk_drag_selection_received): Fixed * gtk/gtkdnd.c (gtk_drag_selection_received): Fixed

View File

@ -1,3 +1,36 @@
Mon Oct 19 23:44:41 1998 Lars Hamann <lars@gtk.org>
* gtk/gtkclist.c: rearranged some functions
(gtk_clist_set_column_auto_resize): new function. toggle auto_resize
flag of column
(gtk_clist_set_column_resizeable): if resizeable disable auto_resize
(gtk_clist_set_border): deprecated function, use
gtk_clist_set_shadow_type instead.
(gtk_clist_set_shadow_type): replacement for gtk_clist_set_border
(adjust_scrollbars): some cleanups
(select_row) (unselect_row): removed. replaced by equivalent
gtk_signal_emit calls
(add_style_data): removed, use gtk_clist_style_set instead
(gtk_clist_style_set): fill in size data, after style was set.
(set_cell_contents) (gtk_clist_set_shift) (gtk_clist_set_row_style)
(gtk_clist_set_cell_style): auto_resize columns if needed
(column_auto_resize): resize column if needed for auto_resize
(real_clear): disable auto_resize while list destroy
(resize_column): removed
* gtk/gtkctree.c : (gtk_ctree_remove_node)
(gtk_ctree_set_line_style) (gtk_ctree_set_expander_style)
(gtk_ctree_node_set_row_style) (gtk_ctree_node_set_cell_style)
(set_cell_contents) (gtk_ctree_node_set_shift) (gtk_ctree_set_spacing)
(real_tree_move) (gtk_ctree_set_indent) (gtk_ctree_insert_node)
(real_tree_collapse) (real_tree_expand) (column_auto_resize):
auto_resize columns if needed
(gtk_ctree_collapse_recursive) (gtk_ctree_collapse_to_depth)
(real_clear): disable auto_resize while processing the tree
* gtk/testgtk.c (create_clist) (create_ctree): set auto_resize
for one column
Mon Oct 19 08:31:36 1998 Owen Taylor <otaylor@redhat.com> Mon Oct 19 08:31:36 1998 Owen Taylor <otaylor@redhat.com>
* gtk/gtkdnd.c (gtk_drag_selection_received): Fixed * gtk/gtkdnd.c (gtk_drag_selection_received): Fixed

View File

@ -1,3 +1,36 @@
Mon Oct 19 23:44:41 1998 Lars Hamann <lars@gtk.org>
* gtk/gtkclist.c: rearranged some functions
(gtk_clist_set_column_auto_resize): new function. toggle auto_resize
flag of column
(gtk_clist_set_column_resizeable): if resizeable disable auto_resize
(gtk_clist_set_border): deprecated function, use
gtk_clist_set_shadow_type instead.
(gtk_clist_set_shadow_type): replacement for gtk_clist_set_border
(adjust_scrollbars): some cleanups
(select_row) (unselect_row): removed. replaced by equivalent
gtk_signal_emit calls
(add_style_data): removed, use gtk_clist_style_set instead
(gtk_clist_style_set): fill in size data, after style was set.
(set_cell_contents) (gtk_clist_set_shift) (gtk_clist_set_row_style)
(gtk_clist_set_cell_style): auto_resize columns if needed
(column_auto_resize): resize column if needed for auto_resize
(real_clear): disable auto_resize while list destroy
(resize_column): removed
* gtk/gtkctree.c : (gtk_ctree_remove_node)
(gtk_ctree_set_line_style) (gtk_ctree_set_expander_style)
(gtk_ctree_node_set_row_style) (gtk_ctree_node_set_cell_style)
(set_cell_contents) (gtk_ctree_node_set_shift) (gtk_ctree_set_spacing)
(real_tree_move) (gtk_ctree_set_indent) (gtk_ctree_insert_node)
(real_tree_collapse) (real_tree_expand) (column_auto_resize):
auto_resize columns if needed
(gtk_ctree_collapse_recursive) (gtk_ctree_collapse_to_depth)
(real_clear): disable auto_resize while processing the tree
* gtk/testgtk.c (create_clist) (create_ctree): set auto_resize
for one column
Mon Oct 19 08:31:36 1998 Owen Taylor <otaylor@redhat.com> Mon Oct 19 08:31:36 1998 Owen Taylor <otaylor@redhat.com>
* gtk/gtkdnd.c (gtk_drag_selection_received): Fixed * gtk/gtkdnd.c (gtk_drag_selection_received): Fixed

View File

@ -1,3 +1,36 @@
Mon Oct 19 23:44:41 1998 Lars Hamann <lars@gtk.org>
* gtk/gtkclist.c: rearranged some functions
(gtk_clist_set_column_auto_resize): new function. toggle auto_resize
flag of column
(gtk_clist_set_column_resizeable): if resizeable disable auto_resize
(gtk_clist_set_border): deprecated function, use
gtk_clist_set_shadow_type instead.
(gtk_clist_set_shadow_type): replacement for gtk_clist_set_border
(adjust_scrollbars): some cleanups
(select_row) (unselect_row): removed. replaced by equivalent
gtk_signal_emit calls
(add_style_data): removed, use gtk_clist_style_set instead
(gtk_clist_style_set): fill in size data, after style was set.
(set_cell_contents) (gtk_clist_set_shift) (gtk_clist_set_row_style)
(gtk_clist_set_cell_style): auto_resize columns if needed
(column_auto_resize): resize column if needed for auto_resize
(real_clear): disable auto_resize while list destroy
(resize_column): removed
* gtk/gtkctree.c : (gtk_ctree_remove_node)
(gtk_ctree_set_line_style) (gtk_ctree_set_expander_style)
(gtk_ctree_node_set_row_style) (gtk_ctree_node_set_cell_style)
(set_cell_contents) (gtk_ctree_node_set_shift) (gtk_ctree_set_spacing)
(real_tree_move) (gtk_ctree_set_indent) (gtk_ctree_insert_node)
(real_tree_collapse) (real_tree_expand) (column_auto_resize):
auto_resize columns if needed
(gtk_ctree_collapse_recursive) (gtk_ctree_collapse_to_depth)
(real_clear): disable auto_resize while processing the tree
* gtk/testgtk.c (create_clist) (create_ctree): set auto_resize
for one column
Mon Oct 19 08:31:36 1998 Owen Taylor <otaylor@redhat.com> Mon Oct 19 08:31:36 1998 Owen Taylor <otaylor@redhat.com>
* gtk/gtkdnd.c (gtk_drag_selection_received): Fixed * gtk/gtkdnd.c (gtk_drag_selection_received): Fixed

File diff suppressed because it is too large Load Diff

View File

@ -36,15 +36,16 @@ extern "C" {
/* clist flags */ /* clist flags */
enum enum
{ {
GTK_CLIST_FROZEN = 1 << 0, GTK_CLIST_FROZEN = 1 << 0,
GTK_CLIST_IN_DRAG = 1 << 1, GTK_CLIST_IN_DRAG = 1 << 1,
GTK_CLIST_DRAG_SELECTION = 1 << 2, GTK_CLIST_DRAG_SELECTION = 1 << 2,
GTK_CLIST_ROW_HEIGHT_SET = 1 << 3, GTK_CLIST_ROW_HEIGHT_SET = 1 << 3,
GTK_CLIST_SHOW_TITLES = 1 << 4, GTK_CLIST_SHOW_TITLES = 1 << 4,
GTK_CLIST_CONSTRUCTED = 1 << 5, GTK_CLIST_CONSTRUCTED = 1 << 5,
GTK_CLIST_CHILD_HAS_FOCUS = 1 << 6, GTK_CLIST_CHILD_HAS_FOCUS = 1 << 6,
GTK_CLIST_ADD_MODE = 1 << 7, GTK_CLIST_ADD_MODE = 1 << 7,
GTK_CLIST_AUTO_SORT = 1 << 8 GTK_CLIST_AUTO_SORT = 1 << 8,
GTK_CLIST_AUTO_RESIZE_BLOCKED = 1 << 9
}; };
/* cell types */ /* cell types */
@ -76,6 +77,7 @@ typedef enum
#define GTK_CLIST_DRAG_SELECTION(clist) (GTK_CLIST_FLAGS (clist) & GTK_CLIST_DRAG_SELECTION) #define GTK_CLIST_DRAG_SELECTION(clist) (GTK_CLIST_FLAGS (clist) & GTK_CLIST_DRAG_SELECTION)
#define GTK_CLIST_ADD_MODE(clist) (GTK_CLIST_FLAGS (clist) & GTK_CLIST_ADD_MODE) #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_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_ROW(_glist_) ((GtkCListRow *)((_glist_)->data)) #define GTK_CLIST_ROW(_glist_) ((GtkCListRow *)((_glist_)->data))
@ -191,64 +193,68 @@ struct _GtkCListClass
{ {
GtkContainerClass parent_class; GtkContainerClass parent_class;
void (*select_row) (GtkCList *clist, void (*select_row) (GtkCList *clist,
gint row, gint row,
gint column, gint column,
GdkEvent *event); GdkEvent *event);
void (*unselect_row) (GtkCList *clist, void (*unselect_row) (GtkCList *clist,
gint row, gint row,
gint column, gint column,
GdkEvent *event); GdkEvent *event);
void (*click_column) (GtkCList *clist, void (*click_column) (GtkCList *clist,
gint column); gint column);
void (*resize_column) (GtkCList *clist, void (*resize_column) (GtkCList *clist,
gint column, gint column,
gint width); gint width);
void (*toggle_focus_row) (GtkCList *clist); void (*toggle_focus_row) (GtkCList *clist);
void (*select_all) (GtkCList *clist); void (*select_all) (GtkCList *clist);
void (*unselect_all) (GtkCList *clist); void (*unselect_all) (GtkCList *clist);
void (*undo_selection) (GtkCList *clist); void (*undo_selection) (GtkCList *clist);
void (*start_selection) (GtkCList *clist); void (*start_selection) (GtkCList *clist);
void (*end_selection) (GtkCList *clist); void (*end_selection) (GtkCList *clist);
void (*extend_selection) (GtkCList *clist, void (*extend_selection) (GtkCList *clist,
GtkScrollType scroll_type, GtkScrollType scroll_type,
gfloat position, gfloat position,
gboolean auto_start_selection); gboolean auto_start_selection);
void (*scroll_horizontal) (GtkCList *clist, void (*scroll_horizontal) (GtkCList *clist,
GtkScrollType scroll_type, GtkScrollType scroll_type,
gfloat position); gfloat position);
void (*scroll_vertical) (GtkCList *clist, void (*scroll_vertical) (GtkCList *clist,
GtkScrollType scroll_type, GtkScrollType scroll_type,
gfloat position); gfloat position);
void (*toggle_add_mode) (GtkCList *clist); void (*toggle_add_mode) (GtkCList *clist);
void (*abort_column_resize) (GtkCList *clist); void (*abort_column_resize) (GtkCList *clist);
void (*resync_selection) (GtkCList *clist, void (*resync_selection) (GtkCList *clist,
GdkEvent *event); GdkEvent *event);
GList* (*selection_find) (GtkCList *clist, GList* (*selection_find) (GtkCList *clist,
gint row_number, gint row_number,
GList *row_list_element); GList *row_list_element);
void (*draw_row) (GtkCList *clist, void (*draw_row) (GtkCList *clist,
GdkRectangle *area, GdkRectangle *area,
gint row, gint row,
GtkCListRow *clist_row); GtkCListRow *clist_row);
void (*clear) (GtkCList *clist); void (*clear) (GtkCList *clist);
void (*fake_unselect_all) (GtkCList *clist, void (*fake_unselect_all) (GtkCList *clist,
gint row); gint row);
void (*sort_list) (GtkCList *clist); void (*sort_list) (GtkCList *clist);
gint (*insert_row) (GtkCList *clist, gint (*insert_row) (GtkCList *clist,
gint row, gint row,
gchar *text[]); gchar *text[]);
void (*remove_row) (GtkCList *clist, void (*remove_row) (GtkCList *clist,
gint row); gint row);
void (*set_cell_contents) (GtkCList *clist, void (*set_cell_contents) (GtkCList *clist,
GtkCListRow *clist_row, GtkCListRow *clist_row,
gint column, gint column,
GtkCellType type, GtkCellType type,
const gchar *text, const gchar *text,
guint8 spacing, guint8 spacing,
GdkPixmap *pixmap, GdkPixmap *pixmap,
GdkBitmap *mask); GdkBitmap *mask);
void (*cell_size_request) (GtkCList *clist,
GtkCListRow *clist_row,
gint column,
GtkRequisition *requisition);
gint scrollbar_spacing; gint scrollbar_spacing;
}; };
@ -265,9 +271,10 @@ struct _GtkCListColumn
gint max_width; gint max_width;
GtkJustification justification; GtkJustification justification;
gint visible : 1; guint visible : 1;
gint width_set : 1; guint width_set : 1;
gint resizeable : 1; guint resizeable : 1;
guint auto_resize : 1;
}; };
struct _GtkCListRow struct _GtkCListRow
@ -283,9 +290,9 @@ struct _GtkCListRow
gpointer data; gpointer data;
GtkDestroyNotify destroy; GtkDestroyNotify destroy;
gint fg_set : 1; guint fg_set : 1;
gint bg_set : 1; guint bg_set : 1;
gint selectable : 1; guint selectable : 1;
}; };
/* Cell Structures */ /* Cell Structures */
@ -381,10 +388,14 @@ GtkWidget *gtk_clist_new (gint columns);
GtkWidget *gtk_clist_new_with_titles (gint columns, GtkWidget *gtk_clist_new_with_titles (gint columns,
gchar *titles[]); gchar *titles[]);
/* set the border style of the clist */ /* deprecated function, use gtk_clist_set_shadow_type instead. */
void gtk_clist_set_border (GtkCList *clist, void gtk_clist_set_border (GtkCList *clist,
GtkShadowType border); GtkShadowType border);
/* set the border style of the clist */
void gtk_clist_set_shadow_type (GtkCList *clist,
GtkShadowType type);
/* set the clist's selection mode */ /* set the clist's selection mode */
void gtk_clist_set_selection_mode (GtkCList *clist, void gtk_clist_set_selection_mode (GtkCList *clist,
GtkSelectionMode mode); GtkSelectionMode mode);
@ -444,6 +455,15 @@ void gtk_clist_set_column_resizeable (GtkCList *clist,
gint column, gint column,
gboolean resizeable); gboolean resizeable);
/* resize column automatically to its optimal width */
void gtk_clist_set_column_auto_resize (GtkCList *clist,
gint column,
gboolean auto_resize);
/* 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 /* set the pixel width of a column; this is a necessary step in
* creating a CList because otherwise the column width is chozen from * creating a CList because otherwise the column width is chozen from
* the width of the column title, which will never be right * the width of the column title, which will never be right
@ -546,20 +566,20 @@ void gtk_clist_set_background (GtkCList *clist,
/* set / get cell styles */ /* set / get cell styles */
void gtk_clist_set_cell_style (GtkCList *clist, void gtk_clist_set_cell_style (GtkCList *clist,
gint row, gint row,
gint column, gint column,
GtkStyle *style); GtkStyle *style);
GtkStyle *gtk_clist_get_cell_style (GtkCList *clist, GtkStyle *gtk_clist_get_cell_style (GtkCList *clist,
gint row, gint row,
gint column); gint column);
void gtk_clist_set_row_style (GtkCList *clist, void gtk_clist_set_row_style (GtkCList *clist,
gint row, gint row,
GtkStyle *style); GtkStyle *style);
GtkStyle *gtk_clist_get_row_style (GtkCList *clist, GtkStyle *gtk_clist_get_row_style (GtkCList *clist,
gint row); gint row);
/* this sets a horizontal and vertical shift for drawing /* this sets a horizontal and vertical shift for drawing
* the contents of a cell; it can be positive or negitive; * the contents of a cell; it can be positive or negitive;

View File

@ -221,7 +221,14 @@ static void real_sort_list (GtkCList *clist);
static void set_mouse_cursor (GtkCTree *ctree, static void set_mouse_cursor (GtkCTree *ctree,
gboolean enable); gboolean enable);
static void check_cursor (GtkCTree *ctree); static void check_cursor (GtkCTree *ctree);
static void cell_size_request (GtkCList *clist,
GtkCListRow *clist_row,
gint column,
GtkRequisition *requisition);
static void column_auto_resize (GtkCList *clist,
GtkCListRow *clist_row,
gint column,
gint old_width);
enum enum
{ {
@ -369,6 +376,7 @@ gtk_ctree_class_init (GtkCTreeClass *klass)
clist_class->remove_row = real_remove_row; clist_class->remove_row = real_remove_row;
clist_class->sort_list = real_sort_list; clist_class->sort_list = real_sort_list;
clist_class->set_cell_contents = set_cell_contents; clist_class->set_cell_contents = set_cell_contents;
clist_class->cell_size_request = cell_size_request;
klass->tree_select_row = real_tree_select; klass->tree_select_row = real_tree_select;
klass->tree_unselect_row = real_tree_unselect; klass->tree_unselect_row = real_tree_unselect;
@ -2521,6 +2529,7 @@ real_tree_move (GtkCTree *ctree,
GtkCList *clist; GtkCList *clist;
GtkCTreeNode *work; GtkCTreeNode *work;
gboolean thaw = FALSE; gboolean thaw = FALSE;
gboolean visible = FALSE;
g_return_if_fail (ctree != NULL); g_return_if_fail (ctree != NULL);
g_return_if_fail (node != NULL); g_return_if_fail (node != NULL);
@ -2537,6 +2546,8 @@ real_tree_move (GtkCTree *ctree,
clist = GTK_CLIST (ctree); clist = GTK_CLIST (ctree);
visible = gtk_ctree_is_viewable (ctree, node);
if (clist->selection_mode == GTK_SELECTION_EXTENDED) if (clist->selection_mode == GTK_SELECTION_EXTENDED)
{ {
if (clist->anchor != -1) if (clist->anchor != -1)
@ -2589,6 +2600,13 @@ real_tree_move (GtkCTree *ctree,
clist->undo_anchor = clist->focus_row; clist->undo_anchor = clist->focus_row;
} }
if (clist->column[ctree->tree_column].auto_resize &&
!GTK_CLIST_AUTO_RESIZE_BLOCKED (clist) &&
(visible || gtk_ctree_is_viewable (ctree, node)))
gtk_clist_set_column_width
(clist, ctree->tree_column,
gtk_clist_optimal_column_width (clist, ctree->tree_column));
if (thaw) if (thaw)
gtk_clist_thaw (clist); gtk_clist_thaw (clist);
} }
@ -2642,6 +2660,8 @@ real_tree_expand (GtkCTree *ctree,
{ {
GtkCList *clist; GtkCList *clist;
GtkCTreeNode *work; GtkCTreeNode *work;
GtkRequisition requisition;
gboolean visible;
gint level; gint level;
g_return_if_fail (ctree != NULL); g_return_if_fail (ctree != NULL);
@ -2658,6 +2678,14 @@ real_tree_expand (GtkCTree *ctree,
GTK_CTREE_ROW (node)->expanded = TRUE; GTK_CTREE_ROW (node)->expanded = TRUE;
level = GTK_CTREE_ROW (node)->level; level = GTK_CTREE_ROW (node)->level;
visible = gtk_ctree_is_viewable (ctree, node);
/* get cell width if tree_column is auto resized */
if (visible && clist->column[ctree->tree_column].auto_resize &&
!GTK_CLIST_AUTO_RESIZE_BLOCKED (clist))
GTK_CLIST_CLASS_FW (clist)->cell_size_request
(clist, &GTK_CTREE_ROW (node)->row, ctree->tree_column, &requisition);
/* unref/unset closed pixmap */
if (GTK_CELL_PIXTEXT if (GTK_CELL_PIXTEXT
(GTK_CTREE_ROW (node)->row.cell[ctree->tree_column])->pixmap) (GTK_CTREE_ROW (node)->row.cell[ctree->tree_column])->pixmap)
{ {
@ -2679,6 +2707,7 @@ real_tree_expand (GtkCTree *ctree,
} }
} }
/* set/ref opened pixmap */
if (GTK_CTREE_ROW (node)->pixmap_opened) if (GTK_CTREE_ROW (node)->pixmap_opened)
{ {
GTK_CELL_PIXTEXT GTK_CELL_PIXTEXT
@ -2691,15 +2720,37 @@ real_tree_expand (GtkCTree *ctree,
gdk_pixmap_ref (GTK_CTREE_ROW (node)->mask_opened); gdk_pixmap_ref (GTK_CTREE_ROW (node)->mask_opened);
} }
work = GTK_CTREE_ROW (node)->children; work = GTK_CTREE_ROW (node)->children;
if (work) if (work)
{ {
GList *list;
gint *cell_width = NULL;
gint tmp = 0; gint tmp = 0;
gint row; gint row;
GList *list; gint i;
if (visible && !GTK_CLIST_AUTO_RESIZE_BLOCKED (clist))
{
cell_width = g_new0 (gint, clist->columns);
if (clist->column[ctree->tree_column].auto_resize)
cell_width[ctree->tree_column] = requisition.width;
}
while (GTK_CTREE_NODE_NEXT (work)) while (GTK_CTREE_NODE_NEXT (work))
{ {
if (visible && !GTK_CLIST_AUTO_RESIZE_BLOCKED (clist))
{
/* search maximum cell widths of auto_resize columns */
for (i = 0; i < clist->columns; i++)
if (clist->column[i].auto_resize)
{
GTK_CLIST_CLASS_FW (clist)->cell_size_request
(clist, &GTK_CTREE_ROW (work)->row, i, &requisition);
cell_width[i] = MAX (requisition.width, cell_width[i]);
}
}
work = GTK_CTREE_NODE_NEXT (work); work = GTK_CTREE_NODE_NEXT (work);
tmp++; tmp++;
} }
@ -2718,16 +2769,29 @@ real_tree_expand (GtkCTree *ctree,
list = (GList *)node; list = (GList *)node;
list->next = (GList *)(GTK_CTREE_ROW (node)->children); list->next = (GList *)(GTK_CTREE_ROW (node)->children);
if (gtk_ctree_is_viewable (ctree, node)) if (visible)
{ {
/* resize auto_resize columns if needed */
for (i = 0; i < clist->columns; i++)
if (clist->column[i].auto_resize &&
cell_width[i] > clist->column[i].width)
gtk_clist_set_column_width (clist, i, cell_width[i]);
g_free (cell_width);
/* update focus_row position */
row = g_list_position (clist->row_list, (GList *)node); row = g_list_position (clist->row_list, (GList *)node);
if (row < clist->focus_row) if (row < clist->focus_row)
clist->focus_row += tmp + 1; clist->focus_row += tmp + 1;
clist->rows += tmp + 1; clist->rows += tmp + 1;
if (!GTK_CLIST_FROZEN (ctree)) if (!GTK_CLIST_FROZEN (ctree))
gtk_clist_thaw (clist); gtk_clist_thaw (clist);
} }
} }
else if (visible && clist->column[ctree->tree_column].auto_resize)
/* resize tree_column if needed */
column_auto_resize (clist, &GTK_CTREE_ROW (node)->row, ctree->tree_column,
requisition.width);
} }
static void static void
@ -2736,12 +2800,15 @@ real_tree_collapse (GtkCTree *ctree,
{ {
GtkCList *clist; GtkCList *clist;
GtkCTreeNode *work; GtkCTreeNode *work;
GtkRequisition requisition;
gboolean visible;
gint level; gint level;
g_return_if_fail (ctree != NULL); g_return_if_fail (ctree != NULL);
g_return_if_fail (GTK_IS_CTREE (ctree)); g_return_if_fail (GTK_IS_CTREE (ctree));
if (!node || !GTK_CTREE_ROW (node)->expanded ||GTK_CTREE_ROW (node)->is_leaf) if (!node || !GTK_CTREE_ROW (node)->expanded ||
GTK_CTREE_ROW (node)->is_leaf)
return; return;
clist = GTK_CLIST (ctree); clist = GTK_CLIST (ctree);
@ -2752,6 +2819,14 @@ real_tree_collapse (GtkCTree *ctree,
GTK_CTREE_ROW (node)->expanded = FALSE; GTK_CTREE_ROW (node)->expanded = FALSE;
level = GTK_CTREE_ROW (node)->level; level = GTK_CTREE_ROW (node)->level;
visible = gtk_ctree_is_viewable (ctree, node);
/* get cell width if tree_column is auto resized */
if (visible && clist->column[ctree->tree_column].auto_resize &&
!GTK_CLIST_AUTO_RESIZE_BLOCKED (clist))
GTK_CLIST_CLASS_FW (clist)->cell_size_request
(clist, &GTK_CTREE_ROW (node)->row, ctree->tree_column, &requisition);
/* unref/unset opened pixmap */
if (GTK_CELL_PIXTEXT if (GTK_CELL_PIXTEXT
(GTK_CTREE_ROW (node)->row.cell[ctree->tree_column])->pixmap) (GTK_CTREE_ROW (node)->row.cell[ctree->tree_column])->pixmap)
{ {
@ -2773,6 +2848,7 @@ real_tree_collapse (GtkCTree *ctree,
} }
} }
/* set/ref closed pixmap */
if (GTK_CTREE_ROW (node)->pixmap_closed) if (GTK_CTREE_ROW (node)->pixmap_closed)
{ {
GTK_CELL_PIXTEXT GTK_CELL_PIXTEXT
@ -2814,8 +2890,35 @@ real_tree_collapse (GtkCTree *ctree,
clist->row_list_end = (GList *)node; clist->row_list_end = (GList *)node;
} }
if (gtk_ctree_is_viewable (ctree, node)) if (visible)
{ {
/* resize auto_resize columns if needed */
if (!GTK_CLIST_AUTO_RESIZE_BLOCKED (clist))
{
GList *list;
gint new_width;
gint i;
for (i = 0; i < clist->columns; i++)
if (clist->column[i].auto_resize)
{
/* run a "gtk_clist_optimal_column_width" but break, if
* the column doesn't shrink */
new_width = 0;
for (list = clist->row_list; list; list = list->next)
{
GTK_CLIST_CLASS_FW (clist)->cell_size_request
(clist, GTK_CLIST_ROW (list), i, &requisition);
new_width = MAX (new_width, requisition.width);
if (new_width == clist->column[i].width)
break;
}
if (new_width < clist->column[i].width)
gtk_clist_set_column_width (clist, i, new_width);
}
}
row = g_list_position (clist->row_list, (GList *)node); row = g_list_position (clist->row_list, (GList *)node);
if (row < clist->focus_row) if (row < clist->focus_row)
clist->focus_row -= tmp; clist->focus_row -= tmp;
@ -2824,6 +2927,133 @@ real_tree_collapse (GtkCTree *ctree,
gtk_clist_thaw (clist); gtk_clist_thaw (clist);
} }
} }
else if (visible && clist->column[ctree->tree_column].auto_resize &&
!GTK_CLIST_AUTO_RESIZE_BLOCKED (clist))
/* resize tree_column if needed */
column_auto_resize (clist, &GTK_CTREE_ROW (node)->row, ctree->tree_column,
requisition.width);
}
static void
column_auto_resize (GtkCList *clist,
GtkCListRow *clist_row,
gint column,
gint old_width)
{
/* resize column if needed for auto_resize */
GtkRequisition requisition;
if (!clist->column[column].auto_resize ||
GTK_CLIST_AUTO_RESIZE_BLOCKED (clist))
return;
GTK_CLIST_CLASS_FW (clist)->cell_size_request (clist, clist_row,
column, &requisition);
if (requisition.width > clist->column[column].width)
{
if (clist->column[column].max_width < 0)
gtk_clist_set_column_width (clist, column, requisition.width);
else if (clist->column[column].max_width > clist->column[column].width)
gtk_clist_set_column_width (clist, column,
MIN (requisition.width,
clist->column[column].max_width));
}
else if (requisition.width < old_width &&
old_width == clist->column[column].width)
{
GList *list;
gint new_width = 0;
/* run a "gtk_clist_optimal_column_width" but break, if
* the column doesn't shrink */
for (list = clist->row_list; list; list = list->next)
{
GTK_CLIST_CLASS_FW (clist)->cell_size_request
(clist, GTK_CLIST_ROW (list), column, &requisition);
new_width = MAX (new_width, requisition.width);
if (new_width == clist->column[column].width)
break;
}
if (new_width < clist->column[column].width)
gtk_clist_set_column_width
(clist, column, MAX (new_width, clist->column[column].min_width));
}
}
static void
cell_size_request (GtkCList *clist,
GtkCListRow *clist_row,
gint column,
GtkRequisition *requisition)
{
GtkCTree *ctree;
GtkStyle *style;
gint width;
gint height;
g_return_if_fail (clist != NULL);
g_return_if_fail (GTK_IS_CTREE (clist));
g_return_if_fail (requisition != NULL);
ctree = GTK_CTREE (clist);
get_cell_style (clist, clist_row, GTK_STATE_PRELIGHT, column, &style,
NULL, NULL);
switch (clist_row->cell[column].type)
{
case GTK_CELL_TEXT:
requisition->width =
gdk_string_width (style->font,
GTK_CELL_TEXT (clist_row->cell[column])->text);
requisition->height = style->font->ascent + style->font->descent;
break;
case GTK_CELL_PIXTEXT:
gdk_window_get_size (GTK_CELL_PIXTEXT (clist_row->cell[column])->pixmap,
&width, &height);
requisition->width = width +
GTK_CELL_PIXTEXT (clist_row->cell[column])->spacing +
gdk_string_width (style->font,
GTK_CELL_TEXT (clist_row->cell[column])->text);
requisition->height = MAX (style->font->ascent + style->font->descent,
height);
if (column == ctree->tree_column)
{
requisition->width += (ctree->tree_spacing + ctree->tree_indent *
(((GtkCTreeRow *) clist_row)->level - 1));
switch (ctree->expander_style)
{
case GTK_CTREE_EXPANDER_NONE:
break;
case GTK_CTREE_EXPANDER_TRIANGLE:
requisition->width += PM_SIZE + 3;
break;
case GTK_CTREE_EXPANDER_SQUARE:
case GTK_CTREE_EXPANDER_CIRCULAR:
requisition->width += PM_SIZE + 1;
break;
}
if (ctree->line_style == GTK_CTREE_LINES_TABBED)
requisition->width += 3;
}
break;
case GTK_CELL_PIXMAP:
gdk_window_get_size (GTK_CELL_PIXMAP (clist_row->cell[column])->pixmap,
&width, &height);
requisition->width = width;
requisition->height = height;
break;
default:
requisition->width = 0;
requisition->height = 0;
break;
}
requisition->width += clist_row->cell[column].horizontal;
requisition->height += clist_row->cell[column].vertical;
} }
static void static void
@ -2836,7 +3066,9 @@ set_cell_contents (GtkCList *clist,
GdkPixmap *pixmap, GdkPixmap *pixmap,
GdkBitmap *mask) GdkBitmap *mask)
{ {
gboolean visible = FALSE;
GtkCTree *ctree; GtkCTree *ctree;
GtkRequisition requisition;
g_return_if_fail (clist != NULL); g_return_if_fail (clist != NULL);
g_return_if_fail (GTK_IS_CTREE (clist)); g_return_if_fail (GTK_IS_CTREE (clist));
@ -2844,6 +3076,21 @@ set_cell_contents (GtkCList *clist,
ctree = GTK_CTREE (clist); ctree = GTK_CTREE (clist);
if (clist->column[column].auto_resize &&
!GTK_CLIST_AUTO_RESIZE_BLOCKED (clist))
{
GtkCTreeNode *parent;
parent = ((GtkCTreeRow *)clist_row)->parent;
if (!parent || (parent && GTK_CTREE_ROW (parent)->expanded &&
gtk_ctree_is_viewable (ctree, parent)))
{
visible = TRUE;
GTK_CLIST_CLASS_FW (clist)->cell_size_request (clist, clist_row,
column, &requisition);
}
}
switch (clist_row->cell[column].type) switch (clist_row->cell[column].type)
{ {
case GTK_CELL_EMPTY: case GTK_CELL_EMPTY:
@ -2852,13 +3099,11 @@ set_cell_contents (GtkCList *clist,
case GTK_CELL_TEXT: case GTK_CELL_TEXT:
g_free (GTK_CELL_TEXT (clist_row->cell[column])->text); g_free (GTK_CELL_TEXT (clist_row->cell[column])->text);
break; break;
case GTK_CELL_PIXMAP: case GTK_CELL_PIXMAP:
gdk_pixmap_unref (GTK_CELL_PIXMAP (clist_row->cell[column])->pixmap); gdk_pixmap_unref (GTK_CELL_PIXMAP (clist_row->cell[column])->pixmap);
if (GTK_CELL_PIXMAP (clist_row->cell[column])->mask) if (GTK_CELL_PIXMAP (clist_row->cell[column])->mask)
gdk_bitmap_unref (GTK_CELL_PIXMAP (clist_row->cell[column])->mask); gdk_bitmap_unref (GTK_CELL_PIXMAP (clist_row->cell[column])->mask);
break; break;
case GTK_CELL_PIXTEXT: case GTK_CELL_PIXTEXT:
if (GTK_CELL_PIXTEXT (clist_row->cell[column])->text) if (GTK_CELL_PIXTEXT (clist_row->cell[column])->text)
g_free (GTK_CELL_PIXTEXT (clist_row->cell[column])->text); g_free (GTK_CELL_PIXTEXT (clist_row->cell[column])->text);
@ -2871,7 +3116,6 @@ set_cell_contents (GtkCList *clist,
(GTK_CELL_PIXTEXT (clist_row->cell[column])->mask); (GTK_CELL_PIXTEXT (clist_row->cell[column])->mask);
} }
break; break;
case GTK_CELL_WIDGET: case GTK_CELL_WIDGET:
/* unimplimented */ /* unimplimented */
break; break;
@ -2893,7 +3137,6 @@ set_cell_contents (GtkCList *clist,
GTK_CELL_TEXT (clist_row->cell[column])->text = g_strdup (text); GTK_CELL_TEXT (clist_row->cell[column])->text = g_strdup (text);
} }
break; break;
case GTK_CELL_PIXMAP: case GTK_CELL_PIXMAP:
if (pixmap) if (pixmap)
{ {
@ -2903,7 +3146,6 @@ set_cell_contents (GtkCList *clist,
GTK_CELL_PIXMAP (clist_row->cell[column])->mask = mask; GTK_CELL_PIXMAP (clist_row->cell[column])->mask = mask;
} }
break; break;
case GTK_CELL_PIXTEXT: case GTK_CELL_PIXTEXT:
if (column == ctree->tree_column) if (column == ctree->tree_column)
{ {
@ -2933,10 +3175,12 @@ set_cell_contents (GtkCList *clist,
GTK_CELL_PIXTEXT (clist_row->cell[column])->mask = mask; GTK_CELL_PIXTEXT (clist_row->cell[column])->mask = mask;
} }
break; break;
default: default:
break; break;
} }
if (visible)
column_auto_resize (clist, clist_row, column, requisition.width);
} }
static void static void
@ -3654,6 +3898,22 @@ gtk_ctree_insert_node (GtkCTree *ctree,
gtk_ctree_link (ctree, node, parent, sibling, TRUE); gtk_ctree_link (ctree, node, parent, sibling, TRUE);
if (text && !GTK_CLIST_AUTO_RESIZE_BLOCKED (clist) &&
gtk_ctree_is_viewable (ctree, node))
{
GtkRequisition requisition;
for (i = 0; i < clist->columns; i++)
if (clist->column[i].auto_resize)
{
GTK_CLIST_CLASS_FW (clist)->cell_size_request (clist,
&(new_row->row),
i, &requisition);
if (requisition.width > clist->column[i].width)
gtk_clist_set_column_width (clist, i, requisition.width);
}
}
if (!GTK_CLIST_FROZEN (clist)) if (!GTK_CLIST_FROZEN (clist))
gtk_clist_thaw (clist); gtk_clist_thaw (clist);
@ -3816,9 +4076,40 @@ gtk_ctree_remove_node (GtkCTree *ctree,
if (node) if (node)
{ {
gboolean visible;
visible = gtk_ctree_is_viewable (ctree, node);
gtk_ctree_unlink (ctree, node, TRUE); gtk_ctree_unlink (ctree, node, TRUE);
gtk_ctree_post_recursive (ctree, node, GTK_CTREE_FUNC (tree_delete), gtk_ctree_post_recursive (ctree, node, GTK_CTREE_FUNC (tree_delete),
NULL); NULL);
if (!GTK_CLIST_AUTO_RESIZE_BLOCKED (clist))
{
GtkRequisition requisition;
GList *list;
gint new_width;
gint i;
for (i = 0; i < clist->columns; i++)
if (clist->column[i].auto_resize)
{
/* run a "gtk_clist_optimal_column_width" but break, if
* the column doesn't shrink */
new_width = 0;
for (list = clist->row_list; list; list = list->next)
{
GTK_CLIST_CLASS_FW (clist)->cell_size_request
(clist, GTK_CLIST_ROW (list), i, &requisition);
new_width = MAX (new_width, requisition.width);
if (new_width == clist->column[i].width)
break;
}
if (new_width < clist->column[i].width)
gtk_clist_set_column_width (clist, i, new_width);
}
}
} }
else else
gtk_clist_clear (clist); gtk_clist_clear (clist);
@ -3846,11 +4137,12 @@ real_clear (GtkCList *clist)
ctree->drag_target = NULL; ctree->drag_target = NULL;
ctree->drag_icon = NULL; ctree->drag_icon = NULL;
/* remove all the rows */ /* remove all rows */
work = GTK_CTREE_NODE (clist->row_list); work = GTK_CTREE_NODE (clist->row_list);
clist->row_list = NULL; clist->row_list = NULL;
clist->row_list_end = NULL; clist->row_list_end = NULL;
GTK_CLIST_SET_FLAG (clist, CLIST_AUTO_RESIZE_BLOCKED);
while (work) while (work)
{ {
ptr = work; ptr = work;
@ -3858,6 +4150,7 @@ real_clear (GtkCList *clist)
gtk_ctree_post_recursive (ctree, ptr, GTK_CTREE_FUNC (tree_delete_row), gtk_ctree_post_recursive (ctree, ptr, GTK_CTREE_FUNC (tree_delete_row),
NULL); NULL);
} }
GTK_CLIST_UNSET_FLAG (clist, CLIST_AUTO_RESIZE_BLOCKED);
(parent_class->clear) (clist); (parent_class->clear) (clist);
} }
@ -4353,6 +4646,7 @@ gtk_ctree_collapse_recursive (GtkCTree *ctree,
{ {
GtkCList *clist; GtkCList *clist;
gboolean thaw = FALSE; gboolean thaw = FALSE;
gint i;
g_return_if_fail (ctree != NULL); g_return_if_fail (ctree != NULL);
g_return_if_fail (GTK_IS_CTREE (ctree)); g_return_if_fail (GTK_IS_CTREE (ctree));
@ -4369,7 +4663,13 @@ gtk_ctree_collapse_recursive (GtkCTree *ctree,
thaw = TRUE; thaw = TRUE;
} }
GTK_CLIST_SET_FLAG (clist, CLIST_AUTO_RESIZE_BLOCKED);
gtk_ctree_post_recursive (ctree, node, GTK_CTREE_FUNC (tree_collapse), NULL); gtk_ctree_post_recursive (ctree, node, GTK_CTREE_FUNC (tree_collapse), NULL);
GTK_CLIST_UNSET_FLAG (clist, CLIST_AUTO_RESIZE_BLOCKED);
for (i = 0; i < clist->columns; i++)
if (clist->column[i].auto_resize)
gtk_clist_set_column_width (clist, i,
gtk_clist_optimal_column_width (clist, i));
if (thaw) if (thaw)
gtk_clist_thaw (clist); gtk_clist_thaw (clist);
@ -4382,6 +4682,7 @@ gtk_ctree_collapse_to_depth (GtkCTree *ctree,
{ {
GtkCList *clist; GtkCList *clist;
gboolean thaw = FALSE; gboolean thaw = FALSE;
gint i;
g_return_if_fail (ctree != NULL); g_return_if_fail (ctree != NULL);
g_return_if_fail (GTK_IS_CTREE (ctree)); g_return_if_fail (GTK_IS_CTREE (ctree));
@ -4398,9 +4699,15 @@ gtk_ctree_collapse_to_depth (GtkCTree *ctree,
thaw = TRUE; thaw = TRUE;
} }
GTK_CLIST_SET_FLAG (clist, CLIST_AUTO_RESIZE_BLOCKED);
gtk_ctree_post_recursive_to_depth (ctree, node, depth, gtk_ctree_post_recursive_to_depth (ctree, node, depth,
GTK_CTREE_FUNC (tree_collapse_to_depth), GTK_CTREE_FUNC (tree_collapse_to_depth),
GINT_TO_POINTER (depth)); GINT_TO_POINTER (depth));
GTK_CLIST_UNSET_FLAG (clist, CLIST_AUTO_RESIZE_BLOCKED);
for (i = 0; i < clist->columns; i++)
if (clist->column[i].auto_resize)
gtk_clist_set_column_width (clist, i,
gtk_clist_optimal_column_width (clist, i));
if (thaw) if (thaw)
gtk_clist_thaw (clist); gtk_clist_thaw (clist);
@ -4691,6 +4998,10 @@ gtk_ctree_node_set_shift (GtkCTree *ctree,
gint vertical, gint vertical,
gint horizontal) gint horizontal)
{ {
GtkCList *clist;
GtkRequisition requisition;
gboolean visible = FALSE;
g_return_if_fail (ctree != NULL); g_return_if_fail (ctree != NULL);
g_return_if_fail (GTK_IS_CTREE (ctree)); g_return_if_fail (GTK_IS_CTREE (ctree));
g_return_if_fail (node != NULL); g_return_if_fail (node != NULL);
@ -4698,9 +5009,24 @@ gtk_ctree_node_set_shift (GtkCTree *ctree,
if (column < 0 || column >= GTK_CLIST (ctree)->columns) if (column < 0 || column >= GTK_CLIST (ctree)->columns)
return; return;
clist = GTK_CLIST (ctree);
if (clist->column[column].auto_resize &&
!GTK_CLIST_AUTO_RESIZE_BLOCKED (clist))
{
visible = gtk_ctree_is_viewable (ctree, node);
if (visible)
GTK_CLIST_CLASS_FW (clist)->cell_size_request
(clist, &GTK_CTREE_ROW (node)->row, column, &requisition);
}
GTK_CTREE_ROW (node)->row.cell[column].vertical = vertical; GTK_CTREE_ROW (node)->row.cell[column].vertical = vertical;
GTK_CTREE_ROW (node)->row.cell[column].horizontal = horizontal; GTK_CTREE_ROW (node)->row.cell[column].horizontal = horizontal;
if (visible)
column_auto_resize (clist, &GTK_CTREE_ROW (node)->row,
column, requisition.width);
tree_draw_node (ctree, node); tree_draw_node (ctree, node);
} }
@ -4898,6 +5224,8 @@ gtk_ctree_node_set_cell_style (GtkCTree *ctree,
GtkStyle *style) GtkStyle *style)
{ {
GtkCList *clist; GtkCList *clist;
GtkRequisition requisition;
gboolean visible = FALSE;
g_return_if_fail (ctree != NULL); g_return_if_fail (ctree != NULL);
g_return_if_fail (GTK_IS_CTREE (ctree)); g_return_if_fail (GTK_IS_CTREE (ctree));
@ -4911,6 +5239,15 @@ gtk_ctree_node_set_cell_style (GtkCTree *ctree,
if (GTK_CTREE_ROW (node)->row.cell[column].style == style) if (GTK_CTREE_ROW (node)->row.cell[column].style == style)
return; return;
if (clist->column[column].auto_resize &&
!GTK_CLIST_AUTO_RESIZE_BLOCKED (clist))
{
visible = gtk_ctree_is_viewable (ctree, node);
if (visible)
GTK_CLIST_CLASS_FW (clist)->cell_size_request
(clist, &GTK_CTREE_ROW (node)->row, column, &requisition);
}
if (GTK_CTREE_ROW (node)->row.cell[column].style) if (GTK_CTREE_ROW (node)->row.cell[column].style)
{ {
if (GTK_WIDGET_REALIZED (ctree)) if (GTK_WIDGET_REALIZED (ctree))
@ -4930,6 +5267,10 @@ gtk_ctree_node_set_cell_style (GtkCTree *ctree,
clist->clist_window); clist->clist_window);
} }
if (visible)
column_auto_resize (clist, &GTK_CTREE_ROW (node)->row, column,
requisition.width);
tree_draw_node (ctree, node); tree_draw_node (ctree, node);
} }
@ -4954,6 +5295,10 @@ gtk_ctree_node_set_row_style (GtkCTree *ctree,
GtkStyle *style) GtkStyle *style)
{ {
GtkCList *clist; GtkCList *clist;
GtkRequisition requisition;
gboolean visible;
gint *old_width = NULL;
gint i;
g_return_if_fail (ctree != NULL); g_return_if_fail (ctree != NULL);
g_return_if_fail (GTK_IS_CTREE (ctree)); g_return_if_fail (GTK_IS_CTREE (ctree));
@ -4963,6 +5308,19 @@ gtk_ctree_node_set_row_style (GtkCTree *ctree,
if (GTK_CTREE_ROW (node)->row.style == style) if (GTK_CTREE_ROW (node)->row.style == style)
return; return;
visible = gtk_ctree_is_viewable (ctree, node);
if (visible && !GTK_CLIST_AUTO_RESIZE_BLOCKED (clist))
{
old_width = g_new (gint, clist->columns);
for (i = 0; i < clist->columns; i++)
if (clist->column[i].auto_resize)
{
GTK_CLIST_CLASS_FW (clist)->cell_size_request
(clist, &GTK_CTREE_ROW (node)->row, i, &requisition);
old_width[i] = requisition.width;
}
}
if (GTK_CTREE_ROW (node)->row.style) if (GTK_CTREE_ROW (node)->row.style)
{ {
@ -4983,6 +5341,14 @@ gtk_ctree_node_set_row_style (GtkCTree *ctree,
clist->clist_window); clist->clist_window);
} }
if (visible && !GTK_CLIST_AUTO_RESIZE_BLOCKED (clist))
{
for (i = 0; i < clist->columns; i++)
if (clist->column[i].auto_resize)
column_auto_resize (clist, &GTK_CTREE_ROW (node)->row, i,
old_width[i]);
g_free (old_width);
}
tree_draw_node (ctree, node); tree_draw_node (ctree, node);
} }
@ -5115,37 +5481,57 @@ GtkVisibility gtk_ctree_node_is_visible (GtkCTree *ctree,
* GtkCTree specific functions * * GtkCTree specific functions *
***********************************************************/ ***********************************************************/
void void
gtk_ctree_set_indent (GtkCTree *ctree, gtk_ctree_set_indent (GtkCTree *ctree,
gint indent) gint indent)
{ {
GtkCList *clist;
g_return_if_fail (ctree != NULL); g_return_if_fail (ctree != NULL);
g_return_if_fail (GTK_IS_CTREE (ctree)); g_return_if_fail (GTK_IS_CTREE (ctree));
g_return_if_fail (indent >= 0); g_return_if_fail (indent >= 0);
if (indent != ctree->tree_indent) if (indent == ctree->tree_indent)
{ return;
ctree->tree_indent = indent;
if (!GTK_CLIST_FROZEN (ctree)) clist = GTK_CLIST (ctree);
gtk_clist_thaw (GTK_CLIST (ctree)); ctree->tree_indent = indent;
}
if (clist->column[ctree->tree_column].auto_resize &&
!GTK_CLIST_AUTO_RESIZE_BLOCKED (clist))
gtk_clist_set_column_width
(clist, ctree->tree_column,
gtk_clist_optimal_column_width (clist, ctree->tree_column));
else if (!GTK_CLIST_FROZEN (ctree))
gtk_clist_thaw (GTK_CLIST (ctree));
} }
void void
gtk_ctree_set_spacing (GtkCTree *ctree, gtk_ctree_set_spacing (GtkCTree *ctree,
gint spacing) gint spacing)
{ {
GtkCList *clist;
gint old_spacing;
g_return_if_fail (ctree != NULL); g_return_if_fail (ctree != NULL);
g_return_if_fail (GTK_IS_CTREE (ctree)); g_return_if_fail (GTK_IS_CTREE (ctree));
g_return_if_fail (spacing >= 0); g_return_if_fail (spacing >= 0);
if (spacing != ctree->tree_spacing) if (spacing == ctree->tree_spacing)
{ return;
ctree->tree_spacing = spacing;
if (!GTK_CLIST_FROZEN (ctree)) clist = GTK_CLIST (ctree);
gtk_clist_thaw (GTK_CLIST (ctree));
} old_spacing = ctree->tree_spacing;
ctree->tree_spacing = spacing;
if (clist->column[ctree->tree_column].auto_resize &&
!GTK_CLIST_AUTO_RESIZE_BLOCKED (clist))
gtk_clist_set_column_width (clist, ctree->tree_column,
clist->column[ctree->tree_column].width +
spacing - old_spacing);
else if (!GTK_CLIST_FROZEN (ctree))
gtk_clist_thaw (GTK_CLIST (ctree));
} }
void void
@ -5198,16 +5584,35 @@ void
gtk_ctree_set_line_style (GtkCTree *ctree, gtk_ctree_set_line_style (GtkCTree *ctree,
GtkCTreeLineStyle line_style) GtkCTreeLineStyle line_style)
{ {
GtkCList *clist;
GtkCTreeLineStyle old_style;
g_return_if_fail (ctree != NULL); g_return_if_fail (ctree != NULL);
g_return_if_fail (GTK_IS_CTREE (ctree)); g_return_if_fail (GTK_IS_CTREE (ctree));
if (line_style != ctree->line_style) if (line_style == ctree->line_style)
return;
clist = GTK_CLIST (ctree);
old_style = ctree->line_style;
ctree->line_style = line_style;
if (clist->column[ctree->tree_column].auto_resize &&
!GTK_CLIST_AUTO_RESIZE_BLOCKED (clist))
{ {
ctree->line_style = line_style; if (old_style == GTK_CTREE_LINES_TABBED)
gtk_clist_set_column_width
if (!GTK_WIDGET_REALIZED (ctree)) (clist, ctree->tree_column,
return; clist->column[ctree->tree_column].width - 3);
else if (line_style == GTK_CTREE_LINES_TABBED)
gtk_clist_set_column_width
(clist, ctree->tree_column,
clist->column[ctree->tree_column].width + 3);
}
if (GTK_WIDGET_REALIZED (ctree))
{
switch (line_style) switch (line_style)
{ {
case GTK_CTREE_LINES_SOLID: case GTK_CTREE_LINES_SOLID:
@ -5240,16 +5645,57 @@ void
gtk_ctree_set_expander_style (GtkCTree *ctree, gtk_ctree_set_expander_style (GtkCTree *ctree,
GtkCTreeExpanderStyle expander_style) GtkCTreeExpanderStyle expander_style)
{ {
GtkCList *clist;
GtkCTreeExpanderStyle old_style;
g_return_if_fail (ctree != NULL); g_return_if_fail (ctree != NULL);
g_return_if_fail (GTK_IS_CTREE (ctree)); g_return_if_fail (GTK_IS_CTREE (ctree));
if (expander_style != ctree->expander_style) if (expander_style == ctree->expander_style)
{ return;
ctree->expander_style = expander_style;
if (!GTK_CLIST_FROZEN (ctree)) clist = GTK_CLIST (ctree);
gtk_clist_thaw (GTK_CLIST (ctree));
old_style = ctree->expander_style;
ctree->expander_style = expander_style;
if (clist->column[ctree->tree_column].auto_resize &&
!GTK_CLIST_AUTO_RESIZE_BLOCKED (clist))
{
gint new_width;
new_width = clist->column[ctree->tree_column].width;
switch (old_style)
{
case GTK_CTREE_EXPANDER_NONE:
break;
case GTK_CTREE_EXPANDER_TRIANGLE:
new_width -= PM_SIZE + 3;
break;
case GTK_CTREE_EXPANDER_SQUARE:
case GTK_CTREE_EXPANDER_CIRCULAR:
new_width -= PM_SIZE + 1;
break;
}
switch (expander_style)
{
case GTK_CTREE_EXPANDER_NONE:
break;
case GTK_CTREE_EXPANDER_TRIANGLE:
new_width += PM_SIZE + 3;
break;
case GTK_CTREE_EXPANDER_SQUARE:
case GTK_CTREE_EXPANDER_CIRCULAR:
new_width += PM_SIZE + 1;
break;
}
gtk_clist_set_column_width (clist, ctree->tree_column, new_width);
} }
if (!GTK_CLIST_FROZEN (ctree) && GTK_WIDGET_DRAWABLE (clist))
gtk_clist_thaw (GTK_CLIST (ctree));
} }

View File

@ -3542,7 +3542,7 @@ add1000_clist (GtkWidget *widget, gpointer data)
gtk_clist_freeze (GTK_CLIST (data)); gtk_clist_freeze (GTK_CLIST (data));
for (i = 0; i < 1000; i++) for (i = 0; i < 1000; i++)
{ {
sprintf (text[0], "Row %d", rand() % 10000); sprintf (text[0], "CListRow %d", rand() % 10000);
row = gtk_clist_append (clist, texts); row = gtk_clist_append (clist, texts);
gtk_clist_set_pixtext (clist, row, 3, "gtk+", 5, pixmap, mask); gtk_clist_set_pixtext (clist, row, 3, "gtk+", 5, pixmap, mask);
} }
@ -3572,7 +3572,7 @@ add10000_clist (GtkWidget *widget, gpointer data)
gtk_clist_freeze (GTK_CLIST (data)); gtk_clist_freeze (GTK_CLIST (data));
for (i = 0; i < 10000; i++) for (i = 0; i < 10000; i++)
{ {
sprintf (text[0], "Row %d", rand() % 10000 /*clist_rows++*/); sprintf (text[0], "CListRow %d", rand() % 10000);
gtk_clist_append (GTK_CLIST (data), texts); gtk_clist_append (GTK_CLIST (data), texts);
} }
gtk_clist_thaw (GTK_CLIST (data)); gtk_clist_thaw (GTK_CLIST (data));
@ -3830,7 +3830,7 @@ clist_toggle_sel_mode (GtkWidget *widget, GtkCList *clist)
static void static void
clist_click_column (GtkCList *clist, gint column, gpointer data) clist_click_column (GtkCList *clist, gint column, gpointer data)
{ {
if (column == 5) if (column == 4)
gtk_clist_set_column_visibility (clist, column, FALSE); gtk_clist_set_column_visibility (clist, column, FALSE);
else if (column == clist->sort_column) else if (column == clist->sort_column)
{ {
@ -3853,8 +3853,8 @@ create_clist (void)
static char *titles[] = static char *titles[] =
{ {
"Title 0", "Title 1", "not resizeable", "max width 120", "auto resize", "not resizeable", "max width 100", "min width 50",
"min width 40", "hide column", "Title 6", "Title 7", "hide column", "Title 5", "Title 6", "Title 7",
"Title 8", "Title 9", "Title 10", "Title 11", "Title 12", "Title 8", "Title 9", "Title 10", "Title 11", "Title 12",
"Title 13", "Title 14", "Title 15", "Title 16", "Title 17", "Title 13", "Title 14", "Title 15", "Title 16", "Title 17",
"Title 18", "Title 19" "Title 18", "Title 19"
@ -4008,9 +4008,10 @@ create_clist (void)
for (i = 1; i < TESTGTK_CLIST_COLUMNS; i++) for (i = 1; i < TESTGTK_CLIST_COLUMNS; i++)
gtk_clist_set_column_width (GTK_CLIST (clist), i, 80); gtk_clist_set_column_width (GTK_CLIST (clist), i, 80);
gtk_clist_set_column_resizeable (GTK_CLIST (clist), 2, FALSE); gtk_clist_set_column_auto_resize (GTK_CLIST (clist), 0, TRUE);
gtk_clist_set_column_max_width (GTK_CLIST (clist), 3, 120); gtk_clist_set_column_resizeable (GTK_CLIST (clist), 1, FALSE);
gtk_clist_set_column_min_width (GTK_CLIST (clist), 4, 40); gtk_clist_set_column_max_width (GTK_CLIST (clist), 2, 100);
gtk_clist_set_column_min_width (GTK_CLIST (clist), 3, 50);
gtk_clist_set_selection_mode (GTK_CLIST (clist), GTK_SELECTION_EXTENDED); gtk_clist_set_selection_mode (GTK_CLIST (clist), GTK_SELECTION_EXTENDED);
gtk_clist_set_policy (GTK_CLIST (clist), GTK_POLICY_AUTOMATIC, gtk_clist_set_policy (GTK_CLIST (clist), GTK_POLICY_AUTOMATIC,
@ -4047,7 +4048,7 @@ create_clist (void)
for (i = 0; i < 10; i++) for (i = 0; i < 10; i++)
{ {
sprintf (text[0], "Row %d", clist_rows++); sprintf (text[0], "CListRow %d", clist_rows++);
gtk_clist_append (GTK_CLIST (clist), texts); gtk_clist_append (GTK_CLIST (clist), texts);
switch (i % 4) switch (i % 4)
@ -4832,8 +4833,11 @@ void create_ctree (void)
button = gtk_button_new_with_label ("Rebuild tree"); button = gtk_button_new_with_label ("Rebuild tree");
gtk_box_pack_start (GTK_BOX (hbox), button, TRUE, TRUE, 0); gtk_box_pack_start (GTK_BOX (hbox), button, TRUE, TRUE, 0);
ctree = GTK_CTREE (gtk_ctree_new_with_titles (2, 0, title)); ctree = GTK_CTREE (gtk_ctree_new_with_titles (2, 0, title));
gtk_signal_connect (GTK_OBJECT (button), "clicked",
GTK_SIGNAL_FUNC (rebuild_tree), ctree);
gtk_ctree_set_line_style (ctree, GTK_CTREE_LINES_DOTTED); gtk_ctree_set_line_style (ctree, GTK_CTREE_LINES_DOTTED);
line_style = GTK_CTREE_LINES_DOTTED; line_style = GTK_CTREE_LINES_DOTTED;
@ -4866,12 +4870,10 @@ void create_ctree (void)
gtk_clist_set_selection_mode (GTK_CLIST (ctree), GTK_SELECTION_EXTENDED); gtk_clist_set_selection_mode (GTK_CLIST (ctree), GTK_SELECTION_EXTENDED);
gtk_clist_set_policy (GTK_CLIST (ctree), GTK_POLICY_ALWAYS, gtk_clist_set_policy (GTK_CLIST (ctree), GTK_POLICY_ALWAYS,
GTK_POLICY_AUTOMATIC); GTK_POLICY_AUTOMATIC);
gtk_clist_set_column_width (GTK_CLIST (ctree), 0, 200); gtk_clist_set_column_min_width (GTK_CLIST (ctree), 0, 50);
gtk_clist_set_column_auto_resize (GTK_CLIST (ctree), 0, TRUE);
gtk_clist_set_column_width (GTK_CLIST (ctree), 1, 200); gtk_clist_set_column_width (GTK_CLIST (ctree), 1, 200);
gtk_signal_connect (GTK_OBJECT (button), "clicked",
GTK_SIGNAL_FUNC (rebuild_tree), ctree);
bbox = gtk_hbox_new (FALSE, 5); bbox = gtk_hbox_new (FALSE, 5);
gtk_container_border_width (GTK_CONTAINER (bbox), 5); gtk_container_border_width (GTK_CONTAINER (bbox), 5);
gtk_box_pack_start (GTK_BOX (vbox), bbox, FALSE, TRUE, 0); gtk_box_pack_start (GTK_BOX (vbox), bbox, FALSE, TRUE, 0);
@ -6264,7 +6266,7 @@ create_dnd (void)
else else
gtk_widget_destroy (window); gtk_widget_destroy (window);
} }
#endif #endif
/* /*
* Shaped Windows * Shaped Windows

View File

@ -3542,7 +3542,7 @@ add1000_clist (GtkWidget *widget, gpointer data)
gtk_clist_freeze (GTK_CLIST (data)); gtk_clist_freeze (GTK_CLIST (data));
for (i = 0; i < 1000; i++) for (i = 0; i < 1000; i++)
{ {
sprintf (text[0], "Row %d", rand() % 10000); sprintf (text[0], "CListRow %d", rand() % 10000);
row = gtk_clist_append (clist, texts); row = gtk_clist_append (clist, texts);
gtk_clist_set_pixtext (clist, row, 3, "gtk+", 5, pixmap, mask); gtk_clist_set_pixtext (clist, row, 3, "gtk+", 5, pixmap, mask);
} }
@ -3572,7 +3572,7 @@ add10000_clist (GtkWidget *widget, gpointer data)
gtk_clist_freeze (GTK_CLIST (data)); gtk_clist_freeze (GTK_CLIST (data));
for (i = 0; i < 10000; i++) for (i = 0; i < 10000; i++)
{ {
sprintf (text[0], "Row %d", rand() % 10000 /*clist_rows++*/); sprintf (text[0], "CListRow %d", rand() % 10000);
gtk_clist_append (GTK_CLIST (data), texts); gtk_clist_append (GTK_CLIST (data), texts);
} }
gtk_clist_thaw (GTK_CLIST (data)); gtk_clist_thaw (GTK_CLIST (data));
@ -3830,7 +3830,7 @@ clist_toggle_sel_mode (GtkWidget *widget, GtkCList *clist)
static void static void
clist_click_column (GtkCList *clist, gint column, gpointer data) clist_click_column (GtkCList *clist, gint column, gpointer data)
{ {
if (column == 5) if (column == 4)
gtk_clist_set_column_visibility (clist, column, FALSE); gtk_clist_set_column_visibility (clist, column, FALSE);
else if (column == clist->sort_column) else if (column == clist->sort_column)
{ {
@ -3853,8 +3853,8 @@ create_clist (void)
static char *titles[] = static char *titles[] =
{ {
"Title 0", "Title 1", "not resizeable", "max width 120", "auto resize", "not resizeable", "max width 100", "min width 50",
"min width 40", "hide column", "Title 6", "Title 7", "hide column", "Title 5", "Title 6", "Title 7",
"Title 8", "Title 9", "Title 10", "Title 11", "Title 12", "Title 8", "Title 9", "Title 10", "Title 11", "Title 12",
"Title 13", "Title 14", "Title 15", "Title 16", "Title 17", "Title 13", "Title 14", "Title 15", "Title 16", "Title 17",
"Title 18", "Title 19" "Title 18", "Title 19"
@ -4008,9 +4008,10 @@ create_clist (void)
for (i = 1; i < TESTGTK_CLIST_COLUMNS; i++) for (i = 1; i < TESTGTK_CLIST_COLUMNS; i++)
gtk_clist_set_column_width (GTK_CLIST (clist), i, 80); gtk_clist_set_column_width (GTK_CLIST (clist), i, 80);
gtk_clist_set_column_resizeable (GTK_CLIST (clist), 2, FALSE); gtk_clist_set_column_auto_resize (GTK_CLIST (clist), 0, TRUE);
gtk_clist_set_column_max_width (GTK_CLIST (clist), 3, 120); gtk_clist_set_column_resizeable (GTK_CLIST (clist), 1, FALSE);
gtk_clist_set_column_min_width (GTK_CLIST (clist), 4, 40); gtk_clist_set_column_max_width (GTK_CLIST (clist), 2, 100);
gtk_clist_set_column_min_width (GTK_CLIST (clist), 3, 50);
gtk_clist_set_selection_mode (GTK_CLIST (clist), GTK_SELECTION_EXTENDED); gtk_clist_set_selection_mode (GTK_CLIST (clist), GTK_SELECTION_EXTENDED);
gtk_clist_set_policy (GTK_CLIST (clist), GTK_POLICY_AUTOMATIC, gtk_clist_set_policy (GTK_CLIST (clist), GTK_POLICY_AUTOMATIC,
@ -4047,7 +4048,7 @@ create_clist (void)
for (i = 0; i < 10; i++) for (i = 0; i < 10; i++)
{ {
sprintf (text[0], "Row %d", clist_rows++); sprintf (text[0], "CListRow %d", clist_rows++);
gtk_clist_append (GTK_CLIST (clist), texts); gtk_clist_append (GTK_CLIST (clist), texts);
switch (i % 4) switch (i % 4)
@ -4832,8 +4833,11 @@ void create_ctree (void)
button = gtk_button_new_with_label ("Rebuild tree"); button = gtk_button_new_with_label ("Rebuild tree");
gtk_box_pack_start (GTK_BOX (hbox), button, TRUE, TRUE, 0); gtk_box_pack_start (GTK_BOX (hbox), button, TRUE, TRUE, 0);
ctree = GTK_CTREE (gtk_ctree_new_with_titles (2, 0, title)); ctree = GTK_CTREE (gtk_ctree_new_with_titles (2, 0, title));
gtk_signal_connect (GTK_OBJECT (button), "clicked",
GTK_SIGNAL_FUNC (rebuild_tree), ctree);
gtk_ctree_set_line_style (ctree, GTK_CTREE_LINES_DOTTED); gtk_ctree_set_line_style (ctree, GTK_CTREE_LINES_DOTTED);
line_style = GTK_CTREE_LINES_DOTTED; line_style = GTK_CTREE_LINES_DOTTED;
@ -4866,12 +4870,10 @@ void create_ctree (void)
gtk_clist_set_selection_mode (GTK_CLIST (ctree), GTK_SELECTION_EXTENDED); gtk_clist_set_selection_mode (GTK_CLIST (ctree), GTK_SELECTION_EXTENDED);
gtk_clist_set_policy (GTK_CLIST (ctree), GTK_POLICY_ALWAYS, gtk_clist_set_policy (GTK_CLIST (ctree), GTK_POLICY_ALWAYS,
GTK_POLICY_AUTOMATIC); GTK_POLICY_AUTOMATIC);
gtk_clist_set_column_width (GTK_CLIST (ctree), 0, 200); gtk_clist_set_column_min_width (GTK_CLIST (ctree), 0, 50);
gtk_clist_set_column_auto_resize (GTK_CLIST (ctree), 0, TRUE);
gtk_clist_set_column_width (GTK_CLIST (ctree), 1, 200); gtk_clist_set_column_width (GTK_CLIST (ctree), 1, 200);
gtk_signal_connect (GTK_OBJECT (button), "clicked",
GTK_SIGNAL_FUNC (rebuild_tree), ctree);
bbox = gtk_hbox_new (FALSE, 5); bbox = gtk_hbox_new (FALSE, 5);
gtk_container_border_width (GTK_CONTAINER (bbox), 5); gtk_container_border_width (GTK_CONTAINER (bbox), 5);
gtk_box_pack_start (GTK_BOX (vbox), bbox, FALSE, TRUE, 0); gtk_box_pack_start (GTK_BOX (vbox), bbox, FALSE, TRUE, 0);
@ -6264,7 +6266,7 @@ create_dnd (void)
else else
gtk_widget_destroy (window); gtk_widget_destroy (window);
} }
#endif #endif
/* /*
* Shaped Windows * Shaped Windows