summaryrefslogtreecommitdiff
path: root/gtk/gtkcheckmenuitem.c
diff options
context:
space:
mode:
authorTim Janik <timj@src.gnome.org>1997-12-07 02:34:38 +0000
committerTim Janik <timj@src.gnome.org>1997-12-07 02:34:38 +0000
commit37f6b421f2a9860c353d06c0aaa303edea345dfe (patch)
treef08557eb2ddb0761990e0f82462eb2a88b776a3e /gtk/gtkcheckmenuitem.c
parent7e4ee8cb4f6cdba9adcd4f44de5e9a86563e1c28 (diff)
downloadgtk+-37f6b421f2a9860c353d06c0aaa303edea345dfe.tar.gz
applied jamesa-971010-0 for stability. applied jamesa-971010-2 for a small
* gtkfilesel.c: applied jamesa-971010-0 for stability. * gtkrc.c: applied jamesa-971010-2 for a small optimization. * gtkcheckmenuitem.h: * gtkcheckmenuitem.c: * gtkradiomenuitem.c: * testgtk.c: applied johannes-971113-0 which adds gtk_check_menu_item_set_show_toggle() to change the way check menu items and radio menu items look. -timj
Diffstat (limited to 'gtk/gtkcheckmenuitem.c')
-rw-r--r--gtk/gtkcheckmenuitem.c33
1 files changed, 27 insertions, 6 deletions
diff --git a/gtk/gtkcheckmenuitem.c b/gtk/gtkcheckmenuitem.c
index a36dfa75a0..bf5aa04c17 100644
--- a/gtk/gtkcheckmenuitem.c
+++ b/gtk/gtkcheckmenuitem.c
@@ -103,12 +103,21 @@ gtk_check_menu_item_set_state (GtkCheckMenuItem *check_menu_item,
}
void
+gtk_check_menu_item_set_show_toggle (GtkCheckMenuItem *menu_item,
+ gboolean always)
+{
+ g_return_if_fail (menu_item != NULL);
+ g_return_if_fail (GTK_IS_CHECK_MENU_ITEM (menu_item));
+
+ menu_item->always_show_toggle = always != FALSE;
+}
+
+void
gtk_check_menu_item_toggled (GtkCheckMenuItem *check_menu_item)
{
gtk_signal_emit (GTK_OBJECT (check_menu_item), check_menu_item_signals[TOGGLED]);
}
-
static void
gtk_check_menu_item_class_init (GtkCheckMenuItemClass *klass)
{
@@ -146,6 +155,7 @@ static void
gtk_check_menu_item_init (GtkCheckMenuItem *check_menu_item)
{
check_menu_item->active = FALSE;
+ check_menu_item->always_show_toggle = FALSE;
}
static void
@@ -231,14 +241,25 @@ gtk_real_check_menu_item_draw_indicator (GtkCheckMenuItem *check_menu_item,
gdk_window_clear_area (widget->window, x, y, width, height);
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);
-
- shadow_type = GTK_SHADOW_IN;
- if (check_menu_item->active && (state_type == GTK_STATE_PRELIGHT))
- shadow_type = GTK_SHADOW_OUT;
-
+
+ if (check_menu_item->always_show_toggle)
+ {
+ shadow_type = GTK_SHADOW_OUT;
+ if (check_menu_item->active)
+ shadow_type = GTK_SHADOW_IN;
+ }
+ else
+ {
+ shadow_type = GTK_SHADOW_IN;
+ if (check_menu_item->active &&
+ (state_type == GTK_STATE_PRELIGHT))
+ shadow_type = GTK_SHADOW_OUT;
+ }
+
gdk_draw_rectangle (widget->window,
widget->style->bg_gc[state_type],
TRUE, x, y, width, height);