summaryrefslogtreecommitdiff
path: root/gtk/gtkradiomenuitem.c
diff options
context:
space:
mode:
authorSoeren Sandmann <sandmann@daimi.au.dk>2003-08-29 18:28:23 +0000
committerSøren Sandmann Pedersen <ssp@src.gnome.org>2003-08-29 18:28:23 +0000
commit545b40a1b306cf2603d2a845eda320624e901683 (patch)
treeecdef4048435fcf335f5403c70f0da78bf0ee1a6 /gtk/gtkradiomenuitem.c
parent4ec7006f282d3570b9ecff8e9e5eaef484f0723f (diff)
downloadgtk+-545b40a1b306cf2603d2a845eda320624e901683.tar.gz
Only treat buttons as homogeneous when they are narrower than 13 time the
Fri Aug 29 20:32:07 2003 Soeren Sandmann <sandmann@daimi.au.dk> * gtk/gtktoolbar.c: Only treat buttons as homogeneous when they are narrower than 13 time the estimated character width of the font. (#107781, David Bordoley) * gtk/gtktoggletoolbutton.c (gtk_toggle_tool_button_init): Check here if the GtkToggleButton is active. This may be the case if it is a radio button. * gtk/gtktoolbar.c: Clarify documentation wrt. GtkSignalFunc vs. void (*) (GtkWidget, gpointer). (#107495, Mariano Suarez-Alvarez). * gtk/gtkcheckmenuitem.[ch]: new "draw_as_radio" property. (#111207, David Bordoley). * gtk/gtktoggletoolbutton.c (gtk_toggle_tool_button_create_menu_proxy): use new "draw_as_radio" property on the menu item when the item is a radio tool button * gtk/gtktoolbutton.c (gtk_tool_button_create_menu_proxy): Fixes to only pay attention to the "use_underline" property when the button label comes from the "label" property.
Diffstat (limited to 'gtk/gtkradiomenuitem.c')
-rw-r--r--gtk/gtkradiomenuitem.c80
1 files changed, 2 insertions, 78 deletions
diff --git a/gtk/gtkradiomenuitem.c b/gtk/gtkradiomenuitem.c
index 4d7ba5f7fa..2662923353 100644
--- a/gtk/gtkradiomenuitem.c
+++ b/gtk/gtkradiomenuitem.c
@@ -32,8 +32,6 @@ static void gtk_radio_menu_item_class_init (GtkRadioMenuItemClass *klass);
static void gtk_radio_menu_item_init (GtkRadioMenuItem *radio_menu_item);
static void gtk_radio_menu_item_destroy (GtkObject *object);
static void gtk_radio_menu_item_activate (GtkMenuItem *menu_item);
-static void gtk_radio_menu_item_draw_indicator (GtkCheckMenuItem *check_menu_item,
- GdkRectangle *area);
static GtkCheckMenuItemClass *parent_class = NULL;
@@ -185,25 +183,22 @@ gtk_radio_menu_item_class_init (GtkRadioMenuItemClass *klass)
{
GtkObjectClass *object_class;
GtkMenuItemClass *menu_item_class;
- GtkCheckMenuItemClass *check_menu_item_class;
object_class = (GtkObjectClass*) klass;
menu_item_class = (GtkMenuItemClass*) klass;
- check_menu_item_class = (GtkCheckMenuItemClass*) klass;
parent_class = g_type_class_peek_parent (klass);
object_class->destroy = gtk_radio_menu_item_destroy;
menu_item_class->activate = gtk_radio_menu_item_activate;
-
- check_menu_item_class->draw_indicator = gtk_radio_menu_item_draw_indicator;
}
static void
gtk_radio_menu_item_init (GtkRadioMenuItem *radio_menu_item)
{
radio_menu_item->group = g_slist_prepend (NULL, radio_menu_item);
+ gtk_check_menu_item_set_draw_as_radio (GTK_CHECK_MENU_ITEM (radio_menu_item), TRUE);
}
static void
@@ -294,77 +289,6 @@ gtk_radio_menu_item_activate (GtkMenuItem *menu_item)
if (toggled)
gtk_check_menu_item_toggled (check_menu_item);
- gtk_widget_queue_draw (GTK_WIDGET (radio_menu_item));
-}
-
-static void
-gtk_radio_menu_item_draw_indicator (GtkCheckMenuItem *check_menu_item,
- GdkRectangle *area)
-{
- GtkWidget *widget;
- GtkStateType state_type;
- GtkShadowType shadow_type;
- gint width, height;
- gint x, y;
- gint offset;
-
- g_return_if_fail (GTK_IS_RADIO_MENU_ITEM (check_menu_item));
-
- if (GTK_WIDGET_DRAWABLE (check_menu_item))
- {
- guint horizontal_padding;
- guint toggle_spacing;
- guint toggle_size;
-
- widget = GTK_WIDGET (check_menu_item);
-
- gtk_widget_style_get (GTK_WIDGET (check_menu_item),
- "toggle_spacing", &toggle_spacing,
- "horizontal_padding", &horizontal_padding,
- NULL);
-
- width = 8;
- height = 8;
- toggle_size = GTK_MENU_ITEM (check_menu_item)->toggle_size;
- offset = GTK_CONTAINER (check_menu_item)->border_width +
- widget->style->xthickness + 2;
- if (gtk_widget_get_direction (widget) == GTK_TEXT_DIR_LTR)
- {
- x = widget->allocation.x + offset + horizontal_padding +
- (toggle_size - toggle_spacing - width) / 2;
- }
- else
- {
- x = widget->allocation.x + widget->allocation.width -
- offset - horizontal_padding - toggle_size + toggle_spacing +
- (toggle_size - toggle_spacing - width) / 2;
- }
-
- y = widget->allocation.y + (widget->allocation.height - height) / 2;
-
- if (check_menu_item->active ||
- check_menu_item->always_show_toggle ||
- (GTK_WIDGET_STATE (check_menu_item) == GTK_STATE_PRELIGHT))
- {
- state_type = GTK_WIDGET_STATE (widget);
- if (check_menu_item->active ||
- !check_menu_item->always_show_toggle)
- shadow_type = GTK_SHADOW_IN;
- else
- shadow_type = GTK_SHADOW_OUT;
-
- if (check_menu_item->inconsistent)
- shadow_type = GTK_SHADOW_ETCHED_IN;
-
- if (!GTK_WIDGET_IS_SENSITIVE (widget))
- state_type = GTK_STATE_INSENSITIVE;
-
- gtk_paint_option (widget->style, widget->window,
- state_type, shadow_type,
- area, widget, "option",
- x, y, width, height);
- }
- }
+ gtk_widget_queue_draw (GTK_WIDGET (radio_menu_item));
}
-