* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the Free
- * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
*/
+
+/*
+ * Modified by the GTK+ Team and others 1997-1999. See the AUTHORS
+ * file for a list of people on the GTK+ Team. See the ChangeLog
+ * files for a list of changes. These files are distributed with
+ * GTK+ at ftp://ftp.gtk.org/pub/gtk/.
+ */
+
#include "gtkcheckmenuitem.h"
-#include "gtklabel.h"
+#include "gtkaccellabel.h"
#include "gtksignal.h"
static guint check_menu_item_signals[LAST_SIGNAL] = { 0 };
-guint
-gtk_check_menu_item_get_type ()
+GtkType
+gtk_check_menu_item_get_type (void)
{
- static guint check_menu_item_type = 0;
+ static GtkType check_menu_item_type = 0;
if (!check_menu_item_type)
{
- GtkTypeInfo check_menu_item_info =
+ static const GtkTypeInfo check_menu_item_info =
{
"GtkCheckMenuItem",
sizeof (GtkCheckMenuItem),
sizeof (GtkCheckMenuItemClass),
(GtkClassInitFunc) gtk_check_menu_item_class_init,
(GtkObjectInitFunc) gtk_check_menu_item_init,
- (GtkArgSetFunc) NULL,
- (GtkArgGetFunc) NULL,
+ /* reserved_1 */ NULL,
+ /* reserved_2 */ NULL,
+ (GtkClassInitFunc) NULL,
};
- check_menu_item_type = gtk_type_unique (gtk_menu_item_get_type (), &check_menu_item_info);
+ check_menu_item_type = gtk_type_unique (GTK_TYPE_MENU_ITEM, &check_menu_item_info);
}
return check_menu_item_type;
}
+static void
+gtk_check_menu_item_class_init (GtkCheckMenuItemClass *klass)
+{
+ GtkObjectClass *object_class;
+ GtkWidgetClass *widget_class;
+ GtkMenuItemClass *menu_item_class;
+
+ object_class = (GtkObjectClass*) klass;
+ widget_class = (GtkWidgetClass*) klass;
+ menu_item_class = (GtkMenuItemClass*) klass;
+
+ parent_class = gtk_type_class (GTK_TYPE_MENU_ITEM);
+
+ widget_class->draw = gtk_check_menu_item_draw;
+ widget_class->expose_event = gtk_check_menu_item_expose;
+
+ menu_item_class->activate = gtk_check_menu_item_activate;
+ menu_item_class->toggle_size = 12;
+ menu_item_class->hide_on_activate = FALSE;
+
+ klass->toggled = NULL;
+ klass->draw_indicator = gtk_real_check_menu_item_draw_indicator;
+
+ check_menu_item_signals[TOGGLED] =
+ gtk_signal_new ("toggled",
+ GTK_RUN_FIRST,
+ object_class->type,
+ GTK_SIGNAL_OFFSET (GtkCheckMenuItemClass, toggled),
+ gtk_marshal_NONE__NONE,
+ GTK_TYPE_NONE, 0);
+ gtk_object_class_add_signals (object_class, check_menu_item_signals, LAST_SIGNAL);
+}
+
GtkWidget*
-gtk_check_menu_item_new ()
+gtk_check_menu_item_new (void)
{
- return GTK_WIDGET (gtk_type_new (gtk_check_menu_item_get_type ()));
+ return GTK_WIDGET (gtk_type_new (GTK_TYPE_CHECK_MENU_ITEM));
}
GtkWidget*
gtk_check_menu_item_new_with_label (const gchar *label)
{
GtkWidget *check_menu_item;
- GtkWidget *label_widget;
+ GtkWidget *accel_label;
check_menu_item = gtk_check_menu_item_new ();
- label_widget = gtk_label_new (label);
- gtk_misc_set_alignment (GTK_MISC (label_widget), 0.0, 0.5);
+ accel_label = gtk_accel_label_new (label);
+ gtk_misc_set_alignment (GTK_MISC (accel_label), 0.0, 0.5);
- gtk_container_add (GTK_CONTAINER (check_menu_item), label_widget);
- gtk_widget_show (label_widget);
+ gtk_container_add (GTK_CONTAINER (check_menu_item), accel_label);
+ gtk_accel_label_set_accel_widget (GTK_ACCEL_LABEL (accel_label), check_menu_item);
+ gtk_widget_show (accel_label);
return check_menu_item;
}
void
-gtk_check_menu_item_set_state (GtkCheckMenuItem *check_menu_item,
- gint state)
+gtk_check_menu_item_set_active (GtkCheckMenuItem *check_menu_item,
+ gboolean is_active)
{
g_return_if_fail (check_menu_item != NULL);
g_return_if_fail (GTK_IS_CHECK_MENU_ITEM (check_menu_item));
- if (check_menu_item->active != state)
+ is_active = is_active != 0;
+
+ if (check_menu_item->active != is_active)
gtk_menu_item_activate (GTK_MENU_ITEM (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)
-{
- GtkObjectClass *object_class;
- GtkWidgetClass *widget_class;
- GtkMenuItemClass *menu_item_class;
-
- object_class = (GtkObjectClass*) klass;
- widget_class = (GtkWidgetClass*) klass;
- menu_item_class = (GtkMenuItemClass*) klass;
-
- parent_class = gtk_type_class (gtk_menu_item_get_type ());
-
- check_menu_item_signals[TOGGLED] =
- gtk_signal_new ("toggled",
- GTK_RUN_FIRST,
- object_class->type,
- GTK_SIGNAL_OFFSET (GtkCheckMenuItemClass, toggled),
- gtk_signal_default_marshaller,
- GTK_TYPE_NONE, 0);
-
- gtk_object_class_add_signals (object_class, check_menu_item_signals, LAST_SIGNAL);
-
- widget_class->draw = gtk_check_menu_item_draw;
- widget_class->expose_event = gtk_check_menu_item_expose;
-
- menu_item_class->activate = gtk_check_menu_item_activate;
- menu_item_class->toggle_size = 12;
-
- klass->toggled = NULL;
- klass->draw_indicator = gtk_real_check_menu_item_draw_indicator;
-}
-
static void
gtk_check_menu_item_init (GtkCheckMenuItem *check_menu_item)
{
widget->style->klass->xthickness + 2);
y = (widget->allocation.height - height) / 2;
- 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))
shadow_type = GTK_SHADOW_OUT;
}
- gdk_draw_rectangle (widget->window,
- widget->style->bg_gc[state_type],
- TRUE, x, y, width, height);
- gtk_draw_shadow (widget->style, widget->window,
+ gtk_paint_check (widget->style, widget->window,
state_type, shadow_type,
+ area, widget, "check",
x, y, width, height);
}
}