Use GtkBin accessors

This commit is contained in:
Javier Jardón
2010-05-24 22:31:36 +02:00
parent 2de1f3f88c
commit 4427760bcc
45 changed files with 475 additions and 299 deletions

View File

@ -628,7 +628,9 @@ gtk_menu_item_activatable_interface_init (GtkActivatableIface *iface)
static void
activatable_update_label (GtkMenuItem *menu_item, GtkAction *action)
{
GtkWidget *child = GTK_BIN (menu_item)->child;
GtkWidget *child;
child = gtk_bin_get_child (GTK_BIN (menu_item));
if (GTK_IS_LABEL (child))
{
@ -667,12 +669,11 @@ gtk_menu_item_sync_action_properties (GtkActivatable *activatable,
{
GtkMenuItem *menu_item = GTK_MENU_ITEM (activatable);
GtkMenuItemPrivate *priv = GET_PRIVATE (menu_item);
GtkWidget *label;
if (!priv->use_action_appearance || !action)
{
GtkWidget *label = GTK_BIN (menu_item)->child;
label = GTK_BIN (menu_item)->child;
label = gtk_bin_get_child (GTK_BIN (menu_item));
if (GTK_IS_ACCEL_LABEL (label))
gtk_accel_label_set_accel_widget (GTK_ACCEL_LABEL (label), GTK_WIDGET (menu_item));
@ -688,7 +689,7 @@ gtk_menu_item_sync_action_properties (GtkActivatable *activatable,
if (priv->use_action_appearance)
{
GtkWidget *label = GTK_BIN (menu_item)->child;
label = gtk_bin_get_child (GTK_BIN (menu_item));
/* make sure label is a label */
if (label && !GTK_IS_LABEL (label))
@ -700,8 +701,6 @@ gtk_menu_item_sync_action_properties (GtkActivatable *activatable,
gtk_menu_item_ensure_label (menu_item);
gtk_menu_item_set_use_underline (menu_item, TRUE);
label = GTK_BIN (menu_item)->child;
if (GTK_IS_ACCEL_LABEL (label) && gtk_action_get_accel_path (action))
{
gtk_accel_label_set_accel_widget (GTK_ACCEL_LABEL (label), NULL);
@ -934,6 +933,7 @@ gtk_menu_item_size_request (GtkWidget *widget,
{
GtkMenuItem *menu_item;
GtkBin *bin;
GtkWidget *child;
guint accel_width;
guint horizontal_padding;
guint border_width;
@ -972,11 +972,12 @@ gtk_menu_item_size_request (GtkWidget *widget,
(child_pack_dir == GTK_PACK_DIRECTION_TTB || child_pack_dir == GTK_PACK_DIRECTION_BTT))
requisition->height += 2 * horizontal_padding;
if (bin->child && gtk_widget_get_visible (bin->child))
child = gtk_bin_get_child (bin);
if (gtk_widget_get_visible (child))
{
GtkRequisition child_requisition;
gtk_widget_size_request (bin->child, &child_requisition);
gtk_widget_size_request (child, &child_requisition);
requisition->width += child_requisition.width;
requisition->height += child_requisition.height;
@ -1028,6 +1029,7 @@ gtk_menu_item_size_allocate (GtkWidget *widget,
GtkTextDirection direction;
GtkPackDirection pack_dir;
GtkPackDirection child_pack_dir;
GtkWidget *child;
g_return_if_fail (GTK_IS_MENU_ITEM (widget));
g_return_if_fail (allocation != NULL);
@ -1050,7 +1052,8 @@ gtk_menu_item_size_allocate (GtkWidget *widget,
widget->allocation = *allocation;
if (bin->child)
child = gtk_bin_get_child (bin);
if (child)
{
GtkRequisition child_requisition;
guint horizontal_padding;
@ -1091,7 +1094,7 @@ gtk_menu_item_size_allocate (GtkWidget *widget,
child_allocation.x += widget->allocation.x;
child_allocation.y += widget->allocation.y;
gtk_widget_get_child_requisition (bin->child, &child_requisition);
gtk_widget_get_child_requisition (child, &child_requisition);
if (menu_item->submenu && menu_item->show_submenu_indicator)
{
if (direction == GTK_TEXT_DIR_RTL)
@ -1102,7 +1105,7 @@ gtk_menu_item_size_allocate (GtkWidget *widget,
if (child_allocation.width < 1)
child_allocation.width = 1;
gtk_widget_size_allocate (bin->child, &child_allocation);
gtk_widget_size_allocate (child, &child_allocation);
}
if (gtk_widget_get_realized (widget))
@ -1185,6 +1188,7 @@ gtk_menu_item_paint (GtkWidget *widget,
GtkMenuItem *menu_item;
GtkStateType state_type;
GtkShadowType shadow_type, selected_shadow_type;
GtkWidget *child;
gint width, height;
gint x, y;
guint border_width = gtk_container_get_border_width (GTK_CONTAINER (widget));
@ -1199,9 +1203,10 @@ gtk_menu_item_paint (GtkWidget *widget,
y = widget->allocation.y + border_width;
width = widget->allocation.width - border_width * 2;
height = widget->allocation.height - border_width * 2;
child = gtk_bin_get_child (GTK_BIN (menu_item));
if ((state_type == GTK_STATE_PRELIGHT) &&
(GTK_BIN (menu_item)->child))
if (child && state_type == GTK_STATE_PRELIGHT)
{
gtk_widget_style_get (widget,
"selected-shadow-type", &selected_shadow_type,
@ -1233,9 +1238,9 @@ gtk_menu_item_paint (GtkWidget *widget,
"arrow-scaling", &arrow_scaling,
NULL);
context = gtk_widget_get_pango_context (GTK_BIN (menu_item)->child);
context = gtk_widget_get_pango_context (child);
metrics = pango_context_get_metrics (context,
GTK_WIDGET (GTK_BIN (menu_item)->child)->style->font_desc,
child->style->font_desc,
pango_context_get_language (context));
arrow_size = (PANGO_PIXELS (pango_font_metrics_get_ascent (metrics) +
@ -1269,7 +1274,7 @@ gtk_menu_item_paint (GtkWidget *widget,
arrow_x, arrow_y,
arrow_extent, arrow_extent);
}
else if (!GTK_BIN (menu_item)->child)
else if (!child)
{
gboolean wide_separators;
gint separator_height;
@ -1448,11 +1453,14 @@ static void
gtk_real_menu_item_set_label (GtkMenuItem *menu_item,
const gchar *label)
{
GtkWidget *child;
gtk_menu_item_ensure_label (menu_item);
if (GTK_IS_LABEL (GTK_BIN (menu_item)->child))
child = gtk_bin_get_child (GTK_BIN (menu_item));
if (GTK_IS_LABEL (child))
{
gtk_label_set_label (GTK_LABEL (GTK_BIN (menu_item)->child), label ? label : "");
gtk_label_set_label (GTK_LABEL (child), label ? label : "");
g_object_notify (G_OBJECT (menu_item), "label");
}
@ -1461,10 +1469,13 @@ gtk_real_menu_item_set_label (GtkMenuItem *menu_item,
static G_CONST_RETURN gchar *
gtk_real_menu_item_get_label (GtkMenuItem *menu_item)
{
GtkWidget *child;
gtk_menu_item_ensure_label (menu_item);
if (GTK_IS_LABEL (GTK_BIN (menu_item)->child))
return gtk_label_get_label (GTK_LABEL (GTK_BIN (menu_item)->child));
child = gtk_bin_get_child (GTK_BIN (menu_item));
if (GTK_IS_LABEL (child))
return gtk_label_get_label (GTK_LABEL (child));
return NULL;
}
@ -2076,21 +2087,20 @@ gtk_menu_item_forall (GtkContainer *container,
GtkCallback callback,
gpointer callback_data)
{
GtkBin *bin;
GtkWidget *child;
g_return_if_fail (GTK_IS_MENU_ITEM (container));
g_return_if_fail (callback != NULL);
bin = GTK_BIN (container);
if (bin->child)
callback (bin->child, callback_data);
child = gtk_bin_get_child (GTK_BIN (container));
if (child)
callback (child, callback_data);
}
gboolean
_gtk_menu_item_is_selectable (GtkWidget *menu_item)
{
if ((!GTK_BIN (menu_item)->child &&
if ((!gtk_bin_get_child (GTK_BIN (menu_item)) &&
G_OBJECT_TYPE (menu_item) == GTK_TYPE_MENU_ITEM) ||
GTK_IS_SEPARATOR_MENU_ITEM (menu_item) ||
!gtk_widget_is_sensitive (menu_item) ||
@ -2105,7 +2115,7 @@ gtk_menu_item_ensure_label (GtkMenuItem *menu_item)
{
GtkWidget *accel_label;
if (!GTK_BIN (menu_item)->child)
if (!gtk_bin_get_child (GTK_BIN (menu_item)))
{
accel_label = g_object_new (GTK_TYPE_ACCEL_LABEL, NULL);
gtk_misc_set_alignment (GTK_MISC (accel_label), 0.0, 0.5);
@ -2168,13 +2178,16 @@ void
gtk_menu_item_set_use_underline (GtkMenuItem *menu_item,
gboolean setting)
{
GtkWidget *child;
g_return_if_fail (GTK_IS_MENU_ITEM (menu_item));
gtk_menu_item_ensure_label (menu_item);
if (GTK_IS_LABEL (GTK_BIN (menu_item)->child))
child = gtk_bin_get_child (GTK_BIN (menu_item));
if (GTK_IS_LABEL (child))
{
gtk_label_set_use_underline (GTK_LABEL (GTK_BIN (menu_item)->child), setting);
gtk_label_set_use_underline (GTK_LABEL (child), setting);
g_object_notify (G_OBJECT (menu_item), "use-underline");
}
@ -2195,12 +2208,15 @@ gtk_menu_item_set_use_underline (GtkMenuItem *menu_item,
gboolean
gtk_menu_item_get_use_underline (GtkMenuItem *menu_item)
{
GtkWidget *child;
g_return_val_if_fail (GTK_IS_MENU_ITEM (menu_item), FALSE);
gtk_menu_item_ensure_label (menu_item);
if (GTK_IS_LABEL (GTK_BIN (menu_item)->child))
return gtk_label_get_use_underline (GTK_LABEL (GTK_BIN (menu_item)->child));
child = gtk_bin_get_child (GTK_BIN (menu_item));
if (GTK_IS_LABEL (child))
return gtk_label_get_use_underline (GTK_LABEL (child));
return FALSE;
}