+Wed Nov 11 19:54:58 1998 Lars Hamann <lars@gtk.org>
+
+ * gtk/gtkscrolledwindow.c (gtk_scrolled_window_class_init)
+ (gtk_scrolled_window_set_arg) (gtk_scrolled_window_get_arg):
+ added ARG_WINDOW_PLACEMENT
+
+ * gtk/gtkclist.c (size_allocate_columns): resize column if column
+ button > column width and auto_resize is set
+ (real_clear) (column_auto_resize) (gtk_clist_optimal_column_width):
+ consider column button width of auto resized columns
+ (gtk_clist_parent_set): removed
+
+ * gtk/gtkctree.c (gtk_ctree_insert_node): call column_auto_resize.
+ (auto_resize_columns): auto_resize all columns
+ (real_tree_collapse) (gtk_ctree_remove_node): call auto_resize_columns
+ (column_auto_resize): respect column button width of auto resized
+ columns
+
1998-11-10 Martin Baulig <baulig@merkur.uni-trier.de>
* gtk/gtkfeatures.h.in (GTK_HAVE_FEATURES_1_1_4): Define this so
+Wed Nov 11 19:54:58 1998 Lars Hamann <lars@gtk.org>
+
+ * gtk/gtkscrolledwindow.c (gtk_scrolled_window_class_init)
+ (gtk_scrolled_window_set_arg) (gtk_scrolled_window_get_arg):
+ added ARG_WINDOW_PLACEMENT
+
+ * gtk/gtkclist.c (size_allocate_columns): resize column if column
+ button > column width and auto_resize is set
+ (real_clear) (column_auto_resize) (gtk_clist_optimal_column_width):
+ consider column button width of auto resized columns
+ (gtk_clist_parent_set): removed
+
+ * gtk/gtkctree.c (gtk_ctree_insert_node): call column_auto_resize.
+ (auto_resize_columns): auto_resize all columns
+ (real_tree_collapse) (gtk_ctree_remove_node): call auto_resize_columns
+ (column_auto_resize): respect column button width of auto resized
+ columns
+
1998-11-10 Martin Baulig <baulig@merkur.uni-trier.de>
* gtk/gtkfeatures.h.in (GTK_HAVE_FEATURES_1_1_4): Define this so
+Wed Nov 11 19:54:58 1998 Lars Hamann <lars@gtk.org>
+
+ * gtk/gtkscrolledwindow.c (gtk_scrolled_window_class_init)
+ (gtk_scrolled_window_set_arg) (gtk_scrolled_window_get_arg):
+ added ARG_WINDOW_PLACEMENT
+
+ * gtk/gtkclist.c (size_allocate_columns): resize column if column
+ button > column width and auto_resize is set
+ (real_clear) (column_auto_resize) (gtk_clist_optimal_column_width):
+ consider column button width of auto resized columns
+ (gtk_clist_parent_set): removed
+
+ * gtk/gtkctree.c (gtk_ctree_insert_node): call column_auto_resize.
+ (auto_resize_columns): auto_resize all columns
+ (real_tree_collapse) (gtk_ctree_remove_node): call auto_resize_columns
+ (column_auto_resize): respect column button width of auto resized
+ columns
+
1998-11-10 Martin Baulig <baulig@merkur.uni-trier.de>
* gtk/gtkfeatures.h.in (GTK_HAVE_FEATURES_1_1_4): Define this so
+Wed Nov 11 19:54:58 1998 Lars Hamann <lars@gtk.org>
+
+ * gtk/gtkscrolledwindow.c (gtk_scrolled_window_class_init)
+ (gtk_scrolled_window_set_arg) (gtk_scrolled_window_get_arg):
+ added ARG_WINDOW_PLACEMENT
+
+ * gtk/gtkclist.c (size_allocate_columns): resize column if column
+ button > column width and auto_resize is set
+ (real_clear) (column_auto_resize) (gtk_clist_optimal_column_width):
+ consider column button width of auto resized columns
+ (gtk_clist_parent_set): removed
+
+ * gtk/gtkctree.c (gtk_ctree_insert_node): call column_auto_resize.
+ (auto_resize_columns): auto_resize all columns
+ (real_tree_collapse) (gtk_ctree_remove_node): call auto_resize_columns
+ (column_auto_resize): respect column button width of auto resized
+ columns
+
1998-11-10 Martin Baulig <baulig@merkur.uni-trier.de>
* gtk/gtkfeatures.h.in (GTK_HAVE_FEATURES_1_1_4): Define this so
+Wed Nov 11 19:54:58 1998 Lars Hamann <lars@gtk.org>
+
+ * gtk/gtkscrolledwindow.c (gtk_scrolled_window_class_init)
+ (gtk_scrolled_window_set_arg) (gtk_scrolled_window_get_arg):
+ added ARG_WINDOW_PLACEMENT
+
+ * gtk/gtkclist.c (size_allocate_columns): resize column if column
+ button > column width and auto_resize is set
+ (real_clear) (column_auto_resize) (gtk_clist_optimal_column_width):
+ consider column button width of auto resized columns
+ (gtk_clist_parent_set): removed
+
+ * gtk/gtkctree.c (gtk_ctree_insert_node): call column_auto_resize.
+ (auto_resize_columns): auto_resize all columns
+ (real_tree_collapse) (gtk_ctree_remove_node): call auto_resize_columns
+ (column_auto_resize): respect column button width of auto resized
+ columns
+
1998-11-10 Martin Baulig <baulig@merkur.uni-trier.de>
* gtk/gtkfeatures.h.in (GTK_HAVE_FEATURES_1_1_4): Define this so
+Wed Nov 11 19:54:58 1998 Lars Hamann <lars@gtk.org>
+
+ * gtk/gtkscrolledwindow.c (gtk_scrolled_window_class_init)
+ (gtk_scrolled_window_set_arg) (gtk_scrolled_window_get_arg):
+ added ARG_WINDOW_PLACEMENT
+
+ * gtk/gtkclist.c (size_allocate_columns): resize column if column
+ button > column width and auto_resize is set
+ (real_clear) (column_auto_resize) (gtk_clist_optimal_column_width):
+ consider column button width of auto resized columns
+ (gtk_clist_parent_set): removed
+
+ * gtk/gtkctree.c (gtk_ctree_insert_node): call column_auto_resize.
+ (auto_resize_columns): auto_resize all columns
+ (real_tree_collapse) (gtk_ctree_remove_node): call auto_resize_columns
+ (column_auto_resize): respect column button width of auto resized
+ columns
+
1998-11-10 Martin Baulig <baulig@merkur.uni-trier.de>
* gtk/gtkfeatures.h.in (GTK_HAVE_FEATURES_1_1_4): Define this so
+Wed Nov 11 19:54:58 1998 Lars Hamann <lars@gtk.org>
+
+ * gtk/gtkscrolledwindow.c (gtk_scrolled_window_class_init)
+ (gtk_scrolled_window_set_arg) (gtk_scrolled_window_get_arg):
+ added ARG_WINDOW_PLACEMENT
+
+ * gtk/gtkclist.c (size_allocate_columns): resize column if column
+ button > column width and auto_resize is set
+ (real_clear) (column_auto_resize) (gtk_clist_optimal_column_width):
+ consider column button width of auto resized columns
+ (gtk_clist_parent_set): removed
+
+ * gtk/gtkctree.c (gtk_ctree_insert_node): call column_auto_resize.
+ (auto_resize_columns): auto_resize all columns
+ (real_tree_collapse) (gtk_ctree_remove_node): call auto_resize_columns
+ (column_auto_resize): respect column button width of auto resized
+ columns
+
1998-11-10 Martin Baulig <baulig@merkur.uni-trier.de>
* gtk/gtkfeatures.h.in (GTK_HAVE_FEATURES_1_1_4): Define this so
GtkDirectionType direction);
static void gtk_clist_style_set (GtkWidget *widget,
GtkStyle *previous_style);
-static void gtk_clist_parent_set (GtkWidget *widget,
- GtkWidget *previous_parent);
/* GtkContainer Methods */
static void gtk_clist_set_focus_child (GtkContainer *container,
/* Size Allocation / Requisition */
static void size_allocate_title_buttons (GtkCList *clist);
-static void size_allocate_columns (GtkCList *clist);
+static void size_allocate_columns (GtkCList *clist,
+ gboolean block_resize);
static gint list_requisition_width (GtkCList *clist);
/* Memory Allocation/Distruction Routines */
widget_class->focus_out_event = gtk_clist_focus_out;
widget_class->draw_focus = gtk_clist_draw_focus;
widget_class->style_set = gtk_clist_style_set;
- widget_class->parent_set = gtk_clist_parent_set;
/* container_class->add = NULL; use the default GtkContainerClass warning */
/* container_class->remove=NULL; use the default GtkContainerClass warning */
{
GtkRequisition requisition;
GList *list;
- gint width = 0;
+ gint width;
g_return_val_if_fail (clist != NULL, 0);
g_return_val_if_fail (GTK_CLIST (clist), 0);
if (column < 0 || column > clist->columns)
return 0;
+ if (GTK_CLIST_SHOW_TITLES (clist) && clist->column[column].button)
+ width = (clist->column[column].button->requisition.width -
+ (CELL_SPACING + (2 * COLUMN_INSET)));
+ else
+ width = 0;
+
for (list = clist->row_list; list; list = list->next)
{
GTK_CLIST_CLASS_FW (clist)->cell_size_request
GTK_CLIST_AUTO_RESIZE_BLOCKED (clist))
return;
- GTK_CLIST_CLASS_FW (clist)->cell_size_request (clist, clist_row,
- column, &requisition);
+ if (clist_row)
+ GTK_CLIST_CLASS_FW (clist)->cell_size_request (clist, clist_row,
+ column, &requisition);
+ else
+ requisition.width = 0;
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));
- }
+ gtk_clist_set_column_width (clist, column, requisition.width);
else if (requisition.width < old_width &&
old_width == clist->column[column].width)
{
/* run a "gtk_clist_optimal_column_width" but break, if
* the column doesn't shrink */
- new_width = 0;
+ if (GTK_CLIST_SHOW_TITLES (clist) && clist->column[column].button)
+ new_width = (clist->column[column].button->requisition.width -
+ (CELL_SPACING + (2 * COLUMN_INSET)));
+ else
+ new_width = 0;
+
for (list = clist->row_list; list; list = list->next)
{
GTK_CLIST_CLASS_FW (clist)->cell_size_request
if (clist->column[column].max_width >= 0 &&
width > clist->column[column].max_width)
width = clist->column[column].max_width;
-
+
clist->column[column].width = width;
clist->column[column].width_set = TRUE;
* been size_allocated yet, and pointless. Should
* a flag be kept
*/
- size_allocate_columns (clist);
+ size_allocate_columns (clist, TRUE);
size_allocate_title_buttons (clist);
if (!GTK_CLIST_FROZEN (clist))
}
static void
-size_allocate_columns (GtkCList *clist)
+size_allocate_columns (GtkCList *clist,
+ gboolean block_resize)
{
gint xoffset = CELL_SPACING + COLUMN_INSET;
gint last_column;
clist->column[i].area.x = xoffset;
if (clist->column[i].width_set)
{
+ if (!block_resize && GTK_CLIST_SHOW_TITLES (clist) &&
+ clist->column[i].auto_resize && clist->column[i].button)
+ {
+ gint width;
+
+ width = (clist->column[i].button->requisition.width -
+ (CELL_SPACING + (2 * COLUMN_INSET)));
+
+ if (width > clist->column[i].width)
+ gtk_clist_set_column_width (clist, i, width);
+ }
+
clist->column[i].area.width = clist->column[i].width;
xoffset += clist->column[i].width + CELL_SPACING + (2* COLUMN_INSET);
}
g_list_free (free_list);
GTK_CLIST_UNSET_FLAG (clist, CLIST_AUTO_RESIZE_BLOCKED);
for (i = 0; i < clist->columns; i++)
- if (clist->column[i].auto_resize && clist->column[i].width > 0)
- gtk_clist_set_column_width (clist, i, 0);
-
+ if (clist->column[i].auto_resize)
+ {
+ if (GTK_CLIST_SHOW_TITLES (clist) && clist->column[i].button)
+ gtk_clist_set_column_width
+ (clist, i, (clist->column[i].button->requisition.width -
+ (CELL_SPACING + (2 * COLUMN_INSET))));
+ else
+ gtk_clist_set_column_width (clist, i, 0);
+ }
/* zero-out the scrollbars */
if (clist->vadjustment)
{
}
if (GTK_CLIST_AUTO_RESIZE_BLOCKED (clist))
- {
- for (i = 0; i < clist->columns; i++)
- if (clist->column[i].auto_resize)
- column_auto_resize (clist, clist_row, i, old_width[i]);
- }
+ for (i = 0; i < clist->columns; i++)
+ column_auto_resize (clist, clist_row, i, old_width[i]);
g_free (old_width);
* gtk_clist_draw
* gtk_clist_expose
* gtk_clist_style_set
- * gtk_clist_parent_set
* gtk_clist_key_press
* gtk_clist_button_press
* gtk_clist_button_release
}
}
-static void
-gtk_clist_parent_set (GtkWidget *widget,
- GtkWidget *previous_parent)
-{
- GtkCList *clist;
-
- g_return_if_fail (widget != NULL);
- g_return_if_fail (GTK_IS_WIDGET (widget));
-
- clist = GTK_CLIST (widget);
-
- /* create adjustments */
- /* if (!clist->hadjustment)
- gtk_clist_set_hadjustment (clist, NULL);
- if (!clist->vadjustment)
- gtk_clist_set_vadjustment (clist, NULL);*/
-}
-
static gint
gtk_clist_key_press (GtkWidget *widget,
GdkEventKey *event)
}
/* column button allocation */
- size_allocate_columns (clist);
+ size_allocate_columns (clist, FALSE);
size_allocate_title_buttons (clist);
adjust_adjustments (clist, TRUE);
GtkCListRow *clist_row,
gint column,
gint old_width);
+static void auto_resize_columns (GtkCList *clist);
enum
{
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);
- }
- }
+ auto_resize_columns (clist);
row = g_list_position (clist->row_list, (GList *)node);
if (row < clist->focus_row)
GTK_CLIST_AUTO_RESIZE_BLOCKED (clist))
return;
- GTK_CLIST_CLASS_FW (clist)->cell_size_request (clist, clist_row,
- column, &requisition);
+ if (clist_row)
+ GTK_CLIST_CLASS_FW (clist)->cell_size_request (clist, clist_row,
+ column, &requisition);
+ else
+ requisition.width = 0;
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));
- }
+ gtk_clist_set_column_width (clist, column, requisition.width);
else if (requisition.width < old_width &&
old_width == clist->column[column].width)
{
GList *list;
- gint new_width = 0;
+ gint new_width;
/* run a "gtk_clist_optimal_column_width" but break, if
* the column doesn't shrink */
+ if (GTK_CLIST_SHOW_TITLES (clist) && clist->column[column].button)
+ new_width = (clist->column[column].button->requisition.width -
+ (CELL_SPACING + (2 * COLUMN_INSET)));
+ else
+ new_width = 0;
+
for (list = clist->row_list; list; list = list->next)
{
GTK_CLIST_CLASS_FW (clist)->cell_size_request
break;
}
if (new_width < clist->column[column].width)
- gtk_clist_set_column_width
- (clist, column, MAX (new_width, clist->column[column].min_width));
+ gtk_clist_set_column_width (clist, column, new_width);
}
}
+static void
+auto_resize_columns (GtkCList *clist)
+{
+ gint i;
+
+ if (GTK_CLIST_AUTO_RESIZE_BLOCKED (clist))
+ return;
+
+ for (i = 0; i < clist->columns; i++)
+ column_auto_resize (clist, NULL, i, clist->column[i].width);
+}
+
static void
cell_size_request (GtkCList *clist,
GtkCListRow *clist_row,
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);
- }
+ column_auto_resize (clist, &(new_row->row), i, 0);
}
if (!GTK_CLIST_FROZEN (clist))
!clist->selection && clist->focus_row >= 0)
gtk_clist_select_row (clist, clist->focus_row, -1);
- 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);
- }
- }
-
+ auto_resize_columns (clist);
}
else
gtk_clist_clear (clist);
ARG_0,
ARG_VIEWPORT,
ARG_HSCROLLBAR_POLICY,
- ARG_VSCROLLBAR_POLICY
+ ARG_VSCROLLBAR_POLICY,
+ ARG_WINDOW_PLACEMENT
};
GTK_TYPE_POLICY_TYPE,
GTK_ARG_READWRITE,
ARG_VSCROLLBAR_POLICY);
+ gtk_object_add_arg_type ("GtkScrolledWindow::window_placement",
+ GTK_TYPE_CORNER_TYPE,
+ GTK_ARG_READWRITE,
+ ARG_WINDOW_PLACEMENT);
object_class->set_arg = gtk_scrolled_window_set_arg;
object_class->get_arg = gtk_scrolled_window_get_arg;
scrolled_window->hscrollbar_policy,
GTK_VALUE_ENUM (*arg));
break;
+ case ARG_WINDOW_PLACEMENT:
+ gtk_scrolled_window_set_placement (scrolled_window,
+ GTK_VALUE_ENUM (*arg));
+ break;
default:
break;
}
case ARG_VSCROLLBAR_POLICY:
GTK_VALUE_ENUM (*arg) = scrolled_window->vscrollbar_policy;
break;
+ case ARG_WINDOW_PLACEMENT:
+ GTK_VALUE_ENUM (*arg) = scrolled_window->window_placement;
+ break;
default:
arg->type = GTK_TYPE_INVALID;
break;
{
static char *text[] =
{
- "This", "is", "a", "inserted", "row.",
- "This", "is", "a", "inserted", "row.",
- "This", "is", "a", "inserted", "row.",
- "This", "is", "a", "inserted", "row."
+ "This", "is", "an", "inserted", "row.",
+ "This", "is", "an", "inserted", "row.",
+ "This", "is", "an", "inserted", "row.",
+ "This", "is", "an", "inserted", "row."
};
static GtkStyle *style1 = NULL;
GTK_POLICY_AUTOMATIC,
GTK_POLICY_AUTOMATIC);
gtk_container_add (GTK_CONTAINER (scrolled_win), clist);
- /*clist = gtk_clist_new (TESTGTK_CLIST_COLUMNS);*/
gtk_signal_connect (GTK_OBJECT (clist), "click_column",
(GtkSignalFunc) clist_click_column, NULL);
gtk_clist_set_row_height (GTK_CLIST (clist), 18);
gtk_widget_set_usize (clist, -1, 300);
- gtk_clist_set_column_width (GTK_CLIST (clist), 0, 100);
-
for (i = 1; i < TESTGTK_CLIST_COLUMNS; i++)
gtk_clist_set_column_width (GTK_CLIST (clist), i, 80);
if (GTK_CTREE_ROW (node)->children)
gtk_ctree_node_set_row_style (ctree, GTK_CTREE_ROW (node)->children,
style2);
-
}
void unselect_all (GtkWidget *widget, GtkCTree *ctree)
void remove_selection (GtkWidget *widget, GtkCTree *ctree)
{
- GtkCTreeNode *work;
- GtkCTreeNode *new_sel;
+ GtkCList *clist;
+ GtkCTreeNode *node;
GList *selection;
+ GList *list = NULL;
- selection = GTK_CLIST (ctree)->selection;
- new_sel = NULL;
+ clist = GTK_CLIST (ctree);
- gtk_clist_freeze (GTK_CLIST (ctree));
+ gtk_clist_freeze (clist);
+
+ for (selection = clist->selection; selection; selection = selection->next)
+ list = g_list_prepend (list, selection->data);
+ selection = clist->selection;
while (selection)
{
- work = selection->data;
- selection = selection->next;
+ node = selection->data;
- if (GTK_CTREE_ROW (work)->is_leaf)
+ if (!g_list_find (list, node))
+ break;
+
+ if (GTK_CTREE_ROW (node)->is_leaf)
pages--;
else
- gtk_ctree_post_recursive (ctree, work,
+ gtk_ctree_post_recursive (ctree, node,
(GtkCTreeFunc) count_items, NULL);
- if (GTK_CLIST (ctree)->selection_mode == GTK_SELECTION_BROWSE)
- {
- if (GTK_CTREE_ROW (work)->children)
- {
- new_sel = GTK_CTREE_ROW (work)->sibling;
- if (!new_sel)
- new_sel = GTK_CTREE_NODE_NEXT (work);
- }
- else
- {
- if (GTK_CTREE_NODE_NEXT (work))
- new_sel = GTK_CTREE_NODE_NEXT (work);
- else
- new_sel = GTK_CTREE_NODE_PREV (work);
- }
- }
-
- gtk_ctree_remove_node (ctree, work);
+ gtk_ctree_remove_node (ctree, node);
+ selection = clist->selection;
}
-
- if (new_sel)
- gtk_ctree_select (ctree, new_sel);
-
- gtk_clist_thaw (GTK_CLIST (ctree));
+ g_list_free (list);
+ gtk_clist_thaw (clist);
after_press (ctree, NULL);
}
gtk_container_border_width (GTK_CONTAINER (scrolled_win), 5);
gtk_box_pack_start (GTK_BOX (vbox), scrolled_win, TRUE, TRUE, 0);
gtk_clist_set_selection_mode (GTK_CLIST (ctree), GTK_SELECTION_EXTENDED);
- 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);
{
static char *text[] =
{
- "This", "is", "a", "inserted", "row.",
- "This", "is", "a", "inserted", "row.",
- "This", "is", "a", "inserted", "row.",
- "This", "is", "a", "inserted", "row."
+ "This", "is", "an", "inserted", "row.",
+ "This", "is", "an", "inserted", "row.",
+ "This", "is", "an", "inserted", "row.",
+ "This", "is", "an", "inserted", "row."
};
static GtkStyle *style1 = NULL;
GTK_POLICY_AUTOMATIC,
GTK_POLICY_AUTOMATIC);
gtk_container_add (GTK_CONTAINER (scrolled_win), clist);
- /*clist = gtk_clist_new (TESTGTK_CLIST_COLUMNS);*/
gtk_signal_connect (GTK_OBJECT (clist), "click_column",
(GtkSignalFunc) clist_click_column, NULL);
gtk_clist_set_row_height (GTK_CLIST (clist), 18);
gtk_widget_set_usize (clist, -1, 300);
- gtk_clist_set_column_width (GTK_CLIST (clist), 0, 100);
-
for (i = 1; i < TESTGTK_CLIST_COLUMNS; i++)
gtk_clist_set_column_width (GTK_CLIST (clist), i, 80);
if (GTK_CTREE_ROW (node)->children)
gtk_ctree_node_set_row_style (ctree, GTK_CTREE_ROW (node)->children,
style2);
-
}
void unselect_all (GtkWidget *widget, GtkCTree *ctree)
void remove_selection (GtkWidget *widget, GtkCTree *ctree)
{
- GtkCTreeNode *work;
- GtkCTreeNode *new_sel;
+ GtkCList *clist;
+ GtkCTreeNode *node;
GList *selection;
+ GList *list = NULL;
- selection = GTK_CLIST (ctree)->selection;
- new_sel = NULL;
+ clist = GTK_CLIST (ctree);
- gtk_clist_freeze (GTK_CLIST (ctree));
+ gtk_clist_freeze (clist);
+
+ for (selection = clist->selection; selection; selection = selection->next)
+ list = g_list_prepend (list, selection->data);
+ selection = clist->selection;
while (selection)
{
- work = selection->data;
- selection = selection->next;
+ node = selection->data;
- if (GTK_CTREE_ROW (work)->is_leaf)
+ if (!g_list_find (list, node))
+ break;
+
+ if (GTK_CTREE_ROW (node)->is_leaf)
pages--;
else
- gtk_ctree_post_recursive (ctree, work,
+ gtk_ctree_post_recursive (ctree, node,
(GtkCTreeFunc) count_items, NULL);
- if (GTK_CLIST (ctree)->selection_mode == GTK_SELECTION_BROWSE)
- {
- if (GTK_CTREE_ROW (work)->children)
- {
- new_sel = GTK_CTREE_ROW (work)->sibling;
- if (!new_sel)
- new_sel = GTK_CTREE_NODE_NEXT (work);
- }
- else
- {
- if (GTK_CTREE_NODE_NEXT (work))
- new_sel = GTK_CTREE_NODE_NEXT (work);
- else
- new_sel = GTK_CTREE_NODE_PREV (work);
- }
- }
-
- gtk_ctree_remove_node (ctree, work);
+ gtk_ctree_remove_node (ctree, node);
+ selection = clist->selection;
}
-
- if (new_sel)
- gtk_ctree_select (ctree, new_sel);
-
- gtk_clist_thaw (GTK_CLIST (ctree));
+ g_list_free (list);
+ gtk_clist_thaw (clist);
after_press (ctree, NULL);
}
gtk_container_border_width (GTK_CONTAINER (scrolled_win), 5);
gtk_box_pack_start (GTK_BOX (vbox), scrolled_win, TRUE, TRUE, 0);
gtk_clist_set_selection_mode (GTK_CLIST (ctree), GTK_SELECTION_EXTENDED);
- 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);