| 
						
					 | 
				
			
			 | 
			 | 
			
				@ -100,11 +100,13 @@ enum
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  CURSOR_CHANGED,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  MOVE_CURSOR,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  SELECT_ALL,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  UNSELECT_ALL,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  SELECT_CURSOR_ROW,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  TOGGLE_CURSOR_ROW,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  EXPAND_COLLAPSE_CURSOR_ROW,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  SELECT_CURSOR_PARENT,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  START_INTERACTIVE_SEARCH,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  FOCUS_COLUMN_HEADER,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  LAST_SIGNAL
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				};
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
	
		
			
				
					
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@ -220,10 +222,11 @@ static void     gtk_tree_view_drag_data_received (GtkWidget        *widget,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				static void gtk_tree_view_set_adjustments                 (GtkTreeView     *tree_view,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
											   GtkAdjustment   *hadj,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
											   GtkAdjustment   *vadj);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				static void gtk_tree_view_real_move_cursor                (GtkTreeView     *tree_view,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				static gboolean gtk_tree_view_real_move_cursor            (GtkTreeView     *tree_view,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
											   GtkMovementStep  step,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
											   gint             count);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				static void gtk_tree_view_real_select_all                 (GtkTreeView     *tree_view);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				static void gtk_tree_view_real_unselect_all               (GtkTreeView     *tree_view);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				static void gtk_tree_view_real_select_cursor_row          (GtkTreeView     *tree_view,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
											   gboolean         start_editing);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				static void gtk_tree_view_real_toggle_cursor_row          (GtkTreeView     *tree_view);
 | 
			
		
		
	
	
		
			
				
					
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@ -393,6 +396,10 @@ static void gtk_tree_view_real_start_editing (GtkTreeView       *tree_view,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				static void gtk_tree_view_stop_editing                  (GtkTreeView *tree_view,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
											 gboolean     cancel_editing);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				static void gtk_tree_view_real_start_interactive_search (GtkTreeView *tree_view);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				static void gtk_tree_view_real_focus_column_header      (GtkTreeView *tree_view);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				static GtkTreeViewColumn *gtk_tree_view_get_drop_column (GtkTreeView       *tree_view,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
											 GtkTreeViewColumn *column,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
											 gint               drop_position);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				static GtkContainerClass *parent_class = NULL;
 | 
			
		
		
	
	
		
			
				
					
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@ -488,11 +495,13 @@ gtk_tree_view_class_init (GtkTreeViewClass *class)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  class->set_scroll_adjustments = gtk_tree_view_set_adjustments;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  class->move_cursor = gtk_tree_view_real_move_cursor;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  class->select_all = gtk_tree_view_real_select_all;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  class->unselect_all = gtk_tree_view_real_unselect_all;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  class->select_cursor_row = gtk_tree_view_real_select_cursor_row;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  class->toggle_cursor_row = gtk_tree_view_real_toggle_cursor_row;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  class->expand_collapse_cursor_row = gtk_tree_view_real_expand_collapse_cursor_row;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  class->select_cursor_parent = gtk_tree_view_real_select_cursor_parent;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  class->start_interactive_search = gtk_tree_view_real_start_interactive_search;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  class->focus_column_header = gtk_tree_view_real_focus_column_header;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  /* Properties */
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
	
		
			
				
					
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@ -723,6 +732,15 @@ gtk_tree_view_class_init (GtkTreeViewClass *class)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                  _gtk_marshal_NONE__NONE,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                  GTK_TYPE_NONE, 0);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  tree_view_signals[UNSELECT_ALL] =
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    g_signal_new ("unselect_all",
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						  G_TYPE_FROM_CLASS (object_class),
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						  G_SIGNAL_RUN_LAST | GTK_RUN_ACTION,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						  G_STRUCT_OFFSET (GtkTreeViewClass, unselect_all),
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						  NULL, NULL,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						  _gtk_marshal_NONE__NONE,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						  GTK_TYPE_NONE, 0);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  tree_view_signals[SELECT_CURSOR_ROW] =
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    g_signal_new ("select_cursor_row",
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                  G_TYPE_FROM_CLASS (object_class),
 | 
			
		
		
	
	
		
			
				
					
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@ -769,6 +787,15 @@ gtk_tree_view_class_init (GtkTreeViewClass *class)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                  _gtk_marshal_NONE__NONE,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                  GTK_TYPE_NONE, 0);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  tree_view_signals[FOCUS_COLUMN_HEADER] =
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    g_signal_new ("focus_column_header",
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						  G_TYPE_FROM_CLASS (object_class),
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						  G_SIGNAL_RUN_LAST | GTK_RUN_ACTION,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						  G_STRUCT_OFFSET (GtkTreeViewClass, focus_column_header),
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						  NULL, NULL,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						  _gtk_marshal_NONE__NONE,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						  GTK_TYPE_NONE, 0);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  /* Key bindings */
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  gtk_tree_view_add_move_binding (binding_set, GDK_Up, 0,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								  GTK_MOVEMENT_DISPLAY_LINES, -1);
 | 
			
		
		
	
	
		
			
				
					
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@ -821,6 +848,10 @@ gtk_tree_view_class_init (GtkTreeViewClass *class)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  gtk_binding_entry_add_signal (binding_set, GDK_space, GDK_CONTROL_MASK, "toggle_cursor_row", 0);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  gtk_binding_entry_add_signal (binding_set, GDK_a, GDK_CONTROL_MASK, "select_all", 0);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  gtk_binding_entry_add_signal (binding_set, GDK_slash, GDK_CONTROL_MASK, "select_all", 0);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  gtk_binding_entry_add_signal (binding_set, GDK_A, GDK_CONTROL_MASK | GDK_SHIFT_MASK, "unselect_all", 0);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  gtk_binding_entry_add_signal (binding_set, GDK_backslash, GDK_CONTROL_MASK, "unselect_all", 0);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  gtk_binding_entry_add_signal (binding_set, GDK_space, GDK_SHIFT_MASK, "select_cursor_row", 1,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								GTK_TYPE_BOOL, TRUE);
 | 
			
		
		
	
	
		
			
				
					
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@ -881,6 +912,10 @@ gtk_tree_view_class_init (GtkTreeViewClass *class)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  gtk_binding_entry_add_signal (binding_set, GDK_f, GDK_CONTROL_MASK, "start_interactive_search", 0);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  gtk_binding_entry_add_signal (binding_set, GDK_F, GDK_CONTROL_MASK, "start_interactive_search", 0);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  gtk_binding_entry_add_signal (binding_set, GDK_Tab, GDK_SHIFT_MASK, "focus_column_header", 0);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  gtk_binding_entry_add_signal (binding_set, GDK_KP_Tab, GDK_SHIFT_MASK, "focus_column_header", 0);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  gtk_binding_entry_add_signal (binding_set, GDK_ISO_Left_Tab, GDK_SHIFT_MASK, "focus_column_header", 0);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				static void
 | 
			
		
		
	
	
		
			
				
					
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@ -3048,11 +3083,222 @@ gtk_tree_view_expose (GtkWidget      *widget,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  return TRUE;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				enum
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				{
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  DROP_HOME,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  DROP_RIGHT,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  DROP_LEFT,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  DROP_END
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				};
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				/* returns 0x1 when no column has been found -- yes it's hackish */
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				static GtkTreeViewColumn *
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				gtk_tree_view_get_drop_column (GtkTreeView       *tree_view,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							       GtkTreeViewColumn *column,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							       gint               drop_position)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				{
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  GtkTreeViewColumn *left_column = NULL;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  GtkTreeViewColumn *cur_column = NULL;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  GList *tmp_list;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  if (!column->reorderable)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    return (GtkTreeViewColumn *)0x1;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  switch (drop_position)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      case DROP_HOME:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					/* find first column where we can drop */
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					tmp_list = tree_view->priv->columns;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					if (column == GTK_TREE_VIEW_COLUMN (tmp_list->data))
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					  return (GtkTreeViewColumn *)0x1;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					while (tmp_list)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					  {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					    g_assert (tmp_list);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					    cur_column = GTK_TREE_VIEW_COLUMN (tmp_list->data);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					    tmp_list = tmp_list->next;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					    if (left_column && left_column->visible == FALSE)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					      continue;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					    if (!tree_view->priv->column_drop_func)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					      return left_column;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					    if (!(*tree_view->priv->column_drop_func) (tree_view, column, left_column, cur_column, tree_view->priv->column_drop_func_data))
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					      {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						left_column = cur_column;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						continue;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					      }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					    return cur_column;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					  }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					if (!tree_view->priv->column_drop_func)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					  return left_column;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					if ((*tree_view->priv->column_drop_func) (tree_view, column, left_column, NULL, tree_view->priv->column_drop_func_data))
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					  return left_column;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					else
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					  return (GtkTreeViewColumn *)0x1;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					break;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      case DROP_RIGHT:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					/* find first column after column where we can drop */
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					tmp_list = tree_view->priv->columns;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					for (; tmp_list; tmp_list = tmp_list->next)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					  if (GTK_TREE_VIEW_COLUMN (tmp_list->data) == column)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					    break;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					if (!tmp_list || !tmp_list->next)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					  return (GtkTreeViewColumn *)0x1;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					tmp_list = tmp_list->next;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					left_column = GTK_TREE_VIEW_COLUMN (tmp_list->data);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					tmp_list = tmp_list->next;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					while (tmp_list)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					  {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					    g_assert (tmp_list);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					    cur_column = GTK_TREE_VIEW_COLUMN (tmp_list->data);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					    tmp_list = tmp_list->next;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					    if (left_column && left_column->visible == FALSE)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					      {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						left_column = cur_column;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						if (tmp_list)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						  tmp_list = tmp_list->next;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					        continue;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					      }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					    if (!tree_view->priv->column_drop_func)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					      return left_column;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					    if (!(*tree_view->priv->column_drop_func) (tree_view, column, left_column, cur_column, tree_view->priv->column_drop_func_data))
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					      {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						left_column = cur_column;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						continue;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					      }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					    return cur_column;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					  }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					if (!tree_view->priv->column_drop_func)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					  return left_column;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					if ((*tree_view->priv->column_drop_func) (tree_view, column, left_column, NULL, tree_view->priv->column_drop_func_data))
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					  return left_column;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					else
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					  return (GtkTreeViewColumn *)0x1;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					break;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      case DROP_LEFT:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					/* find first column before column where we can drop */
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					tmp_list = tree_view->priv->columns;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					for (; tmp_list; tmp_list = tmp_list->next)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					  if (GTK_TREE_VIEW_COLUMN (tmp_list->data) == column)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					    break;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					if (!tmp_list || !tmp_list->prev)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					  return (GtkTreeViewColumn *)0x1;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					tmp_list = tmp_list->prev;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					cur_column = GTK_TREE_VIEW_COLUMN (tmp_list->data);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					tmp_list = tmp_list->prev;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					while (tmp_list)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					  {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					    g_assert (tmp_list);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					    left_column = GTK_TREE_VIEW_COLUMN (tmp_list->data);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					    if (left_column && !left_column->visible)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					      {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						/*if (!tmp_list->prev)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						  return (GtkTreeViewColumn *)0x1;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						  */
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				/*
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						cur_column = GTK_TREE_VIEW_COLUMN (tmp_list->prev->data);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						tmp_list = tmp_list->prev->prev;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						continue;*/
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						cur_column = left_column;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						if (tmp_list)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						  tmp_list = tmp_list->prev;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						continue;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					      }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					    if (!tree_view->priv->column_drop_func)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					      return left_column;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					    if ((*tree_view->priv->column_drop_func) (tree_view, column, left_column, cur_column, tree_view->priv->column_drop_func_data))
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					      return left_column;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					    cur_column = left_column;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					    tmp_list = tmp_list->prev;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					  }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					if (!tree_view->priv->column_drop_func)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					  return NULL;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					if ((*tree_view->priv->column_drop_func) (tree_view, column, NULL, cur_column, tree_view->priv->column_drop_func_data))
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					  return NULL;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					else
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					  return (GtkTreeViewColumn *)0x1;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					break;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      case DROP_END:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					/* same as DROP_HOME case, but doing it backwards */
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					tmp_list = g_list_last (tree_view->priv->columns);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					cur_column = NULL;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					if (column == GTK_TREE_VIEW_COLUMN (tmp_list->data))
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					  return (GtkTreeViewColumn *)0x1;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					while (tmp_list)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					  {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					    g_assert (tmp_list);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					    left_column = GTK_TREE_VIEW_COLUMN (tmp_list->data);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					    if (left_column && !left_column->visible)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					      {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						cur_column = left_column;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						tmp_list = tmp_list->prev;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					      }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					    if (!tree_view->priv->column_drop_func)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					      return left_column;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					    if ((*tree_view->priv->column_drop_func) (tree_view, column, left_column, cur_column, tree_view->priv->column_drop_func_data))
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					      return left_column;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					    cur_column = left_column;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					    tmp_list = tmp_list->prev;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					  }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					if (!tree_view->priv->column_drop_func)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					  return NULL;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					if ((*tree_view->priv->column_drop_func) (tree_view, column, NULL, cur_column, tree_view->priv->column_drop_func_data))
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					  return NULL;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					else
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					  return (GtkTreeViewColumn *)0x1;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					break;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  return (GtkTreeViewColumn *)0x1;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				static gboolean
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				gtk_tree_view_key_press (GtkWidget   *widget,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							 GdkEventKey *event)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				{
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  GtkTreeView *tree_view = (GtkTreeView *) widget;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  GList *list;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  if (GTK_TREE_VIEW_FLAG_SET (tree_view, GTK_TREE_VIEW_IN_COLUMN_DRAG))
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    {
 | 
			
		
		
	
	
		
			
				
					
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@ -3064,6 +3310,146 @@ gtk_tree_view_key_press (GtkWidget   *widget,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      return TRUE;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  /* FIXME: this is prolly broken when we go bidi */
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  if (tree_view->priv->columns && (event->state & GDK_SHIFT_MASK)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      && (event->keyval == GDK_Left || event->keyval == GDK_Right))
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      list = tree_view->priv->columns;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      while (list)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					  GtkTreeViewColumn *column = GTK_TREE_VIEW_COLUMN (list->data);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					  if (GTK_WIDGET_HAS_FOCUS (column->button))
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					    {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					      if (!column->resizable)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						return TRUE;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					      if (event->keyval == GDK_Left)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					        {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						  column->resized_width = MAX (column->resized_width,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
									       column->width);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						  column->resized_width -= 2;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						  if (column->resized_width < 0)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						    column->resized_width = 0;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						  column->resized_width = MAX (column->min_width,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
									       column->resized_width);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						  column->use_resized_width = TRUE;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						  gtk_widget_queue_resize (widget);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						  return TRUE;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					      else if (event->keyval == GDK_Right)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					        {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						  column->resized_width = MAX (column->resized_width,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
									       column->width);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						  column->resized_width += 2;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						  column->use_resized_width = TRUE;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						  gtk_widget_queue_resize (widget);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						  return TRUE;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					    }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					  list = list->next;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  /* FIXME: broken when we go bidi? */
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  if (tree_view->priv->columns && (event->state & GDK_CONTROL_MASK) &&
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      (event->keyval == GDK_Left || event->keyval == GDK_Right
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				       || event->keyval == GDK_Home || event->keyval == GDK_End))
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      list = tree_view->priv->columns;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      while (list)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					  GtkTreeViewColumn *column = GTK_TREE_VIEW_COLUMN (list->data);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					  if (GTK_WIDGET_HAS_FOCUS (column->button))
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					    {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					      if (event->keyval == GDK_Left)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					        {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						  GtkTreeViewColumn *col;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						  col = gtk_tree_view_get_drop_column (tree_view, column, DROP_LEFT);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						  if (col != (GtkTreeViewColumn *)0x1)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						    gtk_tree_view_move_column_after (tree_view, column, col);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						  return TRUE;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					      else if (event->keyval == GDK_Right)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					        {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						  GtkTreeViewColumn *col;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						  col = gtk_tree_view_get_drop_column (tree_view, column, DROP_RIGHT);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						  if (col != (GtkTreeViewColumn *)0x1)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						    gtk_tree_view_move_column_after (tree_view, column, col);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						  return TRUE;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					      else if (event->keyval == GDK_Home)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					        {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						  GtkTreeViewColumn *col;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						  col = gtk_tree_view_get_drop_column (tree_view, column, DROP_HOME);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						  if (col != (GtkTreeViewColumn *)0x1)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						    gtk_tree_view_move_column_after (tree_view, column, col);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						  return TRUE;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					        }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					      else if (event->keyval == GDK_End)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					        {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						  GtkTreeViewColumn *col;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						  col = gtk_tree_view_get_drop_column (tree_view, column, DROP_END);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						  if (col != (GtkTreeViewColumn *)0x1)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						    gtk_tree_view_move_column_after (tree_view, column, col);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						  return TRUE;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					    }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					  list = list->next;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  /* FIXME: this is prolly broken when we go bidi */
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  if (tree_view->priv->columns &&
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      (event->keyval == GDK_Left || event->keyval == GDK_Right))
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      gint width = 0;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      list = tree_view->priv->columns;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      while (list)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					{
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					  GtkTreeViewColumn *column = GTK_TREE_VIEW_COLUMN (list->data);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					  if (GTK_WIDGET_HAS_FOCUS (column->button))
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					    {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					      if (event->keyval == GDK_Left && list->prev)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					        {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						  GList *tmp;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						  for (tmp = list->prev; tmp; tmp = tmp->prev)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						    if (GTK_TREE_VIEW_COLUMN (tmp->data)->visible)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						      break;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						  if (!tmp)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						    return FALSE;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						  tree_view->priv->focus_column = GTK_TREE_VIEW_COLUMN (tmp->data);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						  gtk_widget_grab_focus (tree_view->priv->focus_column->button);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						  width -= tree_view->priv->focus_column->width;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						  gtk_adjustment_set_value (tree_view->priv->hadjustment, CLAMP (width, tree_view->priv->hadjustment->lower, tree_view->priv->hadjustment->upper - tree_view->priv->hadjustment->page_size));
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						  return TRUE;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					      else if (event->keyval == GDK_Right && list->next)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					        {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						  GList *tmp;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						  for (tmp = list->next; tmp; tmp = tmp->next)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						    if (GTK_TREE_VIEW_COLUMN (tmp->data)->visible)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						      break;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						  if (!tmp)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						    return FALSE;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						  tree_view->priv->focus_column = GTK_TREE_VIEW_COLUMN (tmp->data);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						  gtk_widget_grab_focus (tree_view->priv->focus_column->button);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						  width += tree_view->priv->focus_column->width;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						  gtk_adjustment_set_value (tree_view->priv->hadjustment, CLAMP (width, tree_view->priv->hadjustment->lower, tree_view->priv->hadjustment->upper - tree_view->priv->hadjustment->page_size));
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						  return TRUE;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					    }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					  width += GTK_TREE_VIEW_COLUMN (list->data)->width;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					  list = list->next;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  return (* GTK_WIDGET_CLASS (parent_class)->key_press_event) (widget, event);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
	
		
			
				
					
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@ -4862,20 +5248,23 @@ gtk_tree_view_set_adjustments (GtkTreeView   *tree_view,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				static void
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				static gboolean
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				gtk_tree_view_real_move_cursor (GtkTreeView       *tree_view,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								GtkMovementStep    step,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								gint               count)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				{
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  g_return_if_fail (GTK_IS_TREE_VIEW (tree_view));
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  g_return_if_fail (step == GTK_MOVEMENT_LOGICAL_POSITIONS ||
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  g_return_val_if_fail (GTK_IS_TREE_VIEW (tree_view), FALSE);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  g_return_val_if_fail (step == GTK_MOVEMENT_LOGICAL_POSITIONS ||
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							step == GTK_MOVEMENT_VISUAL_POSITIONS ||
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							step == GTK_MOVEMENT_DISPLAY_LINES ||
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							step == GTK_MOVEMENT_PAGES ||
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						    step == GTK_MOVEMENT_BUFFER_ENDS);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							step == GTK_MOVEMENT_BUFFER_ENDS, FALSE);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  if (tree_view->priv->tree == NULL)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    return;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    return FALSE;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  if (!GTK_WIDGET_HAS_FOCUS (GTK_WIDGET (tree_view)))
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    return FALSE;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  gtk_tree_view_stop_editing (tree_view, FALSE);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  GTK_TREE_VIEW_SET_FLAG (tree_view, GTK_TREE_VIEW_DRAW_KEYFOCUS);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  gtk_widget_grab_focus (GTK_WIDGET (tree_view));
 | 
			
		
		
	
	
		
			
				
					
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@ -4899,6 +5288,8 @@ gtk_tree_view_real_move_cursor (GtkTreeView       *tree_view,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    default:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      g_assert_not_reached ();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  return TRUE;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				static void
 | 
			
		
		
	
	
		
			
				
					
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@ -6313,12 +6704,20 @@ gtk_tree_view_move_cursor_page_up_down (GtkTreeView *tree_view,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  y = _gtk_rbtree_node_find_offset (cursor_tree, cursor_node);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  y += count * tree_view->priv->vadjustment->page_size;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  if (count > 0)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    y -= MAX (GTK_RBNODE_GET_HEIGHT (cursor_node),
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					      tree_view->priv->expander_size);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  else if (count < 0)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    y += MAX (GTK_RBNODE_GET_HEIGHT (cursor_node),
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					      tree_view->priv->expander_size);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  y = CLAMP (y, (gint)tree_view->priv->vadjustment->lower,  (gint)tree_view->priv->vadjustment->upper - vertical_separator);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  _gtk_rbtree_find_offset (tree_view->priv->tree, y, &cursor_tree, &cursor_node);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  cursor_path = _gtk_tree_view_find_path (tree_view, cursor_tree, cursor_node);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  g_return_if_fail (cursor_path != NULL);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  gtk_tree_view_real_set_cursor (tree_view, cursor_path, TRUE);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  gtk_tree_view_scroll_to_point (tree_view, -1, y);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  gtk_tree_view_clamp_node_visible (tree_view, cursor_tree, cursor_node);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  gtk_tree_path_free (cursor_path);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
	
		
			
				
					
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@ -6429,15 +6828,8 @@ gtk_tree_view_move_cursor_start_end (GtkTreeView *tree_view,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  path = _gtk_tree_view_find_path (tree_view, cursor_tree, cursor_node);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  _gtk_tree_selection_internal_select_node (tree_view->priv->selection,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
									    cursor_node,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
									    cursor_tree,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
									    path,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
									    FALSE?GDK_SHIFT_MASK:0);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  gtk_tree_row_reference_free (tree_view->priv->cursor);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  tree_view->priv->cursor = gtk_tree_row_reference_new_proxy (G_OBJECT (tree_view), tree_view->priv->model, path);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  gtk_tree_view_clamp_node_visible (tree_view, cursor_tree, cursor_node);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  gtk_tree_view_real_set_cursor (tree_view, path, TRUE);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  gtk_tree_path_free (path);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				static void
 | 
			
		
		
	
	
		
			
				
					
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@ -6448,6 +6840,14 @@ gtk_tree_view_real_select_all (GtkTreeView *tree_view)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  gtk_tree_selection_select_all (tree_view->priv->selection);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				static void
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				gtk_tree_view_real_unselect_all (GtkTreeView *tree_view)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				{
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  if (tree_view->priv->selection->type != GTK_SELECTION_MULTIPLE)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    return;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  gtk_tree_selection_unselect_all (tree_view->priv->selection);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				static void
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				gtk_tree_view_real_select_cursor_row (GtkTreeView *tree_view,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								      gboolean     start_editing)
 | 
			
		
		
	
	
		
			
				
					
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@ -6676,6 +7076,15 @@ gtk_tree_view_real_start_interactive_search (GtkTreeView *tree_view)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  gtk_tree_view_search_init (entry, tree_view);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				static void
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				gtk_tree_view_real_focus_column_header (GtkTreeView *tree_view)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				{
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  if (!tree_view->priv->focus_column)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    return;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  gtk_widget_grab_focus (tree_view->priv->focus_column->button);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				/* this function returns the new width of the column being resized given
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				 * the column and x position of the cursor; the x cursor position is passed
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				 * in as a pointer and automagicly corrected if it's beyond min/max limits
 | 
			
		
		
	
	
		
			
				
					
					| 
						
					 | 
				
			
			 | 
			 | 
			
				
 
 |