summaryrefslogtreecommitdiff
path: root/gtk/gtkcheckmenuitem.c
diff options
context:
space:
mode:
authorMatthias Clasen <maclas@gmx.de>2004-02-21 23:25:29 +0000
committerMatthias Clasen <matthiasc@src.gnome.org>2004-02-21 23:25:29 +0000
commitb1f74e779d183ce1d913389f6f3c91f5d48070b6 (patch)
tree86d469c69cc4c16b4e7c1f09ff65196108ceec5f /gtk/gtkcheckmenuitem.c
parent52c5c8182df9994aca395dff9e95e47bee0e1283 (diff)
downloadgtk+-b1f74e779d183ce1d913389f6f3c91f5d48070b6.tar.gz
Bug 112647 (Bill Haneman, patch by Narayana Pattipati):
Sun Feb 22 00:23:40 2004 Matthias Clasen <maclas@gmx.de> Bug 112647 (Bill Haneman, patch by Narayana Pattipati): * gtk/gtkcheckmenuitem.c: Introduce a new style property indicator_size and use it instead of the hardcoded value. * gtk/gtkmenu.c (gtk_menu_size_request): Make sure each menu item gets enough vertical space for the label and the indicator.
Diffstat (limited to 'gtk/gtkcheckmenuitem.c')
-rw-r--r--gtk/gtkcheckmenuitem.c34
1 files changed, 21 insertions, 13 deletions
diff --git a/gtk/gtkcheckmenuitem.c b/gtk/gtkcheckmenuitem.c
index 1bcfd71aa0..e20a2ed157 100644
--- a/gtk/gtkcheckmenuitem.c
+++ b/gtk/gtkcheckmenuitem.c
@@ -29,8 +29,6 @@
#include "gtkintl.h"
#include "gtkmarshalers.h"
-#define CHECK_TOGGLE_SIZE 12
-
enum {
TOGGLED,
LAST_SIGNAL
@@ -136,6 +134,16 @@ gtk_check_menu_item_class_init (GtkCheckMenuItemClass *klass)
FALSE,
G_PARAM_READWRITE));
+ gtk_widget_class_install_style_property (widget_class,
+ g_param_spec_int ("indicator_size",
+ P_("Indicator Size")
+,
+ P_("Size of check or radio indicator"),
+ 0,
+ G_MAXINT,
+ 12,
+ G_PARAM_READABLE));
+
widget_class->expose_event = gtk_check_menu_item_expose;
menu_item_class->activate = gtk_check_menu_item_activate;
@@ -241,14 +249,16 @@ gtk_check_menu_item_toggle_size_request (GtkMenuItem *menu_item,
gint *requisition)
{
guint toggle_spacing;
+ guint indicator_size;
g_return_if_fail (GTK_IS_CHECK_MENU_ITEM (menu_item));
gtk_widget_style_get (GTK_WIDGET (menu_item),
"toggle_spacing", &toggle_spacing,
+ "indicator_size", &indicator_size,
NULL);
-
- *requisition = CHECK_TOGGLE_SIZE + toggle_spacing;
+
+ *requisition = indicator_size + toggle_spacing;
}
void
@@ -406,7 +416,6 @@ gtk_real_check_menu_item_draw_indicator (GtkCheckMenuItem *check_menu_item,
GtkWidget *widget;
GtkStateType state_type;
GtkShadowType shadow_type;
- gint width, height;
gint x, y;
if (GTK_WIDGET_DRAWABLE (check_menu_item))
@@ -415,17 +424,16 @@ gtk_real_check_menu_item_draw_indicator (GtkCheckMenuItem *check_menu_item,
guint toggle_size;
guint toggle_spacing;
guint horizontal_padding;
+ guint indicator_size;
widget = GTK_WIDGET (check_menu_item);
gtk_widget_style_get (GTK_WIDGET (check_menu_item),
"toggle_spacing", &toggle_spacing,
"horizontal_padding", &horizontal_padding,
+ "indicator_size", &indicator_size,
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;
@@ -435,16 +443,16 @@ gtk_real_check_menu_item_draw_indicator (GtkCheckMenuItem *check_menu_item,
if (gtk_widget_get_direction (widget) == GTK_TEXT_DIR_LTR)
{
x = widget->allocation.x + offset + horizontal_padding +
- (toggle_size - toggle_spacing - width) / 2;
+ (toggle_size - toggle_spacing - indicator_size) / 2;
}
else
{
x = widget->allocation.x + widget->allocation.width -
offset - horizontal_padding - toggle_size + toggle_spacing +
- (toggle_size - toggle_spacing - width) / 2;
+ (toggle_size - toggle_spacing - indicator_size) / 2;
}
- y = widget->allocation.y + (widget->allocation.height - height) / 2;
+ y = widget->allocation.y + (widget->allocation.height - indicator_size) / 2;
if (check_menu_item->active ||
check_menu_item->always_show_toggle ||
@@ -467,14 +475,14 @@ gtk_real_check_menu_item_draw_indicator (GtkCheckMenuItem *check_menu_item,
gtk_paint_option (widget->style, widget->window,
state_type, shadow_type,
area, widget, "option",
- x, y, width, height);
+ x, y, indicator_size, indicator_size);
}
else
{
gtk_paint_check (widget->style, widget->window,
state_type, shadow_type,
area, widget, "check",
- x, y, width, height);
+ x, y, indicator_size, indicator_size);
}
}
}