further justify gtk_tree_model_get_flags by adding a second flag for atk.

Tue Jun 12 12:41:27 2001  Jonathan Blandford  <jrb@redhat.com>

	* gtk/gtktreemodel.h (GTK_TREE_MODEL_LIST_ONLY): further justify
	gtk_tree_model_get_flags by adding a second flag for atk.

	* gtk/gtktreemodel.c: make cursor behavior interact better with
	mouse presses.
This commit is contained in:
Jonathan Blandford
2001-06-12 18:12:08 +00:00
committed by Jonathan Blandford
parent 5f437331f1
commit 5c60d1cf77
13 changed files with 96 additions and 38 deletions

View File

@ -1,3 +1,11 @@
Tue Jun 12 12:41:27 2001 Jonathan Blandford <jrb@redhat.com>
* gtk/gtktreemodel.h (GTK_TREE_MODEL_LIST_ONLY): further justify
gtk_tree_model_get_flags by adding a second flag for atk.
* gtk/gtktreemodel.c: make cursor behavior interact better with
mouse presses.
Mon Jun 11 12:43:08 2001 Jonathan Blandford <jrb@redhat.com> Mon Jun 11 12:43:08 2001 Jonathan Blandford <jrb@redhat.com>
* gtk/gtktreeview.c (gtk_tree_view_class_init): changed * gtk/gtktreeview.c (gtk_tree_view_class_init): changed

View File

@ -1,3 +1,11 @@
Tue Jun 12 12:41:27 2001 Jonathan Blandford <jrb@redhat.com>
* gtk/gtktreemodel.h (GTK_TREE_MODEL_LIST_ONLY): further justify
gtk_tree_model_get_flags by adding a second flag for atk.
* gtk/gtktreemodel.c: make cursor behavior interact better with
mouse presses.
Mon Jun 11 12:43:08 2001 Jonathan Blandford <jrb@redhat.com> Mon Jun 11 12:43:08 2001 Jonathan Blandford <jrb@redhat.com>
* gtk/gtktreeview.c (gtk_tree_view_class_init): changed * gtk/gtktreeview.c (gtk_tree_view_class_init): changed

View File

@ -1,3 +1,11 @@
Tue Jun 12 12:41:27 2001 Jonathan Blandford <jrb@redhat.com>
* gtk/gtktreemodel.h (GTK_TREE_MODEL_LIST_ONLY): further justify
gtk_tree_model_get_flags by adding a second flag for atk.
* gtk/gtktreemodel.c: make cursor behavior interact better with
mouse presses.
Mon Jun 11 12:43:08 2001 Jonathan Blandford <jrb@redhat.com> Mon Jun 11 12:43:08 2001 Jonathan Blandford <jrb@redhat.com>
* gtk/gtktreeview.c (gtk_tree_view_class_init): changed * gtk/gtktreeview.c (gtk_tree_view_class_init): changed

View File

@ -1,3 +1,11 @@
Tue Jun 12 12:41:27 2001 Jonathan Blandford <jrb@redhat.com>
* gtk/gtktreemodel.h (GTK_TREE_MODEL_LIST_ONLY): further justify
gtk_tree_model_get_flags by adding a second flag for atk.
* gtk/gtktreemodel.c: make cursor behavior interact better with
mouse presses.
Mon Jun 11 12:43:08 2001 Jonathan Blandford <jrb@redhat.com> Mon Jun 11 12:43:08 2001 Jonathan Blandford <jrb@redhat.com>
* gtk/gtktreeview.c (gtk_tree_view_class_init): changed * gtk/gtktreeview.c (gtk_tree_view_class_init): changed

View File

@ -1,3 +1,11 @@
Tue Jun 12 12:41:27 2001 Jonathan Blandford <jrb@redhat.com>
* gtk/gtktreemodel.h (GTK_TREE_MODEL_LIST_ONLY): further justify
gtk_tree_model_get_flags by adding a second flag for atk.
* gtk/gtktreemodel.c: make cursor behavior interact better with
mouse presses.
Mon Jun 11 12:43:08 2001 Jonathan Blandford <jrb@redhat.com> Mon Jun 11 12:43:08 2001 Jonathan Blandford <jrb@redhat.com>
* gtk/gtktreeview.c (gtk_tree_view_class_init): changed * gtk/gtktreeview.c (gtk_tree_view_class_init): changed

