]> Pileus Git - ~andy/gtk/blobdiff - gtk/gtkitem.c
GtkWindow: Add gtk_window_has_group()
[~andy/gtk] / gtk / gtkitem.c
index 2d3a73a63e51f3e779c7df175a992eaaad9b9da4..b21c1e5fc1d09237fa9b3ba2aff657b997a83c69 100644 (file)
  * GTK+ at ftp://ftp.gtk.org/pub/gtk/. 
  */
 
+#include "config.h"
 #include "gtkitem.h"
-#include "gtksignal.h"
+#include "gtkmarshalers.h"
+#include "gtkintl.h"
+#include "gtkalias.h"
 
 
 enum {
@@ -36,10 +39,6 @@ enum {
 };
 
 
-static void gtk_item_class_init (GtkItemClass     *klass);
-static void gtk_item_init       (GtkItem          *item);
-static void gtk_item_map        (GtkWidget        *widget);
-static void gtk_item_unmap      (GtkWidget        *widget);
 static void gtk_item_realize    (GtkWidget        *widget);
 static gint gtk_item_enter      (GtkWidget        *widget,
                                 GdkEventCrossing *event);
@@ -49,68 +48,17 @@ static gint gtk_item_leave      (GtkWidget        *widget,
 
 static guint item_signals[LAST_SIGNAL] = { 0 };
 
-
-GtkType
-gtk_item_get_type (void)
-{
-  static GtkType item_type = 0;
-
-  if (!item_type)
-    {
-      static const GtkTypeInfo item_info =
-      {
-       "GtkItem",
-       sizeof (GtkItem),
-       sizeof (GtkItemClass),
-       (GtkClassInitFunc) gtk_item_class_init,
-       (GtkObjectInitFunc) gtk_item_init,
-       /* reserved_1 */ NULL,
-        /* reserved_2 */ NULL,
-        (GtkClassInitFunc) NULL,
-      };
-
-      item_type = gtk_type_unique (GTK_TYPE_BIN, &item_info);
-    }
-
-  return item_type;
-}
+G_DEFINE_ABSTRACT_TYPE (GtkItem, gtk_item, GTK_TYPE_BIN)
 
 static void
 gtk_item_class_init (GtkItemClass *class)
 {
-  GtkObjectClass *object_class;
+  GObjectClass *object_class;
   GtkWidgetClass *widget_class;
 
-  object_class = (GtkObjectClass*) class;
+  object_class = (GObjectClass*) class;
   widget_class = (GtkWidgetClass*) class;
 
-  item_signals[SELECT] =
-    gtk_signal_new ("select",
-                    GTK_RUN_FIRST,
-                    GTK_CLASS_TYPE (object_class),
-                    GTK_SIGNAL_OFFSET (GtkItemClass, select),
-                    gtk_marshal_NONE__NONE,
-                   GTK_TYPE_NONE, 0);
-  item_signals[DESELECT] =
-    gtk_signal_new ("deselect",
-                    GTK_RUN_FIRST,
-                    GTK_CLASS_TYPE (object_class),
-                    GTK_SIGNAL_OFFSET (GtkItemClass, deselect),
-                    gtk_marshal_NONE__NONE,
-                   GTK_TYPE_NONE, 0);
-  item_signals[TOGGLE] =
-    gtk_signal_new ("toggle",
-                    GTK_RUN_FIRST,
-                    GTK_CLASS_TYPE (object_class),
-                    GTK_SIGNAL_OFFSET (GtkItemClass, toggle),
-                    gtk_marshal_NONE__NONE,
-                   GTK_TYPE_NONE, 0);
-
-  gtk_object_class_add_signals (object_class, item_signals, LAST_SIGNAL);
-
-  widget_class->activate_signal = item_signals[TOGGLE];
-  widget_class->map = gtk_item_map;
-  widget_class->unmap = gtk_item_unmap;
   widget_class->realize = gtk_item_realize;
   widget_class->enter_notify_event = gtk_item_enter;
   widget_class->leave_notify_event = gtk_item_leave;
@@ -118,63 +66,58 @@ gtk_item_class_init (GtkItemClass *class)
   class->select = NULL;
   class->deselect = NULL;
   class->toggle = NULL;
+
+  item_signals[SELECT] =
+    g_signal_new (I_("select"),
+                 G_OBJECT_CLASS_TYPE (object_class),
+                 G_SIGNAL_RUN_FIRST,
+                 G_STRUCT_OFFSET (GtkItemClass, select),
+                 NULL, NULL,
+                 _gtk_marshal_VOID__VOID,
+                 G_TYPE_NONE, 0);
+  item_signals[DESELECT] =
+    g_signal_new (I_("deselect"),
+                 G_OBJECT_CLASS_TYPE (object_class),
+                 G_SIGNAL_RUN_FIRST,
+                 G_STRUCT_OFFSET (GtkItemClass, deselect),
+                 NULL, NULL,
+                 _gtk_marshal_VOID__VOID,
+                 G_TYPE_NONE, 0);
+  item_signals[TOGGLE] =
+    g_signal_new (I_("toggle"),
+                 G_OBJECT_CLASS_TYPE (object_class),
+                 G_SIGNAL_RUN_FIRST,
+                 G_STRUCT_OFFSET (GtkItemClass, toggle),
+                 NULL, NULL,
+                 _gtk_marshal_VOID__VOID,
+                 G_TYPE_NONE, 0);
+  widget_class->activate_signal = item_signals[TOGGLE];
 }
 
 static void
 gtk_item_init (GtkItem *item)
 {
-  GTK_WIDGET_UNSET_FLAGS (item, GTK_NO_WINDOW);
+  gtk_widget_set_has_window (GTK_WIDGET (item), TRUE);
 }
 
 void
 gtk_item_select (GtkItem *item)
 {
-  gtk_signal_emit (GTK_OBJECT (item), item_signals[SELECT]);
+  g_signal_emit (item, item_signals[SELECT], 0);
 }
 
 void
 gtk_item_deselect (GtkItem *item)
 {
-  gtk_signal_emit (GTK_OBJECT (item), item_signals[DESELECT]);
+  g_signal_emit (item, item_signals[DESELECT], 0);
 }
 
 void
 gtk_item_toggle (GtkItem *item)
 {
-  gtk_signal_emit (GTK_OBJECT (item), item_signals[TOGGLE]);
-}
-
-
-static void
-gtk_item_map (GtkWidget *widget)
-{
-  GtkBin *bin;
-
-  g_return_if_fail (widget != NULL);
-  g_return_if_fail (GTK_IS_ITEM (widget));
-
-  GTK_WIDGET_SET_FLAGS (widget, GTK_MAPPED);
-
-  bin = GTK_BIN (widget);
-
-  if (bin->child &&
-      GTK_WIDGET_VISIBLE (bin->child) &&
-      !GTK_WIDGET_MAPPED (bin->child))
-    gtk_widget_map (bin->child);
-
-  gdk_window_show (widget->window);
+  g_signal_emit (item, item_signals[TOGGLE], 0);
 }
 
-static void
-gtk_item_unmap (GtkWidget *widget)
-{
-  g_return_if_fail (widget != NULL);
-  g_return_if_fail (GTK_IS_ITEM (widget));
-
-  GTK_WIDGET_UNSET_FLAGS (widget, GTK_MAPPED);
-
-  gdk_window_hide (widget->window);
-}
 
 static void
 gtk_item_realize (GtkWidget *widget)
@@ -182,10 +125,7 @@ gtk_item_realize (GtkWidget *widget)
   GdkWindowAttr attributes;
   gint attributes_mask;
 
-  g_return_if_fail (widget != NULL);
-  g_return_if_fail (GTK_IS_ITEM (widget));
-
-  GTK_WIDGET_SET_FLAGS (widget, GTK_REALIZED);
+  gtk_widget_set_realized (widget, TRUE);
 
   attributes.x = widget->allocation.x;
   attributes.y = widget->allocation.y;
@@ -209,14 +149,13 @@ gtk_item_realize (GtkWidget *widget)
 
   widget->style = gtk_style_attach (widget->style, widget->window);
   gtk_style_set_background (widget->style, widget->window, GTK_STATE_NORMAL);
-   gdk_window_set_back_pixmap (widget->window, NULL, TRUE);
+  gdk_window_set_back_pixmap (widget->window, NULL, TRUE);
 }
 
 static gint
 gtk_item_enter (GtkWidget        *widget,
                GdkEventCrossing *event)
 {
-  g_return_val_if_fail (widget != NULL, FALSE);
   g_return_val_if_fail (GTK_IS_ITEM (widget), FALSE);
   g_return_val_if_fail (event != NULL, FALSE);
 
@@ -227,10 +166,11 @@ static gint
 gtk_item_leave (GtkWidget        *widget,
                GdkEventCrossing *event)
 {
-  g_return_val_if_fail (widget != NULL, FALSE);
   g_return_val_if_fail (GTK_IS_ITEM (widget), FALSE);
   g_return_val_if_fail (event != NULL, FALSE);
 
   return gtk_widget_event (widget->parent, (GdkEvent*) event);
 }
 
+#define __GTK_ITEM_C__
+#include "gtkaliasdef.c"