Use accessor functions to access GtkCellRenderer

This commit is contained in:
Javier Jardón
2010-05-30 22:38:33 +02:00
parent 932568d1ed
commit db584abef3
10 changed files with 164 additions and 96 deletions

View File

@ -99,9 +99,8 @@ gtk_cell_renderer_toggle_init (GtkCellRendererToggle *celltoggle)
celltoggle->active = FALSE;
celltoggle->radio = FALSE;
GTK_CELL_RENDERER (celltoggle)->mode = GTK_CELL_RENDERER_MODE_ACTIVATABLE;
GTK_CELL_RENDERER (celltoggle)->xpad = 2;
GTK_CELL_RENDERER (celltoggle)->ypad = 2;
g_object_set (celltoggle, "mode", GTK_CELL_RENDERER_MODE_ACTIVATABLE, NULL);
gtk_cell_renderer_set_padding (GTK_CELL_RENDERER (celltoggle), 2, 2);
priv->indicator_size = TOGGLE_WIDTH;
priv->inconsistent = FALSE;
@ -283,12 +282,14 @@ gtk_cell_renderer_toggle_get_size (GtkCellRenderer *cell,
{
gint calc_width;
gint calc_height;
gint xpad, ypad;
GtkCellRendererTogglePrivate *priv;
priv = GTK_CELL_RENDERER_TOGGLE_GET_PRIVATE (cell);
calc_width = (gint) cell->xpad * 2 + priv->indicator_size;
calc_height = (gint) cell->ypad * 2 + priv->indicator_size;
gtk_cell_renderer_get_padding (cell, &xpad, &ypad);
calc_width = xpad * 2 + priv->indicator_size;
calc_height = ypad * 2 + priv->indicator_size;
if (width)
*width = calc_width;
@ -298,15 +299,19 @@ gtk_cell_renderer_toggle_get_size (GtkCellRenderer *cell,
if (cell_area)
{
gfloat xalign, yalign;
gtk_cell_renderer_get_alignment (cell, &xalign, &yalign);
if (x_offset)
{
*x_offset = ((gtk_widget_get_direction (widget) == GTK_TEXT_DIR_RTL) ?
(1.0 - cell->xalign) : cell->xalign) * (cell_area->width - calc_width);
(1.0 - xalign) : xalign) * (cell_area->width - calc_width);
*x_offset = MAX (*x_offset, 0);
}
if (y_offset)
{
*y_offset = cell->yalign * (cell_area->height - calc_height);
*y_offset = yalign * (cell_area->height - calc_height);
*y_offset = MAX (*y_offset, 0);
}
}
@ -330,6 +335,7 @@ gtk_cell_renderer_toggle_render (GtkCellRenderer *cell,
GtkCellRendererTogglePrivate *priv;
gint width, height;
gint x_offset, y_offset;
gint xpad, ypad;
GtkShadowType shadow;
GtkStateType state = 0;
@ -338,8 +344,9 @@ gtk_cell_renderer_toggle_render (GtkCellRenderer *cell,
gtk_cell_renderer_toggle_get_size (cell, widget, cell_area,
&x_offset, &y_offset,
&width, &height);
width -= cell->xpad*2;
height -= cell->ypad*2;
gtk_cell_renderer_get_padding (cell, &xpad, &ypad);
width -= xpad * 2;
height -= ypad * 2;
if (width <= 0 || height <= 0)
return;
@ -349,7 +356,8 @@ gtk_cell_renderer_toggle_render (GtkCellRenderer *cell,
else
shadow = celltoggle->active ? GTK_SHADOW_IN : GTK_SHADOW_OUT;
if (gtk_widget_get_state (widget) == GTK_STATE_INSENSITIVE || !cell->sensitive)
if (gtk_widget_get_state (widget) == GTK_STATE_INSENSITIVE ||
!gtk_cell_renderer_get_sensitive (cell))
{
state = GTK_STATE_INSENSITIVE;
}
@ -374,8 +382,8 @@ gtk_cell_renderer_toggle_render (GtkCellRenderer *cell,
window,
state, shadow,
expose_area, widget, "cellradio",
cell_area->x + x_offset + cell->xpad,
cell_area->y + y_offset + cell->ypad,
cell_area->x + x_offset + xpad,
cell_area->y + y_offset + ypad,
width, height);
}
else
@ -384,8 +392,8 @@ gtk_cell_renderer_toggle_render (GtkCellRenderer *cell,
window,
state, shadow,
expose_area, widget, "cellcheck",
cell_area->x + x_offset + cell->xpad,
cell_area->y + y_offset + cell->ypad,
cell_area->x + x_offset + xpad,
cell_area->y + y_offset + ypad,
width, height);
}
}