View File

@ -1,3 +1,11 @@
Tue Jun 12 12:41:27 2001 Jonathan Blandford <jrb@redhat.com>
* gtk/gtktreemodel.h (GTK_TREE_MODEL_LIST_ONLY): further justify
gtk_tree_model_get_flags by adding a second flag for atk.
* gtk/gtktreemodel.c: make cursor behavior interact better with
mouse presses.
Mon Jun 11 12:43:08 2001 Jonathan Blandford <jrb@redhat.com> Mon Jun 11 12:43:08 2001 Jonathan Blandford <jrb@redhat.com>
* gtk/gtktreeview.c (gtk_tree_view_class_init): changed * gtk/gtktreeview.c (gtk_tree_view_class_init): changed

View File

@ -1,3 +1,11 @@
Tue Jun 12 12:41:27 2001 Jonathan Blandford <jrb@redhat.com>
* gtk/gtktreemodel.h (GTK_TREE_MODEL_LIST_ONLY): further justify
gtk_tree_model_get_flags by adding a second flag for atk.
* gtk/gtktreemodel.c: make cursor behavior interact better with
mouse presses.
Mon Jun 11 12:43:08 2001 Jonathan Blandford <jrb@redhat.com> Mon Jun 11 12:43:08 2001 Jonathan Blandford <jrb@redhat.com>
* gtk/gtktreeview.c (gtk_tree_view_class_init): changed * gtk/gtktreeview.c (gtk_tree_view_class_init): changed

View File

@ -375,7 +375,7 @@ gtk_list_store_get_flags (GtkTreeModel *tree_model)
{ {
g_return_val_if_fail (GTK_IS_LIST_STORE (tree_model), 0); g_return_val_if_fail (GTK_IS_LIST_STORE (tree_model), 0);
return GTK_TREE_MODEL_ITERS_PERSIST; return GTK_TREE_MODEL_ITERS_PERSIST | GTK_TREE_MODEL_LIST_ONLY;
} }
static gint static gint

View File

@ -40,7 +40,8 @@ typedef struct _GtkTreeModelIface GtkTreeModelIface;
typedef enum typedef enum
{ {
GTK_TREE_MODEL_ITERS_PERSIST = 1 << 0 GTK_TREE_MODEL_ITERS_PERSIST = 1 << 0,
GTK_TREE_MODEL_LIST_ONLY = 1 << 1,
} GtkTreeModelFlags; } GtkTreeModelFlags;
struct _GtkTreeIter struct _GtkTreeIter

View File

