Removed all variables from GtkTreeViewColumn and created GtkTreeViewColumnPrivate

Some details:
  - button_request was not needed, consult the minimum request of the button
  - gtk_tree_view_column_get_button() needed to be public as people can set
    tooltips on the button (and libgail accesses the button).
This commit is contained in:
Tristan Van Berkom 2010-11-30 14:29:45 +09:00
parent f24c21f1f0
commit 9f4f22faf1
6 changed files with 944 additions and 641 deletions

View File

@ -414,6 +414,20 @@ void _gtk_tree_view_remove_editable (GtkTreeView *tree_v
GtkTreeViewColumn *column,
GtkCellEditable *cell_editable);
void _gtk_tree_view_install_mark_rows_col_dirty (GtkTreeView *tree_view);
void _gtk_tree_view_column_autosize (GtkTreeView *tree_view,
GtkTreeViewColumn *column);
GtkTreeSelection* _gtk_tree_selection_new (void);
GtkTreeSelection* _gtk_tree_selection_new_with_tree_view (GtkTreeView *tree_view);
void _gtk_tree_selection_set_tree_view (GtkTreeSelection *selection,
GtkTreeView *tree_view);
gboolean _gtk_tree_selection_row_is_selectable (GtkTreeSelection *selection,
GtkRBNode *node,
GtkTreePath *path);
void _gtk_tree_view_column_realize_button (GtkTreeViewColumn *column);
void _gtk_tree_view_column_unrealize_button (GtkTreeViewColumn *column);
void _gtk_tree_view_column_set_tree_view (GtkTreeViewColumn *column,
@ -434,22 +448,10 @@ gboolean _gtk_tree_view_column_cell_event (GtkTreeViewColumn *tree_column,
const GdkRectangle *background_area,
const GdkRectangle *cell_area,
guint flags);
void _gtk_tree_view_install_mark_rows_col_dirty (GtkTreeView *tree_view);
void _gtk_tree_view_column_autosize (GtkTreeView *tree_view,
GtkTreeViewColumn *column);
gboolean _gtk_tree_view_column_has_editable_cell (GtkTreeViewColumn *column);
GtkCellRenderer *_gtk_tree_view_column_get_edited_cell (GtkTreeViewColumn *column);
GtkCellRenderer *_gtk_tree_view_column_get_cell_at_pos (GtkTreeViewColumn *column,
gint x);
GtkTreeSelection* _gtk_tree_selection_new (void);
GtkTreeSelection* _gtk_tree_selection_new_with_tree_view (GtkTreeView *tree_view);
void _gtk_tree_selection_set_tree_view (GtkTreeSelection *selection,
GtkTreeView *tree_view);
gboolean _gtk_tree_selection_row_is_selectable (GtkTreeSelection *selection,
GtkRBNode *node,
GtkTreePath *path);
gboolean _gtk_tree_view_column_has_editable_cell(GtkTreeViewColumn *column);
GtkCellRenderer *_gtk_tree_view_column_get_edited_cell (GtkTreeViewColumn *column);
GtkCellRenderer *_gtk_tree_view_column_get_cell_at_pos (GtkTreeViewColumn *column,
gint x);
void _gtk_tree_view_column_cell_render (GtkTreeViewColumn *tree_column,
cairo_t *cr,
@ -467,6 +469,20 @@ gboolean _gtk_tree_view_column_cell_focus (GtkTreeViewColumn *tree_colu
gboolean right);
void _gtk_tree_view_column_cell_set_dirty (GtkTreeViewColumn *tree_column,
gboolean install_handler);
gboolean _gtk_tree_view_column_cell_get_dirty (GtkTreeViewColumn *tree_column);
GdkWindow *_gtk_tree_view_column_get_window (GtkTreeViewColumn *column);
void _gtk_tree_view_column_set_requested_width (GtkTreeViewColumn *column,
gint width);
gint _gtk_tree_view_column_get_requested_width (GtkTreeViewColumn *column);
void _gtk_tree_view_column_set_resized_width (GtkTreeViewColumn *column,
gint width);
gint _gtk_tree_view_column_get_resized_width (GtkTreeViewColumn *column);
void _gtk_tree_view_column_set_use_resized_width (GtkTreeViewColumn *column,
gboolean use_resized_width);
gboolean _gtk_tree_view_column_get_use_resized_width (GtkTreeViewColumn *column);
gint _gtk_tree_view_column_get_drag_x (GtkTreeViewColumn *column);
GtkCellAreaContext *_gtk_tree_view_column_get_context (GtkTreeViewColumn *column);
G_END_DECLS

View File

@ -45,6 +45,7 @@
#include "gtktreemodelsort.h"
#include "gtktooltip.h"
#include "gtkscrollable.h"
#include "gtkcelllayout.h"
#include "gtkprivate.h"
#include "gtkwidgetprivate.h"
#include "gtkentryprivate.h"
@ -1786,26 +1787,32 @@ gtk_tree_view_map_buttons (GtkTreeView *tree_view)
if (GTK_TREE_VIEW_FLAG_SET (tree_view, GTK_TREE_VIEW_HEADERS_VISIBLE))
{
GtkTreeViewColumn *column;
GtkWidget *button;
GdkWindow *window;
for (list = tree_view->priv->columns; list; list = list->next)
{
column = list->data;
if (gtk_widget_get_visible (column->button) &&
!gtk_widget_get_mapped (column->button))
gtk_widget_map (column->button);
button = gtk_tree_view_column_get_button (column);
if (gtk_widget_get_visible (button) &&
!gtk_widget_get_mapped (button))
gtk_widget_map (button);
}
for (list = tree_view->priv->columns; list; list = list->next)
{
column = list->data;
if (gtk_tree_view_column_get_visible (column) == FALSE)
continue;
window = _gtk_tree_view_column_get_window (column);
if (gtk_tree_view_column_get_resizable (column))
{
gdk_window_raise (column->window);
gdk_window_show (column->window);
gdk_window_raise (window);
gdk_window_show (window);
}
else
gdk_window_hide (column->window);
gdk_window_hide (window);
}
gdk_window_show (tree_view->priv->header_window);
}
@ -2028,16 +2035,16 @@ gtk_tree_view_size_request_columns (GtkTreeView *tree_view)
{
for (list = tree_view->priv->columns; list; list = list->next)
{
GtkRequisition requisition;
GtkRequisition requisition;
GtkTreeViewColumn *column = list->data;
GtkWidget *button = gtk_tree_view_column_get_button (column);
if (column->button == NULL)
if (button == NULL)
continue;
column = list->data;
gtk_widget_get_preferred_size (column->button, &requisition, NULL);
column->button_request = requisition.width;
gtk_widget_get_preferred_size (button, &requisition, NULL);
tree_view->priv->header_height = MAX (tree_view->priv->header_height, requisition.height);
}
}
@ -2073,9 +2080,9 @@ gtk_tree_view_update_size (GtkTreeView *tree_view)
if (!gtk_tree_view_column_get_visible (column))
continue;
if (column->use_resized_width)
if (_gtk_tree_view_column_get_use_resized_width (column))
{
real_requested_width = column->resized_width;
real_requested_width = _gtk_tree_view_column_get_resized_width (column);
}
else if (gtk_tree_view_column_get_sizing (column) == GTK_TREE_VIEW_COLUMN_FIXED)
{
@ -2083,11 +2090,16 @@ gtk_tree_view_update_size (GtkTreeView *tree_view)
}
else if (GTK_TREE_VIEW_FLAG_SET (tree_view, GTK_TREE_VIEW_HEADERS_VISIBLE))
{
real_requested_width = MAX (column->requested_width, column->button_request);
GtkWidget *button = gtk_tree_view_column_get_button (column);
gint button_request;
gtk_widget_get_preferred_width (button, &button_request, NULL);
real_requested_width = MAX (_gtk_tree_view_column_get_requested_width (column), button_request);
}
else
{
real_requested_width = column->requested_width;
real_requested_width = _gtk_tree_view_column_get_requested_width (column);
}
min_width = gtk_tree_view_column_get_min_width (column);
@ -2235,9 +2247,9 @@ gtk_tree_view_get_real_requested_width_from_column (GtkTreeView *tree_view
gint max_width, min_width;
gint real_requested_width;
if (column->use_resized_width)
if (_gtk_tree_view_column_get_use_resized_width (column))
{
real_requested_width = column->resized_width;
real_requested_width = _gtk_tree_view_column_get_resized_width (column);
}
else if (gtk_tree_view_column_get_sizing (column) == GTK_TREE_VIEW_COLUMN_FIXED)
{
@ -2245,11 +2257,16 @@ gtk_tree_view_get_real_requested_width_from_column (GtkTreeView *tree_view
}
else if (GTK_TREE_VIEW_FLAG_SET (tree_view, GTK_TREE_VIEW_HEADERS_VISIBLE))
{
real_requested_width = MAX (column->requested_width, column->button_request);
GtkWidget *button = gtk_tree_view_column_get_button (column);
gint button_request;
gtk_widget_get_preferred_width (button, &button_request, NULL);
real_requested_width = MAX (_gtk_tree_view_column_get_requested_width (column), button_request);
}
else
{
real_requested_width = column->requested_width;
real_requested_width = _gtk_tree_view_column_get_requested_width (column);
if (real_requested_width < 0)
real_requested_width = 0;
}
@ -2359,6 +2376,8 @@ gtk_tree_view_size_allocate_columns (GtkWidget *widget,
list != (rtl ? first_column->prev : last_column->next);
list = (rtl ? list->prev : list->next))
{
GtkWidget *button;
GdkWindow *window;
gint real_requested_width = 0;
gint internal_column_width = 0;
gint old_width, column_width;
@ -2374,13 +2393,15 @@ gtk_tree_view_size_allocate_columns (GtkWidget *widget,
if (column == tree_view->priv->drag_column)
{
GtkAllocation drag_allocation;
GtkWidget *button;
button = gtk_tree_view_column_get_button (tree_view->priv->drag_column);
drag_allocation.x = 0;
drag_allocation.y = 0;
drag_allocation.width = gdk_window_get_width (tree_view->priv->drag_window);
drag_allocation.height = gdk_window_get_height (tree_view->priv->drag_window);
gtk_widget_size_allocate (tree_view->priv->drag_column->button,
&drag_allocation);
gtk_widget_size_allocate (button, &drag_allocation);
width += drag_allocation.width;
continue;
}
@ -2430,10 +2451,13 @@ gtk_tree_view_size_allocate_columns (GtkWidget *widget,
if (column_width > old_width)
column_changed = TRUE;
gtk_widget_size_allocate (column->button, &allocation);
button = gtk_tree_view_column_get_button (column);
window = _gtk_tree_view_column_get_window (column);
if (column->window)
gdk_window_move_resize (column->window,
gtk_widget_size_allocate (button, &allocation);
if (window)
gdk_window_move_resize (window,
allocation.x + (rtl ? 0 : allocation.width) - TREE_VIEW_DRAG_WIDTH/2,
allocation.y,
TREE_VIEW_DRAG_WIDTH, allocation.height);
@ -2773,7 +2797,7 @@ gtk_tree_view_button_press (GtkWidget *widget,
if (!gtk_tree_view_column_get_visible (candidate))
continue;
background_area.width = candidate->width;
background_area.width = gtk_tree_view_column_get_width (candidate);
if ((background_area.x > (gint) event->x) ||
(background_area.x + background_area.width <= (gint) event->x))
{
@ -2847,7 +2871,8 @@ gtk_tree_view_button_press (GtkWidget *widget,
&background_area,
&cell_area, flags))
{
cell_editable = gtk_cell_area_get_edit_widget (column->cell_area);
GtkCellArea *area = gtk_cell_layout_get_area (GTK_CELL_LAYOUT (column));
cell_editable = gtk_cell_area_get_edit_widget (area);
if (cell_editable != NULL)
{
@ -2990,22 +3015,23 @@ gtk_tree_view_button_press (GtkWidget *widget,
for (i = 0, list = tree_view->priv->columns; list; list = list->next, i++)
{
column = list->data;
if (event->window == column->window &&
if (event->window == _gtk_tree_view_column_get_window (column) &&
gtk_tree_view_column_get_resizable (column) &&
column->window)
_gtk_tree_view_column_get_window (column))
{
GtkWidget *button;
GtkAllocation button_allocation;
gpointer drag_data;
if (event->type == GDK_2BUTTON_PRESS &&
gtk_tree_view_column_get_sizing (column) != GTK_TREE_VIEW_COLUMN_AUTOSIZE)
{
column->use_resized_width = FALSE;
_gtk_tree_view_column_set_use_resized_width (column, FALSE);
_gtk_tree_view_column_autosize (tree_view, column);
return TRUE;
}
if (gdk_pointer_grab (column->window, FALSE,
if (gdk_pointer_grab (_gtk_tree_view_column_get_window (column), FALSE,
GDK_POINTER_MOTION_HINT_MASK |
GDK_BUTTON1_MOTION_MASK |
GDK_BUTTON_RELEASE_MASK,
@ -3014,8 +3040,9 @@ gtk_tree_view_button_press (GtkWidget *widget,
gtk_grab_add (widget);
GTK_TREE_VIEW_SET_FLAG (tree_view, GTK_TREE_VIEW_IN_COLUMN_RESIZE);
column->resized_width = gtk_tree_view_column_get_width (column) -
tree_view->priv->last_extra_space_per_column;
_gtk_tree_view_column_set_resized_width (column, gtk_tree_view_column_get_width (column) -
tree_view->priv->last_extra_space_per_column);
/* block attached dnd signal handler */
drag_data = g_object_get_data (G_OBJECT (widget), "gtk-site-data");
@ -3025,7 +3052,8 @@ gtk_tree_view_button_press (GtkWidget *widget,
0, 0, NULL, NULL,
drag_data);
gtk_widget_get_allocation (column->button, &button_allocation);
button = gtk_tree_view_column_get_button (column);
gtk_widget_get_allocation (button, &button_allocation);
tree_view->priv->drag_pos = i;
tree_view->priv->x_drag = button_allocation.x + (rtl ? 0 : button_allocation.width);
@ -3044,6 +3072,7 @@ gtk_tree_view_button_release_drag_column (GtkWidget *widget,
GdkEventButton *event)
{
GtkTreeView *tree_view;
GtkWidget *button;
GList *l;
gboolean rtl;
@ -3054,21 +3083,22 @@ gtk_tree_view_button_release_drag_column (GtkWidget *widget,
gdk_display_keyboard_ungrab (gtk_widget_get_display (widget), GDK_CURRENT_TIME);
/* Move the button back */
g_object_ref (tree_view->priv->drag_column->button);
gtk_container_remove (GTK_CONTAINER (tree_view), tree_view->priv->drag_column->button);
gtk_widget_set_parent_window (tree_view->priv->drag_column->button, tree_view->priv->header_window);
gtk_widget_set_parent (tree_view->priv->drag_column->button, GTK_WIDGET (tree_view));
g_object_unref (tree_view->priv->drag_column->button);
button = gtk_tree_view_column_get_button (tree_view->priv->drag_column);
g_object_ref (button);
gtk_container_remove (GTK_CONTAINER (tree_view), button);
gtk_widget_set_parent_window (button, tree_view->priv->header_window);
gtk_widget_set_parent (button, GTK_WIDGET (tree_view));
g_object_unref (button);
gtk_widget_queue_resize (widget);
if (gtk_tree_view_column_get_resizable (tree_view->priv->drag_column))
{
gdk_window_raise (tree_view->priv->drag_column->window);
gdk_window_show (tree_view->priv->drag_column->window);
gdk_window_raise (_gtk_tree_view_column_get_window (tree_view->priv->drag_column));
gdk_window_show (_gtk_tree_view_column_get_window (tree_view->priv->drag_column));
}
else
gdk_window_hide (tree_view->priv->drag_column->window);
gdk_window_hide (_gtk_tree_view_column_get_window (tree_view->priv->drag_column));
gtk_widget_grab_focus (tree_view->priv->drag_column->button);
gtk_widget_grab_focus (button);
if (rtl)
{
@ -3387,7 +3417,8 @@ prelight_or_select (GtkTreeView *tree_view,
if (tree_view->priv->hover_selection &&
(mode == GTK_SELECTION_SINGLE || mode == GTK_SELECTION_BROWSE) &&
!(tree_view->priv->edited_column &&
gtk_cell_area_get_edit_widget (tree_view->priv->edited_column->cell_area)))
gtk_cell_area_get_edit_widget
(gtk_cell_layout_get_area (GTK_CELL_LAYOUT (tree_view->priv->edited_column)))))
{
if (node)
{
@ -3502,16 +3533,19 @@ gtk_tree_view_motion_draw_column_motion_arrow (GtkTreeView *tree_view)
{
GtkAllocation left_allocation, right_allocation;
GdkRectangle visible_rect;
GtkWidget *button;
gtk_tree_view_get_visible_rect (tree_view, &visible_rect);
if (reorder->left_column)
{
gtk_widget_get_allocation (reorder->left_column->button, &left_allocation);
button = gtk_tree_view_column_get_button (reorder->left_column);
gtk_widget_get_allocation (button, &left_allocation);
x = left_allocation.x + left_allocation.width;
}
else
{
gtk_widget_get_allocation (reorder->right_column->button, &right_allocation);
button = gtk_tree_view_column_get_button (reorder->right_column);
gtk_widget_get_allocation (button, &right_allocation);
x = right_allocation.x;
}
@ -3529,6 +3563,7 @@ gtk_tree_view_motion_draw_column_motion_arrow (GtkTreeView *tree_view)
if (tree_view->priv->drag_column_window_state != DRAG_COLUMN_WINDOW_STATE_ORIGINAL)
{
GtkAllocation drag_allocation;
GtkWidget *button;
if (tree_view->priv->drag_highlight_window)
{
@ -3537,11 +3572,12 @@ gtk_tree_view_motion_draw_column_motion_arrow (GtkTreeView *tree_view)
gdk_window_destroy (tree_view->priv->drag_highlight_window);
}
button = gtk_tree_view_column_get_button (tree_view->priv->drag_column);
attributes.window_type = GDK_WINDOW_CHILD;
attributes.wclass = GDK_INPUT_OUTPUT;
attributes.x = tree_view->priv->drag_column_x;
attributes.y = 0;
gtk_widget_get_allocation (tree_view->priv->drag_column->button, &drag_allocation);
gtk_widget_get_allocation (button, &drag_allocation);
width = attributes.width = drag_allocation.width;
height = attributes.height = drag_allocation.height;
attributes.visual = gtk_widget_get_visual (GTK_WIDGET (tree_view));
@ -3570,6 +3606,7 @@ gtk_tree_view_motion_draw_column_motion_arrow (GtkTreeView *tree_view)
else if (arrow_type == DRAG_COLUMN_WINDOW_STATE_ARROW)
{
GtkAllocation button_allocation;
GtkWidget *button;
width = tree_view->priv->expander_size;
@ -3577,13 +3614,15 @@ gtk_tree_view_motion_draw_column_motion_arrow (GtkTreeView *tree_view)
gdk_window_get_origin (tree_view->priv->header_window, &x, &y);
if (reorder->left_column)
{
gtk_widget_get_allocation (reorder->left_column->button, &button_allocation);
button = gtk_tree_view_column_get_button (reorder->left_column);
gtk_widget_get_allocation (button, &button_allocation);
x += button_allocation.x + button_allocation.width - width/2;
height = button_allocation.height;
}
else
{
gtk_widget_get_allocation (reorder->right_column->button, &button_allocation);
button = gtk_tree_view_column_get_button (reorder->right_column);
gtk_widget_get_allocation (button, &button_allocation);
x += button_allocation.x - width/2;
height = button_allocation.height;
}
@ -3640,6 +3679,7 @@ gtk_tree_view_motion_draw_column_motion_arrow (GtkTreeView *tree_view)
arrow_type == DRAG_COLUMN_WINDOW_STATE_ARROW_RIGHT)
{
GtkAllocation allocation;
GtkWidget *button;
width = tree_view->priv->expander_size;
@ -3655,12 +3695,14 @@ gtk_tree_view_motion_draw_column_motion_arrow (GtkTreeView *tree_view)
if (reorder->left_column)
{
gtk_widget_get_allocation (reorder->left_column->button, &allocation);
button = gtk_tree_view_column_get_button (reorder->left_column);
gtk_widget_get_allocation (button, &allocation);
height = allocation.height;
}
else
{
gtk_widget_get_allocation (reorder->right_column->button, &allocation);
button = gtk_tree_view_column_get_button (reorder->right_column);
gtk_widget_get_allocation (button, &allocation);
height = allocation.height;
}
@ -3754,10 +3796,14 @@ gtk_tree_view_motion_resize_column (GtkWidget *widget,
if (x != tree_view->priv->x_drag &&
(new_width != gtk_tree_view_column_get_fixed_width (column)))
{
column->use_resized_width = TRUE;
column->resized_width = new_width;
_gtk_tree_view_column_set_use_resized_width (column, TRUE);
if (gtk_tree_view_column_get_expand (column))
column->resized_width -= tree_view->priv->last_extra_space_per_column;
new_width -= tree_view->priv->last_extra_space_per_column;
_gtk_tree_view_column_set_resized_width (column, new_width);
gtk_widget_queue_resize (widget);
}
@ -3848,6 +3894,7 @@ gtk_tree_view_motion_drag_column (GtkWidget *widget,
GtkAllocation allocation, button_allocation;
GtkTreeView *tree_view = (GtkTreeView *) widget;
GtkTreeViewColumn *column = tree_view->priv->drag_column;
GtkWidget *button;
gint x, y;
/* Sanity Check */
@ -3855,11 +3902,13 @@ gtk_tree_view_motion_drag_column (GtkWidget *widget,
(event->window != tree_view->priv->drag_window))
return FALSE;
button = gtk_tree_view_column_get_button (column);
/* Handle moving the header */
gdk_window_get_position (tree_view->priv->drag_window, &x, &y);
gtk_widget_get_allocation (widget, &allocation);
gtk_widget_get_allocation (column->button, &button_allocation);
x = CLAMP (x + (gint)event->x - column->drag_x, 0,
gtk_widget_get_allocation (button, &button_allocation);
x = CLAMP (x + (gint)event->x - _gtk_tree_view_column_get_drag_x (column), 0,
MAX (tree_view->priv->width, allocation.width) - button_allocation.width);
gdk_window_move (tree_view->priv->drag_window, x, y);
@ -5113,6 +5162,7 @@ gtk_tree_view_draw (GtkWidget *widget,
cairo_t *cr)
{
GtkTreeView *tree_view = GTK_TREE_VIEW (widget);
GtkWidget *button;
if (gtk_cairo_should_draw_window (cr, tree_view->priv->bin_window))
{
@ -5152,18 +5202,20 @@ gtk_tree_view_draw (GtkWidget *widget,
continue;
if (gtk_tree_view_column_get_visible (column))
gtk_container_propagate_draw (GTK_CONTAINER (tree_view),
column->button,
cr);
{
button = gtk_tree_view_column_get_button (column);
gtk_container_propagate_draw (GTK_CONTAINER (tree_view),
button, cr);
}
}
}
if (tree_view->priv->drag_window &&
gtk_cairo_should_draw_window (cr, tree_view->priv->drag_window))
{
button = gtk_tree_view_column_get_button (tree_view->priv->drag_column);
gtk_container_propagate_draw (GTK_CONTAINER (tree_view),
tree_view->priv->drag_column->button,
cr);
button, cr);
}
return TRUE;
@ -5388,6 +5440,7 @@ gtk_tree_view_key_press (GtkWidget *widget,
GdkEventKey *event)
{
GtkTreeView *tree_view = (GtkTreeView *) widget;
GtkWidget *button;
if (tree_view->priv->rubber_band_status)
{
@ -5419,8 +5472,9 @@ gtk_tree_view_key_press (GtkWidget *widget,
focus_column = focus_column->next)
{
GtkTreeViewColumn *column = GTK_TREE_VIEW_COLUMN (focus_column->data);
if (gtk_widget_has_focus (column->button))
button = gtk_tree_view_column_get_button (column);
if (gtk_widget_has_focus (button))
break;
}
@ -5442,54 +5496,62 @@ gtk_tree_view_key_press (GtkWidget *widget,
|| event->keyval == (rtl ? GDK_KEY_KP_Right : GDK_KEY_KP_Left))
{
GtkRequisition button_req;
gint old_width = column->resized_width;
gint old_width = _gtk_tree_view_column_get_resized_width (column);
gint new_width;
gtk_widget_get_preferred_size (column->button, &button_req, NULL);
button = gtk_tree_view_column_get_button (column);
column->resized_width = MAX (column->resized_width,
gtk_tree_view_column_get_width (column));
column->resized_width -= 2;
if (column->resized_width < 0)
column->resized_width = 0;
gtk_widget_get_preferred_size (button, &button_req, NULL);
new_width = MAX (old_width, gtk_tree_view_column_get_width (column));
new_width -= 2;
if (new_width < 0)
new_width = 0;
_gtk_tree_view_column_set_resized_width (column, new_width);
min_width = gtk_tree_view_column_get_min_width (column);
if (min_width == -1)
column->resized_width = MAX (button_req.width,
column->resized_width);
new_width = MAX (button_req.width, new_width);
else
{
column->resized_width = MAX (min_width,
column->resized_width);
new_width = MAX (min_width, new_width);
}
max_width = gtk_tree_view_column_get_max_width (column);
if (max_width != -1)
column->resized_width = MIN (column->resized_width, max_width);
new_width = MIN (new_width, max_width);
column->use_resized_width = TRUE;
_gtk_tree_view_column_set_use_resized_width (column, TRUE);
if (column->resized_width != old_width)
gtk_widget_queue_resize (widget);
if (new_width != old_width)
{
_gtk_tree_view_column_set_resized_width (column, new_width);
gtk_widget_queue_resize (widget);
}
else
gtk_widget_error_bell (widget);
}
else if (event->keyval == (rtl ? GDK_KEY_Left : GDK_KEY_Right)
|| event->keyval == (rtl ? GDK_KEY_KP_Left : GDK_KEY_KP_Right))
{
gint old_width = column->resized_width;
gint old_width = _gtk_tree_view_column_get_resized_width (column);
gint new_width;
column->resized_width = MAX (column->resized_width,
gtk_tree_view_column_get_width (column));
column->resized_width += 2;
new_width = MAX (old_width, gtk_tree_view_column_get_width (column));
new_width += 2;
max_width = gtk_tree_view_column_get_max_width (column);
if (max_width != -1)
column->resized_width = MIN (column->resized_width, max_width);
new_width = MIN (new_width, max_width);
column->use_resized_width = TRUE;
_gtk_tree_view_column_set_use_resized_width (column, TRUE);
if (column->resized_width != old_width)
gtk_widget_queue_resize (widget);
if (new_width != old_width)
{
_gtk_tree_view_column_set_resized_width (column, new_width);
gtk_widget_queue_resize (widget);
}
else
gtk_widget_error_bell (widget);
}
@ -5839,7 +5901,8 @@ validate_row (GtkTreeView *tree_view,
if (!gtk_tree_view_column_get_visible (column))
continue;
if (GTK_RBNODE_FLAG_SET (node, GTK_RBNODE_COLUMN_INVALID) && !column->dirty)
if (GTK_RBNODE_FLAG_SET (node, GTK_RBNODE_COLUMN_INVALID) &&
!_gtk_tree_view_column_cell_get_dirty (column))
continue;
gtk_tree_view_column_cell_set_cell_data (column, tree_view->priv->model, iter,
@ -5881,10 +5944,10 @@ validate_row (GtkTreeView *tree_view,
tmp_width += grid_line_width;
}
if (tmp_width > column->requested_width)
if (tmp_width > _gtk_tree_view_column_get_requested_width (column))
{
retval = TRUE;
column->requested_width = tmp_width;
_gtk_tree_view_column_set_requested_width (column, tmp_width);
}
}
@ -7753,8 +7816,12 @@ gtk_tree_view_remove (GtkContainer *container,
while (tmp_list)
{
GtkTreeViewColumn *column;
GtkWidget *button;
column = tmp_list->data;
if (column->button == widget)
button = gtk_tree_view_column_get_button (column);
if (button == widget)
{
gtk_widget_unparent (widget);
return;
@ -7772,6 +7839,7 @@ gtk_tree_view_forall (GtkContainer *container,
GtkTreeView *tree_view = GTK_TREE_VIEW (container);
GtkTreeViewChild *child = NULL;
GtkTreeViewColumn *column;
GtkWidget *button;
GList *tmp_list;
tmp_list = tree_view->priv->children;
@ -7788,9 +7856,10 @@ gtk_tree_view_forall (GtkContainer *container,
for (tmp_list = tree_view->priv->columns; tmp_list; tmp_list = tmp_list->next)
{
column = tmp_list->data;
button = gtk_tree_view_column_get_button (column);
if (column->button)
(* callback) (column->button, callback_data);
if (button)
(* callback) (button, callback_data);
}
}
@ -7809,7 +7878,7 @@ gtk_tree_view_has_can_focus_cell (GtkTreeView *tree_view)
if (!gtk_tree_view_column_get_visible (column))
continue;
if (gtk_cell_area_is_activatable (column->cell_area))
if (gtk_cell_area_is_activatable (gtk_cell_layout_get_area (GTK_CELL_LAYOUT (column))))
return TRUE;
}
@ -7911,7 +7980,7 @@ gtk_tree_view_header_focus (GtkTreeView *tree_view,
{
GtkTreeViewColumn *column;
GtkWidget *focus_child;
GtkWidget *button;
GList *last_column, *first_column;
GList *tmp_list;
gboolean rtl;
@ -7925,8 +7994,9 @@ gtk_tree_view_header_focus (GtkTreeView *tree_view,
while (first_column)
{
column = GTK_TREE_VIEW_COLUMN (first_column->data);
button = gtk_tree_view_column_get_button (column);
if (gtk_widget_get_can_focus (column->button) &&
if (gtk_widget_get_can_focus (button) &&
gtk_tree_view_column_get_visible (column) &&
(gtk_tree_view_column_get_clickable (column) ||
gtk_tree_view_column_get_reorderable (column)))
@ -7943,8 +8013,9 @@ gtk_tree_view_header_focus (GtkTreeView *tree_view,
while (last_column)
{
column = GTK_TREE_VIEW_COLUMN (last_column->data);
button = gtk_tree_view_column_get_button (column);
if (gtk_widget_get_can_focus (column->button) &&
if (gtk_widget_get_can_focus (button) &&
gtk_tree_view_column_get_visible (column) &&
(gtk_tree_view_column_get_clickable (column) ||
gtk_tree_view_column_get_reorderable (column)))
@ -7963,11 +8034,16 @@ gtk_tree_view_header_focus (GtkTreeView *tree_view,
case GTK_DIR_DOWN:
if (focus_child == NULL)
{
if (tree_view->priv->focus_column != NULL &&
gtk_widget_get_can_focus (tree_view->priv->focus_column->button))
focus_child = tree_view->priv->focus_column->button;
if (tree_view->priv->focus_column != NULL)
button = gtk_tree_view_column_get_button (tree_view->priv->focus_column);
else
button = NULL;
if (button && gtk_widget_get_can_focus (button))
focus_child = button;
else
focus_child = GTK_TREE_VIEW_COLUMN (first_column->data)->button;
focus_child = gtk_tree_view_column_get_button (GTK_TREE_VIEW_COLUMN (first_column->data));
gtk_widget_grab_focus (focus_child);
break;
}
@ -7978,11 +8054,12 @@ gtk_tree_view_header_focus (GtkTreeView *tree_view,
if (focus_child == NULL)
{
if (tree_view->priv->focus_column != NULL)
focus_child = tree_view->priv->focus_column->button;
focus_child = gtk_tree_view_column_get_button (tree_view->priv->focus_column);
else if (dir == GTK_DIR_LEFT)
focus_child = GTK_TREE_VIEW_COLUMN (last_column->data)->button;
focus_child = gtk_tree_view_column_get_button (GTK_TREE_VIEW_COLUMN (last_column->data));
else
focus_child = GTK_TREE_VIEW_COLUMN (first_column->data)->button;
focus_child = gtk_tree_view_column_get_button (GTK_TREE_VIEW_COLUMN (first_column->data));
gtk_widget_grab_focus (focus_child);
break;
}
@ -7996,7 +8073,7 @@ gtk_tree_view_header_focus (GtkTreeView *tree_view,
/* We need to move the focus among the row of buttons. */
for (tmp_list = tree_view->priv->columns; tmp_list; tmp_list = tmp_list->next)
if (GTK_TREE_VIEW_COLUMN (tmp_list->data)->button == focus_child)
if (gtk_tree_view_column_get_button (GTK_TREE_VIEW_COLUMN (tmp_list->data)) == focus_child)
break;
if ((tmp_list == first_column && dir == (rtl ? GTK_DIR_RIGHT : GTK_DIR_LEFT))
@ -8009,6 +8086,7 @@ gtk_tree_view_header_focus (GtkTreeView *tree_view,
while (tmp_list)
{
GtkTreeViewColumn *column;
GtkWidget *button;
if (dir == (rtl ? GTK_DIR_LEFT : GTK_DIR_RIGHT))
tmp_list = tmp_list->next;
@ -8021,12 +8099,13 @@ gtk_tree_view_header_focus (GtkTreeView *tree_view,
break;
}
column = tmp_list->data;
if (column->button &&
button = gtk_tree_view_column_get_button (column);
if (button &&
gtk_tree_view_column_get_visible (column) &&
gtk_widget_get_can_focus (column->button))
gtk_widget_get_can_focus (button))
{
focus_child = column->button;
gtk_widget_grab_focus (column->button);
focus_child = button;
gtk_widget_grab_focus (button);
break;
}
}
@ -8041,7 +8120,7 @@ gtk_tree_view_header_focus (GtkTreeView *tree_view,
if (focus_child)
{
for (tmp_list = tree_view->priv->columns; tmp_list; tmp_list = tmp_list->next)
if (GTK_TREE_VIEW_COLUMN (tmp_list->data)->button == focus_child)
if (gtk_tree_view_column_get_button (GTK_TREE_VIEW_COLUMN (tmp_list->data)) == focus_child)
{
tree_view->priv->focus_column = GTK_TREE_VIEW_COLUMN (tmp_list->data);
break;
@ -8213,7 +8292,7 @@ gtk_tree_view_set_focus_child (GtkContainer *container,
for (list = tree_view->priv->columns; list; list = list->next)
{
if (GTK_TREE_VIEW_COLUMN (list->data)->button == child)
if (gtk_tree_view_column_get_button (GTK_TREE_VIEW_COLUMN (list->data)) == child)
{
tree_view->priv->focus_column = GTK_TREE_VIEW_COLUMN (list->data);
break;
@ -8601,7 +8680,6 @@ gtk_tree_view_row_has_child_toggled (GtkTreeModel *model,
for (list = tree_view->priv->columns; list; list = list->next)
if (gtk_tree_view_column_get_visible (GTK_TREE_VIEW_COLUMN (list->data)))
{
GTK_TREE_VIEW_COLUMN (list->data)->dirty = TRUE;
_gtk_tree_view_column_cell_set_dirty (GTK_TREE_VIEW_COLUMN (list->data), TRUE);
break;
}
@ -8990,7 +9068,7 @@ gtk_tree_view_clamp_column_visible (GtkTreeView *tree_view,
if (column == NULL)
return;
gtk_widget_get_allocation (column->button, &allocation);
gtk_widget_get_allocation (gtk_tree_view_column_get_button (column), &allocation);
x = allocation.x;
width = allocation.width;
@ -9354,11 +9432,16 @@ gtk_tree_view_set_column_drag_info (GtkTreeView *tree_view,
if (tmp_list->next != NULL)
{
GtkAllocation right_allocation, left_allocation;
GtkWidget *left_button, *right_button;
g_assert (tmp_list->next->data);
gtk_widget_get_allocation (reorder->right_column->button, &right_allocation);
gtk_widget_get_allocation (((GtkTreeViewColumnReorder *)tmp_list->next->data)->left_column->button, &left_allocation);
right_button = gtk_tree_view_column_get_button (reorder->right_column);
left_button = gtk_tree_view_column_get_button
(((GtkTreeViewColumnReorder *)tmp_list->next->data)->left_column);
gtk_widget_get_allocation (right_button, &right_allocation);
gtk_widget_get_allocation (left_button, &left_allocation);
left = reorder->right_align = (right_allocation.x + right_allocation.width + left_allocation.x) / 2;
}
else
@ -9379,6 +9462,7 @@ _gtk_tree_view_column_start_drag (GtkTreeView *tree_view,
GtkAllocation button_allocation;
GdkScreen *screen = gtk_widget_get_screen (GTK_WIDGET (tree_view));
GdkDisplay *display = gdk_screen_get_display (screen);
GtkWidget *button;
g_return_if_fail (tree_view->priv->column_drag_info == NULL);
g_return_if_fail (tree_view->priv->cur_reorder == NULL);
@ -9388,12 +9472,14 @@ _gtk_tree_view_column_start_drag (GtkTreeView *tree_view,
if (tree_view->priv->column_drag_info == NULL)
return;
button = gtk_tree_view_column_get_button (column);
if (tree_view->priv->drag_window == NULL)
{
GdkWindowAttr attributes;
guint attributes_mask;
gtk_widget_get_allocation (column->button, &button_allocation);
gtk_widget_get_allocation (button, &button_allocation);
attributes.window_type = GDK_WINDOW_CHILD;
attributes.wclass = GDK_INPUT_OUTPUT;
@ -9414,17 +9500,17 @@ _gtk_tree_view_column_start_drag (GtkTreeView *tree_view,
gdk_display_pointer_ungrab (display, GDK_CURRENT_TIME);
gdk_display_keyboard_ungrab (display, GDK_CURRENT_TIME);
gtk_grab_remove (column->button);
gtk_grab_remove (button);
send_event = gdk_event_new (GDK_LEAVE_NOTIFY);
send_event->crossing.send_event = TRUE;
send_event->crossing.window = g_object_ref (gtk_button_get_event_window (GTK_BUTTON (column->button)));
send_event->crossing.window = g_object_ref (gtk_button_get_event_window (GTK_BUTTON (button)));
send_event->crossing.subwindow = NULL;
send_event->crossing.detail = GDK_NOTIFY_ANCESTOR;
send_event->crossing.time = GDK_CURRENT_TIME;
gdk_event_set_device (send_event, device);
gtk_propagate_event (column->button, send_event);
gtk_propagate_event (button, send_event);
gdk_event_free (send_event);
send_event = gdk_event_new (GDK_BUTTON_RELEASE);
@ -9440,22 +9526,22 @@ _gtk_tree_view_column_start_drag (GtkTreeView *tree_view,
send_event->button.y_root = 0;
gdk_event_set_device (send_event, device);
gtk_propagate_event (column->button, send_event);
gtk_propagate_event (button, send_event);
gdk_event_free (send_event);
/* Kids, don't try this at home */
g_object_ref (column->button);
gtk_container_remove (GTK_CONTAINER (tree_view), column->button);
gtk_widget_set_parent_window (column->button, tree_view->priv->drag_window);
gtk_widget_set_parent (column->button, GTK_WIDGET (tree_view));
g_object_unref (column->button);
g_object_ref (button);
gtk_container_remove (GTK_CONTAINER (tree_view), button);
gtk_widget_set_parent_window (button, tree_view->priv->drag_window);
gtk_widget_set_parent (button, GTK_WIDGET (tree_view));
g_object_unref (button);
gtk_widget_get_allocation (column->button, &button_allocation);
gtk_widget_get_allocation (button, &button_allocation);
tree_view->priv->drag_column_x = button_allocation.x;
allocation = button_allocation;
allocation.x = 0;
gtk_widget_size_allocate (column->button, &allocation);
gtk_widget_set_parent_window (column->button, tree_view->priv->drag_window);
gtk_widget_size_allocate (button, &allocation);
gtk_widget_set_parent_window (button, tree_view->priv->drag_window);
tree_view->priv->drag_column = column;
gdk_window_show (tree_view->priv->drag_window);
@ -10527,12 +10613,14 @@ gtk_tree_view_real_start_interactive_search (GtkTreeView *tree_view,
for (list = tree_view->priv->columns; list; list = list->next)
{
GtkTreeViewColumn *column;
GtkWidget *button;
column = list->data;
if (!gtk_tree_view_column_get_visible (column))
continue;
if (gtk_widget_has_focus (column->button))
button = gtk_tree_view_column_get_button (column);
if (gtk_widget_has_focus (button))
{
found_focus = TRUE;
break;
@ -10613,14 +10701,14 @@ gtk_tree_view_new_column_width (GtkTreeView *tree_view,
*/
rtl = (gtk_widget_get_direction (GTK_WIDGET (tree_view)) == GTK_TEXT_DIR_RTL);
column = g_list_nth (tree_view->priv->columns, i)->data;
gtk_widget_get_allocation (column->button, &allocation);
gtk_widget_get_allocation (gtk_tree_view_column_get_button (column), &allocation);
width = rtl ? (allocation.x + allocation.width - *x) : (*x - allocation.x);
/* Clamp down the value */
min_width = gtk_tree_view_column_get_min_width (column);
if (min_width == -1)
{
gtk_widget_get_preferred_size (column->button, &button_req, NULL);
gtk_widget_get_preferred_size (gtk_tree_view_column_get_button (column), &button_req, NULL);
width = MAX (button_req.width, width);
}
else
@ -10737,8 +10825,10 @@ gtk_tree_view_adjustment_changed (GtkAdjustment *adjustment,
GList *list;
GtkTreeViewChild *child = NULL;
GtkCellEditable *edit_widget;
GtkCellArea *area;
edit_widget = gtk_cell_area_get_edit_widget (tree_view->priv->edited_column->cell_area);
area = gtk_cell_layout_get_area (GTK_CELL_LAYOUT (tree_view->priv->edited_column));
edit_widget = gtk_cell_area_get_edit_widget (area);
if (GTK_IS_WIDGET (edit_widget))
{
adjust_allocation (GTK_WIDGET (edit_widget), 0, dy);
@ -11149,6 +11239,7 @@ gtk_tree_view_set_headers_visible (GtkTreeView *tree_view,
GList *list;
GtkTreeViewColumn *column;
GtkAllocation allocation;
GtkWidget *button;
g_return_if_fail (GTK_IS_TREE_VIEW (tree_view));
@ -11182,7 +11273,8 @@ gtk_tree_view_set_headers_visible (GtkTreeView *tree_view,
for (list = tree_view->priv->columns; list; list = list->next)
{
column = list->data;
gtk_widget_unmap (column->button);
button = gtk_tree_view_column_get_button (column);
gtk_widget_unmap (button);
}
gdk_window_hide (tree_view->priv->header_window);
}
@ -11347,7 +11439,7 @@ gtk_tree_view_append_column (GtkTreeView *tree_view,
{
g_return_val_if_fail (GTK_IS_TREE_VIEW (tree_view), -1);
g_return_val_if_fail (GTK_IS_TREE_VIEW_COLUMN (column), -1);
g_return_val_if_fail (column->tree_view == NULL, -1);
g_return_val_if_fail (gtk_tree_view_column_get_tree_view (column) == NULL, -1);
return gtk_tree_view_insert_column (tree_view, column, -1);
}
@ -11368,7 +11460,7 @@ gtk_tree_view_remove_column (GtkTreeView *tree_view,
{
g_return_val_if_fail (GTK_IS_TREE_VIEW (tree_view), -1);
g_return_val_if_fail (GTK_IS_TREE_VIEW_COLUMN (column), -1);
g_return_val_if_fail (column->tree_view == GTK_WIDGET (tree_view), -1);
g_return_val_if_fail (gtk_tree_view_column_get_tree_view (column) == GTK_WIDGET (tree_view), -1);
if (tree_view->priv->focus_column == column)
tree_view->priv->focus_column = NULL;
@ -11440,7 +11532,7 @@ gtk_tree_view_insert_column (GtkTreeView *tree_view,
{
g_return_val_if_fail (GTK_IS_TREE_VIEW (tree_view), -1);
g_return_val_if_fail (GTK_IS_TREE_VIEW_COLUMN (column), -1);
g_return_val_if_fail (column->tree_view == NULL, -1);
g_return_val_if_fail (gtk_tree_view_column_get_tree_view (column) == NULL, -1);
if (tree_view->priv->fixed_height_mode)
g_return_val_if_fail (gtk_tree_view_column_get_sizing (column)
@ -12878,7 +12970,8 @@ gtk_tree_view_set_cursor_on_cell (GtkTreeView *tree_view,
/* cancel the current editing, if it exists */
if (tree_view->priv->edited_column &&
gtk_cell_area_get_edit_widget (tree_view->priv->edited_column->cell_area))
gtk_cell_area_get_edit_widget
(gtk_cell_layout_get_area (GTK_CELL_LAYOUT (tree_view->priv->edited_column))))
gtk_tree_view_stop_editing (tree_view, TRUE);
gtk_tree_view_real_set_cursor (tree_view, path, TRUE, TRUE);
@ -13091,7 +13184,7 @@ gtk_tree_view_get_cell_area (GtkTreeView *tree_view,
g_return_if_fail (GTK_IS_TREE_VIEW (tree_view));
g_return_if_fail (column == NULL || GTK_IS_TREE_VIEW_COLUMN (column));
g_return_if_fail (rect != NULL);
g_return_if_fail (!column || column->tree_view == (GtkWidget *) tree_view);
g_return_if_fail (!column || gtk_tree_view_column_get_tree_view (column) == (GtkWidget *) tree_view);
g_return_if_fail (gtk_widget_get_realized (GTK_WIDGET (tree_view)));
gtk_widget_style_get (GTK_WIDGET (tree_view),
@ -13106,7 +13199,7 @@ gtk_tree_view_get_cell_area (GtkTreeView *tree_view,
if (column)
{
gtk_widget_get_allocation (column->button, &allocation);
gtk_widget_get_allocation (gtk_tree_view_column_get_button (column), &allocation);
rect->x = allocation.x + horizontal_separator/2;
rect->width = allocation.width - horizontal_separator;
}
@ -14908,8 +15001,8 @@ gtk_tree_view_start_editing (GtkTreeView *tree_view,
focus_column,
&cell_area);
if (gtk_cell_area_activate (focus_column->cell_area,
focus_column->cell_area_context,
if (gtk_cell_area_activate (gtk_cell_layout_get_area (GTK_CELL_LAYOUT (focus_column)),
_gtk_tree_view_column_get_context (focus_column),
GTK_WIDGET (tree_view),
&cell_area,
flags))
@ -14975,7 +15068,7 @@ gtk_tree_view_stop_editing (GtkTreeView *tree_view,
*/
column = tree_view->priv->edited_column;
gtk_cell_area_stop_editing (column->cell_area, cancel_editing);
gtk_cell_area_stop_editing (gtk_cell_layout_get_area (GTK_CELL_LAYOUT (column)), cancel_editing);
tree_view->priv->edited_column = NULL;
}

File diff suppressed because it is too large Load Diff

View File

@ -40,8 +40,9 @@ G_BEGIN_DECLS
#define GTK_IS_TREE_VIEW_COLUMN_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_TREE_VIEW_COLUMN))
#define GTK_TREE_VIEW_COLUMN_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_TREE_VIEW_COLUMN, GtkTreeViewColumnClass))
typedef struct _GtkTreeViewColumn GtkTreeViewColumn;
typedef struct _GtkTreeViewColumnClass GtkTreeViewColumnClass;
typedef struct _GtkTreeViewColumn GtkTreeViewColumn;
typedef struct _GtkTreeViewColumnClass GtkTreeViewColumnClass;
typedef struct _GtkTreeViewColumnPrivate GtkTreeViewColumnPrivate;
/**
* GtkTreeViewColumnSizing:
@ -86,56 +87,7 @@ struct _GtkTreeViewColumn
{
GInitiallyUnowned parent_instance;
GtkWidget *GSEAL (tree_view);
GtkWidget *GSEAL (button);
GtkWidget *GSEAL (child);
GtkWidget *GSEAL (arrow);
GtkWidget *GSEAL (alignment);
GdkWindow *GSEAL (window);
gfloat GSEAL (xalign);
gulong GSEAL (property_changed_signal);
/* Sizing fields */
/* see gtk+/doc/tree-column-sizing.txt for more information on them */
GtkTreeViewColumnSizing GSEAL (column_type);
gint GSEAL (requested_width);
gint GSEAL (button_request);
gint GSEAL (resized_width);
gint GSEAL (width);
gint GSEAL (fixed_width);
gint GSEAL (min_width);
gint GSEAL (max_width);
/* dragging columns */
gint GSEAL (drag_x);
gint GSEAL (drag_y);
gchar *GSEAL (title);
/* Sorting */
gulong GSEAL (sort_clicked_signal);
gulong GSEAL (sort_column_changed_signal);
gint GSEAL (sort_column_id);
GtkSortType GSEAL (sort_order);
/* Cell area */
GtkCellArea *cell_area;
GtkCellAreaContext *cell_area_context;
gulong add_editable_signal;
gulong remove_editable_signal;
gulong context_changed_signal;
/* Flags */
guint GSEAL (visible) : 1;
guint GSEAL (resizable) : 1;
guint GSEAL (clickable) : 1;
guint GSEAL (dirty) : 1;
guint GSEAL (show_sort_indicator) : 1;
guint GSEAL (maybe_reordered) : 1;
guint GSEAL (reorderable) : 1;
guint GSEAL (use_resized_width) : 1;
guint GSEAL (expand) : 1;
GtkTreeViewColumnPrivate *priv;
};
struct _GtkTreeViewColumnClass
@ -262,6 +214,7 @@ gboolean gtk_tree_view_column_cell_get_position (GtkTreeViewCol
gint *width);
void gtk_tree_view_column_queue_resize (GtkTreeViewColumn *tree_column);
GtkWidget *gtk_tree_view_column_get_tree_view (GtkTreeViewColumn *tree_column);
GtkWidget *gtk_tree_view_column_get_button (GtkTreeViewColumn *tree_column);
G_END_DECLS

View File

@ -4651,7 +4651,7 @@ get_header_from_column (GtkTreeViewColumn *tv_col)
/* If the user has not set a header object, grab the column */
/* header object defined by the GtkTreeView */
header_widget = tv_col->button;
header_widget = gtk_tree_view_column_get_button (tv_col);
if (header_widget)
{

View File

@ -359,7 +359,7 @@ main (int argc, char *argv[])
/* Set a tooltip on the column */
column = gtk_tree_view_get_column (GTK_TREE_VIEW (tree_view), 0);
gtk_tree_view_column_set_clickable (column, TRUE);
g_object_set (column->button, "tooltip-text", "Header", NULL);
g_object_set (gtk_tree_view_column_get_button (column), "tooltip-text", "Header", NULL);
gtk_box_pack_start (GTK_BOX (box), tree_view, FALSE, FALSE, 2);