@ -234,6 +234,7 @@ struct _GtkTreeViewPrivate
}; }G_STMT_END }; }G_STMT_END
#endif #endif
/* functions that shouldn't be exported */ /* functions that shouldn't be exported */
void _gtk_tree_selection_internal_select_node (GtkTreeSelection *selection, void _gtk_tree_selection_internal_select_node (GtkTreeSelection *selection,
GtkRBNode *node, GtkRBNode *node,

View File

@ -162,7 +162,6 @@ _gtk_tree_selection_set_tree_view (GtkTreeSelection *selection,
selection->tree_view = tree_view; selection->tree_view = tree_view;
} }
/* FIXME explain what the anchor is */
/** /**
* gtk_tree_selection_set_mode: * gtk_tree_selection_set_mode:
* @selection: A #GtkTreeSelection. * @selection: A #GtkTreeSelection.

View File

@ -341,7 +341,8 @@ static gboolean gtk_tree_view_real_expand_row (GtkTreeView *tree_view,
gboolean open_all); gboolean open_all);
static void gtk_tree_view_real_set_cursor (GtkTreeView *tree_view, static void gtk_tree_view_real_set_cursor (GtkTreeView *tree_view,
GtkTreePath *path, GtkTreePath *path,
gboolean clear_and_select); gboolean clear_and_select,
GdkModifierType state);
static GtkContainerClass *parent_class = NULL; static GtkContainerClass *parent_class = NULL;
@ -1499,8 +1500,8 @@ gtk_tree_view_button_press (GtkWidget *widget,
background_area.y = y_offset + event->y + vertical_separator; background_area.y = y_offset + event->y + vertical_separator;
background_area.height = GTK_RBNODE_GET_HEIGHT (node) - vertical_separator; background_area.height = GTK_RBNODE_GET_HEIGHT (node) - vertical_separator;
background_area.x = 0; background_area.x = 0;
/* Let the cell have a chance at selecting it. */
/* Let the column have a chance at selecting it. */
for (i = 0, list = tree_view->priv->columns; i < tree_view->priv->n_columns; i++, list = list->next) for (i = 0, list = tree_view->priv->columns; i < tree_view->priv->n_columns; i++, list = list->next)
{ {
GtkTreeIter iter; GtkTreeIter iter;
@ -1532,9 +1533,7 @@ gtk_tree_view_button_press (GtkWidget *widget,
continue; continue;
} }
gtk_tree_model_get_iter (tree_view->priv->model, gtk_tree_model_get_iter (tree_view->priv->model, &iter, path);
&iter,
path);
gtk_tree_view_column_cell_set_cell_data (column, gtk_tree_view_column_cell_set_cell_data (column,
tree_view->priv->model, tree_view->priv->model,
&iter); &iter);
@ -1561,6 +1560,8 @@ gtk_tree_view_button_press (GtkWidget *widget,
if (column == NULL) if (column == NULL)
return FALSE; return FALSE;
/* The columns didn't want the event. We handle it */
/* Save press to possibly begin a drag /* Save press to possibly begin a drag
*/ */
if (tree_view->priv->pressed_button < 0) if (tree_view->priv->pressed_button < 0)
@ -1570,19 +1571,29 @@ gtk_tree_view_button_press (GtkWidget *widget,
tree_view->priv->press_start_y = event->y; tree_view->priv->press_start_y = event->y;
} }
_gtk_tree_selection_internal_select_node (tree_view->priv->selection, g_print ("%d\n", event->state);
node, gtk_tree_view_real_set_cursor (tree_view, path, TRUE, event->state);
tree,
path,
event->state);
if (event->button == 1 && event->type == GDK_2BUTTON_PRESS) if (event->button == 1 && event->type == GDK_2BUTTON_PRESS)
{
if (GTK_RBNODE_FLAG_SET (node, GTK_RBNODE_IS_PARENT))
{
if (node->children == NULL)
gtk_tree_view_real_expand_row (tree_view, path,
tree, node, FALSE);
else
gtk_tree_view_real_collapse_row (GTK_TREE_VIEW (widget), path,
tree, node);
}
gtk_tree_view_row_activated (tree_view, path, column); gtk_tree_view_row_activated (tree_view, path, column);
}
gtk_tree_path_free (path); gtk_tree_path_free (path);
return TRUE; return TRUE;
} }
/* We didn't click in the window. Let's check to see if we clicked on a column resize window.
*/
for (i = 0, list = tree_view->priv->columns; list; list = list->next, i++) for (i = 0, list = tree_view->priv->columns; list; list = list->next, i++)
{ {
column = list->data; column = list->data;
@ -5609,9 +5620,9 @@ gtk_tree_view_focus_to_cursor (GtkTreeView *tree_view)
} }
if (tree_view->priv->selection->type == GTK_TREE_SELECTION_SINGLE) if (tree_view->priv->selection->type == GTK_TREE_SELECTION_SINGLE)
gtk_tree_view_real_set_cursor (tree_view, cursor_path, TRUE); gtk_tree_view_real_set_cursor (tree_view, cursor_path, TRUE, 0);
else else
gtk_tree_view_real_set_cursor (tree_view, cursor_path, FALSE); gtk_tree_view_real_set_cursor (tree_view, cursor_path, FALSE, 0);
gtk_tree_path_free (cursor_path); gtk_tree_path_free (cursor_path);
} }
@ -5820,7 +5831,6 @@ gtk_tree_view_real_expand_collapse_cursor_row (GtkTreeView *tree_view,
{ {
GtkTreePath *cursor_path = NULL; GtkTreePath *cursor_path = NULL;
g_print ("in gtk_tree_view_real_expand_collapse_cursor_row\n");
cursor_path = NULL; cursor_path = NULL;
if (tree_view->priv->cursor) if (tree_view->priv->cursor)
cursor_path = gtk_tree_row_reference_get_path (tree_view->priv->cursor); cursor_path = gtk_tree_row_reference_get_path (tree_view->priv->cursor);
@ -7308,7 +7318,8 @@ gtk_tree_view_set_reorderable (GtkTreeView *tree_view,
static void static void
gtk_tree_view_real_set_cursor (GtkTreeView *tree_view, gtk_tree_view_real_set_cursor (GtkTreeView *tree_view,
GtkTreePath *path, GtkTreePath *path,
gboolean clear_and_select) gboolean clear_and_select,
GdkModifierType state)
{ {
GtkRBTree *tree = NULL; GtkRBTree *tree = NULL;
GtkRBNode *node = NULL; GtkRBNode *node = NULL;
@ -7327,29 +7338,22 @@ gtk_tree_view_real_set_cursor (GtkTreeView *tree_view,
gtk_tree_selection_unselect_all (tree_view->priv->selection); gtk_tree_selection_unselect_all (tree_view->priv->selection);
_gtk_tree_selection_internal_select_node (tree_view->priv->selection, _gtk_tree_selection_internal_select_node (tree_view->priv->selection,
node, tree, node, tree,
path, 0); path, state);
} }
gtk_tree_view_clamp_node_visible (tree_view, tree, node); gtk_tree_view_clamp_node_visible (tree_view, tree, node);
gtk_tree_view_queue_draw_node (tree_view, tree, node, NULL); gtk_tree_view_queue_draw_node (tree_view, tree, node, NULL);
} }
static void
gtk_tree_view_set_anchor (GtkTreeView *tree_view,
GtkTreePath *path)
{
if (tree_view->priv->anchor)
gtk_tree_row_reference_free (tree_view->priv->anchor);
tree_view->priv->anchor = gtk_tree_row_reference_new_proxy (G_OBJECT (tree_view),
tree_view->priv->model,
path);
}
/** /**
* gtk_tree_view_set_cursor: * gtk_tree_view_set_cursor:
* @tree_view: A #GtkTreeView * @tree_view: A #GtkTreeView
* @path: A #GtkTreePath * @path: A #GtkTreePath
* *
* Sets the current keyboard focus to be at @path. * Sets the current keyboard focus to be at @path, and selects it. This is
* useful when you want to focus the user's attention on a particular row. If
* you want to give the user keyboard focus in the tree_view, you should use
* this function to set the correct path, and gtk_widget_grab_focus (GTK_WIDGET
* (tree_view)) to actually give focus to the @tree_view.
**/ **/
void void
gtk_tree_view_set_cursor (GtkTreeView *tree_view, gtk_tree_view_set_cursor (GtkTreeView *tree_view,
@ -7358,8 +7362,7 @@ gtk_tree_view_set_cursor (GtkTreeView *tree_view,
g_return_if_fail (GTK_IS_TREE_VIEW (tree_view)); g_return_if_fail (GTK_IS_TREE_VIEW (tree_view));
g_return_if_fail (path != NULL); g_return_if_fail (path != NULL);
gtk_tree_view_real_set_cursor (tree_view, path, TRUE); gtk_tree_view_real_set_cursor (tree_view, path, TRUE, 0);
gtk_widget_grab_focus (GTK_WIDGET (tree_view));
} }

View File

@ -175,8 +175,6 @@ void gtk_tree_view_column_set_sort_order (GtkTreeViewCol
GtkTreeSortOrder gtk_tree_view_column_get_sort_order (GtkTreeViewColumn *tree_column); GtkTreeSortOrder gtk_tree_view_column_get_sort_order (GtkTreeViewColumn *tree_column);
/* These functions are meant primarily for interaction between the GtkTreeView and the column. /* These functions are meant primarily for interaction between the GtkTreeView and the column.
*/ */
void gtk_tree_view_column_cell_set_cell_data (GtkTreeViewColumn *tree_column, void gtk_tree_view_column_cell_set_cell_data (GtkTreeViewColumn *tree_column,