]> Pileus Git - ~andy/gtk/commitdiff
main part for GtkArgSetFunc/GtkArgGetFunc implementation.
authorTim Janik <timj@src.gnome.org>
Fri, 16 Jan 1998 00:49:51 +0000 (00:49 +0000)
committerTim Janik <timj@src.gnome.org>
Fri, 16 Jan 1998 00:49:51 +0000 (00:49 +0000)
-timj

76 files changed:
gtk/gtkadjustment.c
gtk/gtkalignment.c
gtk/gtkarrow.c
gtk/gtkaspectframe.c
gtk/gtkbbox.c
gtk/gtkbin.c
gtk/gtkbox.c
gtk/gtkbutton.c
gtk/gtkcheckbutton.c
gtk/gtkcheckmenuitem.c
gtk/gtkclist.c
gtk/gtkcombobox.c
gtk/gtkcontainer.c
gtk/gtkcurve.c
gtk/gtkdata.c
gtk/gtkdialog.c
gtk/gtkdrawingarea.c
gtk/gtkentry.c
gtk/gtkeventbox.c
gtk/gtkfilesel.c
gtk/gtkfixed.c
gtk/gtkframe.c
gtk/gtkgamma.c
gtk/gtkhandlebox.c
gtk/gtkhbbox.c
gtk/gtkhbox.c
gtk/gtkhpaned.c
gtk/gtkhruler.c
gtk/gtkhscale.c
gtk/gtkhscrollbar.c
gtk/gtkhseparator.c
gtk/gtkimage.c
gtk/gtkinputdialog.c
gtk/gtkitem.c
gtk/gtklabel.c
gtk/gtklist.c
gtk/gtklistitem.c
gtk/gtkmenu.c
gtk/gtkmenubar.c
gtk/gtkmenuitem.c
gtk/gtkmenushell.c
gtk/gtkmisc.c
gtk/gtknotebook.c
gtk/gtkobject.c
gtk/gtkobject.h
gtk/gtkoptionmenu.c
gtk/gtkpaned.c
gtk/gtkpixmap.c
gtk/gtkpreview.c
gtk/gtkprogressbar.c
gtk/gtkradiobutton.c
gtk/gtkradiomenuitem.c
gtk/gtkrange.c
gtk/gtkruler.c
gtk/gtkscale.c
gtk/gtkscrollbar.c
gtk/gtkscrolledwindow.c
gtk/gtkseparator.c
gtk/gtktable.c
gtk/gtktext.c
gtk/gtktogglebutton.c
gtk/gtktoolbar.c
gtk/gtktree.c
gtk/gtktreeitem.c
gtk/gtktypeutils.c
gtk/gtktypeutils.h
gtk/gtkvbbox.c
gtk/gtkvbox.c
gtk/gtkviewport.c
gtk/gtkvpaned.c
gtk/gtkvruler.c
gtk/gtkvscale.c
gtk/gtkvscrollbar.c
gtk/gtkvseparator.c
gtk/gtkwidget.c
gtk/gtkwindow.c

index ab6e63d2160365a2c519ea43ab980ff2266cb15a..47d422bc5d815eb305197e8ff71947fa0a8842ec 100644 (file)
@@ -47,7 +47,8 @@ gtk_adjustment_get_type ()
        sizeof (GtkAdjustmentClass),
        (GtkClassInitFunc) gtk_adjustment_class_init,
        (GtkObjectInitFunc) gtk_adjustment_init,
-       (GtkArgFunc) NULL,
+       (GtkArgSetFunc) NULL,
+       (GtkArgGetFunc) NULL,
       };
 
       adjustment_type = gtk_type_unique (gtk_data_get_type (), &adjustment_info);
index b562cff77084ac208503d2b9df55ab1530bb7511..2ea50ed587104b301d7a63ad37e7c62651bca5dd 100644 (file)
@@ -40,7 +40,8 @@ gtk_alignment_get_type ()
        sizeof (GtkAlignmentClass),
        (GtkClassInitFunc) gtk_alignment_class_init,
        (GtkObjectInitFunc) gtk_alignment_init,
-       (GtkArgFunc) NULL,
+       (GtkArgSetFunc) NULL,
+        (GtkArgGetFunc) NULL,
       };
 
       alignment_type = gtk_type_unique (gtk_bin_get_type (), &alignment_info);
index b8bc2143eda1c4d3f59238ebf154cf516c3c32a1..5fb53f5e769fd6357c99c8c37a183f976b469d73 100644 (file)
@@ -41,7 +41,8 @@ gtk_arrow_get_type ()
        sizeof (GtkArrowClass),
        (GtkClassInitFunc) gtk_arrow_class_init,
        (GtkObjectInitFunc) gtk_arrow_init,
-       (GtkArgFunc) NULL,
+       (GtkArgSetFunc) NULL,
+        (GtkArgGetFunc) NULL,
       };
 
       arrow_type = gtk_type_unique (gtk_misc_get_type (), &arrow_info);
index 870c0b2f59d4eec9938ec7ba8863b5b8d802d8c9..16d60b0ec513d842d8a5bec4eeeabb58e06848da 100644 (file)
@@ -50,7 +50,8 @@ gtk_aspect_frame_get_type ()
        sizeof (GtkAspectFrameClass),
        (GtkClassInitFunc) gtk_aspect_frame_class_init,
        (GtkObjectInitFunc) gtk_aspect_frame_init,
-       (GtkArgFunc) NULL,
+        (GtkArgSetFunc) NULL,
+        (GtkArgGetFunc) NULL,
       };
 
       aspect_frame_type = gtk_type_unique (gtk_frame_get_type (), &aspect_frame_info);
index 818493f9a2ca2cdf408c069807d0de0e7963cb5b..ed42cc129d369fe5f8d2d1b33f823deffb50b145 100644 (file)
@@ -42,7 +42,8 @@ gtk_button_box_get_type ()
        sizeof (GtkButtonBoxClass),
        (GtkClassInitFunc) gtk_button_box_class_init,
        (GtkObjectInitFunc) gtk_button_box_init,
-       (GtkArgFunc) NULL,
+       (GtkArgSetFunc) NULL,
+        (GtkArgGetFunc) NULL,
       };
 
       button_box_type = gtk_type_unique (gtk_box_get_type (), &button_box_info);
index 4cb7efcc193235ed4a0776a5a4e53f51bd4d765e..3e60b5976ac99145da91e9db0faa1771f46a555d 100644 (file)
@@ -53,7 +53,8 @@ gtk_bin_get_type ()
        sizeof (GtkBinClass),
        (GtkClassInitFunc) gtk_bin_class_init,
        (GtkObjectInitFunc) gtk_bin_init,
-       (GtkArgFunc) NULL,
+       (GtkArgSetFunc) NULL,
+        (GtkArgGetFunc) NULL,
       };
 
       bin_type = gtk_type_unique (gtk_container_get_type (), &bin_info);
index dfb2fed087c9b52a3a965e94cc5c9c692d0f6a10..cda636429d048eb6bb1e268f8b9c6acc318eb218 100644 (file)
@@ -53,7 +53,8 @@ gtk_box_get_type ()
        sizeof (GtkBoxClass),
        (GtkClassInitFunc) gtk_box_class_init,
        (GtkObjectInitFunc) gtk_box_init,
-       (GtkArgFunc) NULL,
+       (GtkArgSetFunc) NULL,
+        (GtkArgGetFunc) NULL,
       };
 
       box_type = gtk_type_unique (gtk_container_get_type (), &box_info);
index 39fc468b74e7fea91c67180588a074b624b4f577..f85ddf0fbb460cd9bc4466b2e0504fac32543d4e 100644 (file)
@@ -36,12 +36,18 @@ enum {
   LEAVE,
   LAST_SIGNAL
 };
+enum {
+  ARG_0,
+  ARG_LABEL
+};
+  
 
 
 static void gtk_button_class_init     (GtkButtonClass   *klass);
 static void gtk_button_init           (GtkButton        *button);
-static void gtk_button_arg            (GtkButton        *button,
-                                      GtkArg           *arg);
+static void gtk_button_set_arg        (GtkButton        *button,
+                                      GtkArg           *arg,
+                                      guint             arg_id);
 static void gtk_button_destroy        (GtkObject        *object);
 static void gtk_button_map            (GtkWidget        *widget);
 static void gtk_button_unmap          (GtkWidget        *widget);
@@ -101,7 +107,8 @@ gtk_button_get_type ()
        sizeof (GtkButtonClass),
        (GtkClassInitFunc) gtk_button_class_init,
        (GtkObjectInitFunc) gtk_button_init,
-       (GtkArgFunc) gtk_button_arg,
+       (GtkArgSetFunc) gtk_button_set_arg,
+       (GtkArgGetFunc) NULL,
       };
 
       button_type = gtk_type_unique (gtk_container_get_type (), &button_info);
@@ -123,7 +130,7 @@ gtk_button_class_init (GtkButtonClass *klass)
 
   parent_class = gtk_type_class (gtk_container_get_type ());
 
-  gtk_object_add_arg_type ("GtkButton::label", GTK_TYPE_STRING);
+  gtk_object_add_arg_type ("GtkButton::label", GTK_TYPE_STRING, ARG_LABEL);
 
   button_signals[PRESSED] =
     gtk_signal_new ("pressed",
@@ -204,23 +211,28 @@ gtk_button_init (GtkButton *button)
 }
 
 static void
-gtk_button_arg (GtkButton *button,
-               GtkArg    *arg)
+gtk_button_set_arg (GtkButton *button,
+                   GtkArg    *arg,
+                   guint      arg_id)
 {
-  if (strcmp (arg->name, "label") == 0)
-    {
-      GtkWidget *label;
+  GtkWidget *label;
 
+  switch (arg_id)
+    {
+    case ARG_LABEL:
       gtk_container_disable_resize (GTK_CONTAINER (button));
-
+      
       if (button->child)
        gtk_widget_destroy (button->child);
-
+      
       label = gtk_label_new (GTK_VALUE_STRING(*arg));
       gtk_widget_show (label);
-
+      
       gtk_container_add (GTK_CONTAINER (button), label);
       gtk_container_enable_resize (GTK_CONTAINER (button));
+      break;
+    default:
+      g_assert_not_reached ();
     }
 }
 
index d7f72ce1c22553c5cbd22af1bf633199f96c32c9..9266120179851aefa6bcc2888d78344a087919c2 100644 (file)
@@ -59,7 +59,8 @@ gtk_check_button_get_type ()
        sizeof (GtkCheckButtonClass),
        (GtkClassInitFunc) gtk_check_button_class_init,
        (GtkObjectInitFunc) gtk_check_button_init,
-       (GtkArgFunc) NULL,
+       (GtkArgSetFunc) NULL,
+        (GtkArgGetFunc) NULL,
       };
 
       check_button_type = gtk_type_unique (gtk_toggle_button_get_type (), &check_button_info);
index bf5aa04c1734eb36259725063f7c4b8a157e6448..5319884d8678016a2f8c98bb4cf1f616300e9625 100644 (file)
@@ -60,7 +60,8 @@ gtk_check_menu_item_get_type ()
         sizeof (GtkCheckMenuItemClass),
         (GtkClassInitFunc) gtk_check_menu_item_class_init,
         (GtkObjectInitFunc) gtk_check_menu_item_init,
-        (GtkArgFunc) NULL,
+        (GtkArgSetFunc) NULL,
+        (GtkArgGetFunc) NULL,
       };
 
       check_menu_item_type = gtk_type_unique (gtk_menu_item_get_type (), &check_menu_item_info);
index 8bfe13f6f8765baeb9f9a835dde8bec9c88430dc..3b6595ea3fdf73d9804794413ee384bf3e62a06e 100644 (file)
@@ -252,7 +252,8 @@ gtk_clist_get_type ()
        sizeof (GtkCListClass),
        (GtkClassInitFunc) gtk_clist_class_init,
        (GtkObjectInitFunc) gtk_clist_init,
-       (GtkArgFunc) NULL,
+       (GtkArgSetFunc) NULL,
+        (GtkArgGetFunc) NULL,
       };
 
       clist_type = gtk_type_unique (gtk_container_get_type (), &clist_info);
index d7e34e179d51bbb752390fdf4016aec6c27d4e9c..35ec14f50b4a8bfc8ee129f696006a6e0b59de64 100644 (file)
@@ -82,7 +82,8 @@ gtk_combo_box_get_type ()
        sizeof (GtkComboBoxClass),
        (GtkClassInitFunc) gtk_combo_box_class_init,
        (GtkObjectInitFunc) gtk_combo_box_init,
-       (GtkArgFunc) NULL,
+       (GtkArgSetFunc) NULL,
+        (GtkArgGetFunc) NULL,
       };
 
       combo_box_type = gtk_type_unique (gtk_entry_get_type (), &combo_box_info);
index 0e6672289c8f638de3d133386f4cb17f220389ee..77bee5964d0e0a60120e4c6d3e0246c2669998ee 100644 (file)
@@ -28,6 +28,13 @@ enum {
   FOCUS,
   LAST_SIGNAL
 };
+enum {
+  ARG_0,
+  ARG_BORDER_WIDTH,
+  ARG_AUTO_RESIZE,
+  ARG_BLOCK_RESIZE,
+  ARG_CHILD
+};
 
 
 typedef void (*GtkContainerSignal1) (GtkObject *object,
@@ -64,8 +71,9 @@ static void gtk_container_marshal_signal_4 (GtkObject      *object,
 
 static void gtk_container_class_init        (GtkContainerClass *klass);
 static void gtk_container_init              (GtkContainer      *container);
-static void gtk_container_arg               (GtkContainer      *container,
-                                            GtkArg            *arg);
+static void gtk_container_set_arg           (GtkContainer      *container,
+                                            GtkArg            *arg,
+                                            guint              arg_id);
 static gint gtk_real_container_need_resize  (GtkContainer      *container);
 static gint gtk_real_container_focus        (GtkContainer      *container,
                                             GtkDirectionType   direction);
@@ -105,7 +113,8 @@ gtk_container_get_type ()
        sizeof (GtkContainerClass),
        (GtkClassInitFunc) gtk_container_class_init,
        (GtkObjectInitFunc) gtk_container_init,
-       (GtkArgFunc) gtk_container_arg,
+       (GtkArgSetFunc) gtk_container_set_arg,
+       (GtkArgGetFunc) NULL,
       };
 
       container_type = gtk_type_unique (gtk_widget_get_type (), &container_info);
@@ -123,10 +132,10 @@ gtk_container_class_init (GtkContainerClass *class)
   object_class = (GtkObjectClass*) class;
   widget_class = (GtkWidgetClass*) class;
 
-  gtk_object_add_arg_type ("GtkContainer::border_width", GTK_TYPE_LONG);
-  gtk_object_add_arg_type ("GtkContainer::auto_resize", GTK_TYPE_BOOL);
-  gtk_object_add_arg_type ("GtkContainer::block_resize", GTK_TYPE_BOOL);
-  gtk_object_add_arg_type ("GtkContainer::child", GTK_TYPE_WIDGET);
+  gtk_object_add_arg_type ("GtkContainer::border_width", GTK_TYPE_LONG, ARG_BORDER_WIDTH);
+  gtk_object_add_arg_type ("GtkContainer::auto_resize", GTK_TYPE_BOOL, ARG_AUTO_RESIZE);
+  gtk_object_add_arg_type ("GtkContainer::block_resize", GTK_TYPE_BOOL, ARG_BLOCK_RESIZE);
+  gtk_object_add_arg_type ("GtkContainer::child", GTK_TYPE_WIDGET, ARG_CHILD);
 
   container_signals[ADD] =
     gtk_signal_new ("add",
@@ -193,30 +202,32 @@ gtk_container_init (GtkContainer *container)
 }
 
 static void
-gtk_container_arg (GtkContainer *container,
-                  GtkArg       *arg)
+gtk_container_set_arg (GtkContainer *container,
+                      GtkArg       *arg,
+                      guint         arg_id)
 {
-  if (strcmp (arg->name, "border_width") == 0)
+  switch (arg_id)
     {
+    case ARG_BORDER_WIDTH:
       gtk_container_border_width (container, GTK_VALUE_LONG (*arg));
-    }
-  else if (strcmp (arg->name, "auto_resize") == 0)
-    {
+      break;
+    case ARG_AUTO_RESIZE:
       if (GTK_VALUE_BOOL (*arg))
        gtk_container_enable_resize (container);
       else
        gtk_container_disable_resize (container);
-    }
-  else if (strcmp (arg->name, "block_resize") == 0)
-    {
+      break;
+    case ARG_BLOCK_RESIZE:
       if (GTK_VALUE_BOOL (*arg))
        gtk_container_block_resize (container);
       else
        gtk_container_unblock_resize (container);
-    }
-  else if (strcmp (arg->name, "child") == 0)
-    {
+      break;
+    case ARG_CHILD:
       gtk_container_add (container, GTK_WIDGET (GTK_VALUE_OBJECT (*arg)));
+      break;
+    default:
+      g_assert_not_reached ();
     }
 }
 
index e71785c5a1a0938b1e06066376834973b572ef3f..a606dbd806da5b126a38c62786fd61ec440c4e84 100644 (file)
@@ -62,7 +62,8 @@ gtk_curve_get_type (void)
        sizeof (GtkCurveClass),
        (GtkClassInitFunc) gtk_curve_class_init,
        (GtkObjectInitFunc) gtk_curve_init,
-       (GtkArgFunc) NULL,
+       (GtkArgSetFunc) NULL,
+        (GtkArgGetFunc) NULL,
       };
 
       curve_type = gtk_type_unique (gtk_drawing_area_get_type (), &curve_info);
index 63add29f3347d9e4b749c8f2ea70f57372a9c3f2..512e62067ab55784b1da2e3200107487c41fee21 100644 (file)
@@ -45,7 +45,8 @@ gtk_data_get_type ()
        sizeof (GtkDataClass),
        (GtkClassInitFunc) gtk_data_class_init,
        (GtkObjectInitFunc) NULL,
-       (GtkArgFunc) NULL,
+       (GtkArgSetFunc) NULL,
+        (GtkArgGetFunc) NULL,
       };
 
       data_type = gtk_type_unique (gtk_object_get_type (), &data_info);
index 55da2d13713e427d112f753271a02a2cc90e4c12..693611cf2bdf7e655c27fc1cf047fd290424444e 100644 (file)
@@ -40,7 +40,8 @@ gtk_dialog_get_type ()
        sizeof (GtkDialogClass),
        (GtkClassInitFunc) gtk_dialog_class_init,
        (GtkObjectInitFunc) gtk_dialog_init,
-       (GtkArgFunc) NULL,
+       (GtkArgSetFunc) NULL,
+        (GtkArgGetFunc) NULL,
       };
 
       dialog_type = gtk_type_unique (gtk_window_get_type (), &dialog_info);
index 3220446a5c8e45bccedbaf5f66c58d1d4040771a..8be0bc078ba4702baf9cba49d546cff6443303cf 100644 (file)
@@ -39,7 +39,8 @@ gtk_drawing_area_get_type ()
        sizeof (GtkDrawingAreaClass),
        (GtkClassInitFunc) gtk_drawing_area_class_init,
        (GtkObjectInitFunc) gtk_drawing_area_init,
-       (GtkArgFunc) NULL,
+       (GtkArgSetFunc) NULL,
+        (GtkArgGetFunc) NULL,
       };
 
       drawing_area_type = gtk_type_unique (gtk_widget_get_type (), &drawing_area_info);
index b84cc06eb8e1ef871315bd7f681ec5fbbdc2d708..55492090e9ab820ce798188cd095eb2baddca35e 100644 (file)
@@ -227,7 +227,8 @@ gtk_entry_get_type ()
        sizeof (GtkEntryClass),
        (GtkClassInitFunc) gtk_entry_class_init,
        (GtkObjectInitFunc) gtk_entry_init,
-       (GtkArgFunc) NULL,
+       (GtkArgSetFunc) NULL,
+       (GtkArgGetFunc) NULL,
       };
 
       entry_type = gtk_type_unique (gtk_widget_get_type (), &entry_info);
index 44a0d7a9a71eae21747d36bd242a19bcccbce3e3..daec6c2266e82c1c47359ff34fb4916456a0d581 100644 (file)
@@ -46,7 +46,8 @@ gtk_event_box_get_type ()
        sizeof (GtkEventBoxClass),
        (GtkClassInitFunc) gtk_event_box_class_init,
        (GtkObjectInitFunc) gtk_event_box_init,
-       (GtkArgFunc) NULL,
+       (GtkArgSetFunc) NULL,
+        (GtkArgGetFunc) NULL,
       };
 
       event_box_type = gtk_type_unique (gtk_bin_get_type (), &event_box_info);
index e5abad8374d68c6e865a53d7c379d580aaf898d4..f0853cccd1185505eddea15c6bb5a9a92dbd85d2 100644 (file)
@@ -308,7 +308,8 @@ gtk_file_selection_get_type ()
        sizeof (GtkFileSelectionClass),
        (GtkClassInitFunc) gtk_file_selection_class_init,
        (GtkObjectInitFunc) gtk_file_selection_init,
-       (GtkArgFunc) NULL,
+       (GtkArgSetFunc) NULL,
+        (GtkArgGetFunc) NULL,
       };
 
       file_selection_type = gtk_type_unique (gtk_window_get_type (), &filesel_info);
index 59eba1f46fa2bc1c9a1684e2eb5a063b83fbe4de..467b15b6a49d4be20be6c61195dfa523b8b8deca 100644 (file)
@@ -61,7 +61,8 @@ gtk_fixed_get_type ()
        sizeof (GtkFixedClass),
        (GtkClassInitFunc) gtk_fixed_class_init,
        (GtkObjectInitFunc) gtk_fixed_init,
-       (GtkArgFunc) NULL,
+       (GtkArgSetFunc) NULL,
+        (GtkArgGetFunc) NULL,
       };
 
       fixed_type = gtk_type_unique (gtk_container_get_type (), &fixed_info);
index ad01a879fd68bdae25df08481bb72009892db011..5f834cfa72a549ef917b4602b35a86f6454fb50b 100644 (file)
@@ -51,7 +51,8 @@ gtk_frame_get_type ()
        sizeof (GtkFrameClass),
        (GtkClassInitFunc) gtk_frame_class_init,
        (GtkObjectInitFunc) gtk_frame_init,
-       (GtkArgFunc) NULL,
+       (GtkArgSetFunc) NULL,
+        (GtkArgGetFunc) NULL,
       };
 
       frame_type = gtk_type_unique (gtk_bin_get_type (), &frame_info);
index 977aabe67feab49613a2dc2f4f07f86e6e73669a..5812ec858be126f0d2d8b33b925293821c792398 100644 (file)
@@ -210,7 +210,8 @@ gtk_gamma_curve_get_type (void)
        sizeof (GtkGammaCurveClass),
        (GtkClassInitFunc) gtk_gamma_curve_class_init,
        (GtkObjectInitFunc) gtk_gamma_curve_init,
-       (GtkArgFunc) NULL,
+       (GtkArgSetFunc) NULL,
+        (GtkArgGetFunc) NULL,
       };
 
       gamma_curve_type =
index 394529210b71b98e29d528fd490fc28ace3f9b34..b91de2873910e58f71cf52aec78f5dea7957452b 100644 (file)
@@ -61,7 +61,8 @@ gtk_handle_box_get_type ()
        sizeof (GtkHandleBoxClass),
        (GtkClassInitFunc) gtk_handle_box_class_init,
        (GtkObjectInitFunc) gtk_handle_box_init,
-       (GtkArgFunc) NULL,
+       (GtkArgSetFunc) NULL,
+        (GtkArgGetFunc) NULL,
       };
 
       handle_box_type = gtk_type_unique (gtk_event_box_get_type (), &handle_box_info);
index 9d86c010e0ca2d09289655f4fe1b52904d9ec754..40efc51afec2c5975e334d0541e59941cdf965a4 100644 (file)
@@ -43,7 +43,8 @@ gtk_hbutton_box_get_type ()
        sizeof (GtkHButtonBoxClass),
        (GtkClassInitFunc) gtk_hbutton_box_class_init,
        (GtkObjectInitFunc) gtk_hbutton_box_init,
-       (GtkArgFunc) NULL,
+       (GtkArgSetFunc) NULL,
+        (GtkArgGetFunc) NULL,
       };
 
       hbutton_box_type = gtk_type_unique (gtk_button_box_get_type (), &hbutton_box_info);
index 4cdc926cd99391ddc5fb50585aba7fcc468e8f4a..f8f8848acff29f626fe9e011b529d0e756fa5476 100644 (file)
@@ -40,7 +40,8 @@ gtk_hbox_get_type ()
        sizeof (GtkHBoxClass),
        (GtkClassInitFunc) gtk_hbox_class_init,
        (GtkObjectInitFunc) gtk_hbox_init,
-       (GtkArgFunc) NULL,
+       (GtkArgSetFunc) NULL,
+        (GtkArgGetFunc) NULL,
       };
 
       hbox_type = gtk_type_unique (gtk_box_get_type (), &hbox_info);
index 23c50961e8ebf8206f7c15e72ee0a7f3d80f47c1..bf132e99220e839cad151ceb9f82b64e8953c08a 100644 (file)
@@ -49,7 +49,8 @@ gtk_hpaned_get_type ()
        sizeof (GtkHPanedClass),
        (GtkClassInitFunc) gtk_hpaned_class_init,
        (GtkObjectInitFunc) gtk_hpaned_init,
-       (GtkArgFunc) NULL,
+       (GtkArgSetFunc) NULL,
+        (GtkArgGetFunc) NULL,
       };
 
       hpaned_type = gtk_type_unique (gtk_paned_get_type (), &hpaned_info);
index 83f1c7a6e4eede6101293b235616bbd99d58ad1e..990627d6e0b8e24b6428c38b3f03daea421f96af 100644 (file)
@@ -51,7 +51,8 @@ gtk_hruler_get_type ()
        sizeof (GtkHRulerClass),
        (GtkClassInitFunc) gtk_hruler_class_init,
        (GtkObjectInitFunc) gtk_hruler_init,
-       (GtkArgFunc) NULL,
+       (GtkArgSetFunc) NULL,
+        (GtkArgGetFunc) NULL,
       };
 
       hruler_type = gtk_type_unique (gtk_ruler_get_type (), &hruler_info);
index 3bebd30fcaca65540e2f87e844d9ca5f9facd447..4771c2e1f6f8fc7c58931c434b3e76d11994558e 100644 (file)
@@ -58,7 +58,8 @@ gtk_hscale_get_type ()
        sizeof (GtkHScaleClass),
        (GtkClassInitFunc) gtk_hscale_class_init,
        (GtkObjectInitFunc) gtk_hscale_init,
-       (GtkArgFunc) NULL,
+       (GtkArgSetFunc) NULL,
+        (GtkArgGetFunc) NULL,
       };
 
       hscale_type = gtk_type_unique (gtk_scale_get_type (), &hscale_info);
index 3b52a7a79897864794a1e6c030db3d9224356027..dcc056c8ae9d2c7337f333b32eb368a5e00cfa82 100644 (file)
@@ -54,7 +54,8 @@ gtk_hscrollbar_get_type ()
        sizeof (GtkHScrollbarClass),
        (GtkClassInitFunc) gtk_hscrollbar_class_init,
        (GtkObjectInitFunc) gtk_hscrollbar_init,
-       (GtkArgFunc) NULL,
+       (GtkArgSetFunc) NULL,
+        (GtkArgGetFunc) NULL,
       };
 
       hscrollbar_type = gtk_type_unique (gtk_scrollbar_get_type (), &hscrollbar_info);
index 5f3a38c209d9f7f33e7000e3bdf44dc6ff30e6de..d0de76e47e4ff82be82ceda9b5e79723c2be0590 100644 (file)
@@ -38,7 +38,8 @@ gtk_hseparator_get_type ()
        sizeof (GtkHSeparatorClass),
        (GtkClassInitFunc) gtk_hseparator_class_init,
        (GtkObjectInitFunc) gtk_hseparator_init,
-       (GtkArgFunc) NULL,
+       (GtkArgSetFunc) NULL,
+        (GtkArgGetFunc) NULL,
       };
 
       hseparator_type = gtk_type_unique (gtk_separator_get_type (), &hseparator_info);
index 98059a64fcfd3a64de6e877d20deb81264ff5d94..caa5a188c2c6c3c0b7933871dcb8aea2f547921d 100644 (file)
@@ -39,7 +39,8 @@ gtk_image_get_type ()
        sizeof (GtkImageClass),
        (GtkClassInitFunc) gtk_image_class_init,
        (GtkObjectInitFunc) gtk_image_init,
-       (GtkArgFunc) NULL,
+       (GtkArgSetFunc) NULL,
+        (GtkArgGetFunc) NULL,
       };
 
       image_type = gtk_type_unique (gtk_misc_get_type (), &image_info);
index d197fc8e0f00edfe13e0421ebbbd43d6582279fa..709eb00c3419d914f6de3db27bdb5ee13664e806 100644 (file)
@@ -140,7 +140,8 @@ gtk_input_dialog_get_type ()
        sizeof (GtkInputDialogClass),
        (GtkClassInitFunc) gtk_input_dialog_class_init,
        (GtkObjectInitFunc) gtk_input_dialog_init,
-       (GtkArgFunc) NULL,
+       (GtkArgSetFunc) NULL,
+        (GtkArgGetFunc) NULL,
       };
 
       input_dialog_type = gtk_type_unique (gtk_dialog_get_type (),
index 6dd0ec8dd8639a2724115db7605122cb11142294..ebf7a37561cb4ce47bc21aa4e9f448583499bc12 100644 (file)
@@ -51,7 +51,8 @@ gtk_item_get_type ()
        sizeof (GtkItemClass),
        (GtkClassInitFunc) gtk_item_class_init,
        (GtkObjectInitFunc) gtk_item_init,
-       (GtkArgFunc) NULL,
+       (GtkArgSetFunc) NULL,
+        (GtkArgGetFunc) NULL,
       };
 
       item_type = gtk_type_unique (gtk_bin_get_type (), &item_info);
index 9fcdcc3e8dada3c22bbf42f8a64b476911f0ea0f..5d1213bfdac415268d87811bd89eed58de76a451 100644 (file)
@@ -45,7 +45,8 @@ gtk_label_get_type ()
        sizeof (GtkLabelClass),
        (GtkClassInitFunc) gtk_label_class_init,
        (GtkObjectInitFunc) gtk_label_init,
-       (GtkArgFunc) NULL,
+       (GtkArgSetFunc) NULL,
+        (GtkArgGetFunc) NULL,
       };
 
       label_type = gtk_type_unique (gtk_misc_get_type (), &label_info);
index 7d7d4a66d72236b147e8b82ce116f0bc06a3b13c..fc5aea67f99e62ff24ba2a00186194c98ad248c9 100644 (file)
@@ -91,7 +91,8 @@ gtk_list_get_type ()
        sizeof (GtkListClass),
        (GtkClassInitFunc) gtk_list_class_init,
        (GtkObjectInitFunc) gtk_list_init,
-       (GtkArgFunc) NULL,
+       (GtkArgSetFunc) NULL,
+        (GtkArgGetFunc) NULL,
       };
 
       list_type = gtk_type_unique (gtk_container_get_type (), &list_info);
index 642027025935a2cac8e53f40a0e86996938744e8..4e618f94badd41e21403030c3487a0364b647f6d 100644 (file)
@@ -59,7 +59,8 @@ gtk_list_item_get_type ()
        sizeof (GtkListItemClass),
        (GtkClassInitFunc) gtk_list_item_class_init,
        (GtkObjectInitFunc) gtk_list_item_init,
-       (GtkArgFunc) NULL,
+       (GtkArgSetFunc) NULL,
+        (GtkArgGetFunc) NULL,
       };
 
       list_item_type = gtk_type_unique (gtk_item_get_type (), &list_item_info);
index decf1e7842fa5fef834bed9ff10aaca9f6f7229b..8a83154caab3c409c6452f931bfd0b2a92f07784 100644 (file)
@@ -65,7 +65,8 @@ gtk_menu_get_type ()
        sizeof (GtkMenuClass),
        (GtkClassInitFunc) gtk_menu_class_init,
        (GtkObjectInitFunc) gtk_menu_init,
-       (GtkArgFunc) NULL,
+       (GtkArgSetFunc) NULL,
+        (GtkArgGetFunc) NULL,
       };
 
       menu_type = gtk_type_unique (gtk_menu_shell_get_type (), &menu_info);
index 19f0aa3e767a62ac537221276de343dbca141c94..49c7ec6284188221b70a84132725e6270e248bc9 100644 (file)
@@ -51,7 +51,8 @@ gtk_menu_bar_get_type ()
        sizeof (GtkMenuBarClass),
        (GtkClassInitFunc) gtk_menu_bar_class_init,
        (GtkObjectInitFunc) gtk_menu_bar_init,
-       (GtkArgFunc) NULL,
+       (GtkArgSetFunc) NULL,
+        (GtkArgGetFunc) NULL,
       };
 
       menu_bar_type = gtk_type_unique (gtk_menu_shell_get_type (), &menu_bar_info);
index 9c0993fdbec5cad021a4c65308a50a4e96b2918a..d48693968a1480961f71f5eeec893ca8239b02dc 100644 (file)
@@ -86,7 +86,8 @@ gtk_menu_item_get_type ()
        sizeof (GtkMenuItemClass),
        (GtkClassInitFunc) gtk_menu_item_class_init,
        (GtkObjectInitFunc) gtk_menu_item_init,
-       (GtkArgFunc) NULL,
+       (GtkArgSetFunc) NULL,
+        (GtkArgGetFunc) NULL,
       };
 
       menu_item_type = gtk_type_unique (gtk_item_get_type (), &menu_item_info);
index 6d3de5a7f8475572bc37faa3cef4ecd60355f7b0..cf801afecd86cfccf7ad857aeea1083f2956ca34 100644 (file)
@@ -74,7 +74,8 @@ gtk_menu_shell_get_type ()
        sizeof (GtkMenuShellClass),
        (GtkClassInitFunc) gtk_menu_shell_class_init,
        (GtkObjectInitFunc) gtk_menu_shell_init,
-       (GtkArgFunc) NULL,
+       (GtkArgSetFunc) NULL,
+        (GtkArgGetFunc) NULL,
       };
 
       menu_shell_type = gtk_type_unique (gtk_container_get_type (), &menu_shell_info);
index 0ef8f0731c0367f4d6f3fb293b68bc4bdd648ee6..92ab64a49d54a83c39b5f403d5780f27467bdb0d 100644 (file)
@@ -38,7 +38,8 @@ gtk_misc_get_type ()
        sizeof (GtkMiscClass),
        (GtkClassInitFunc) gtk_misc_class_init,
        (GtkObjectInitFunc) gtk_misc_init,
-       (GtkArgFunc) NULL,
+       (GtkArgSetFunc) NULL,
+        (GtkArgGetFunc) NULL,
       };
 
       misc_type = gtk_type_unique (gtk_widget_get_type (), &misc_info);
index db6adce54cfe1df2ce164f4888a1ac97b7363c99..258d484f6c5561b861ae640b399387b304cad430 100644 (file)
@@ -95,7 +95,8 @@ gtk_notebook_get_type ()
        sizeof (GtkNotebookClass),
        (GtkClassInitFunc) gtk_notebook_class_init,
        (GtkObjectInitFunc) gtk_notebook_init,
-       (GtkArgFunc) NULL,
+       (GtkArgSetFunc) NULL,
+        (GtkArgGetFunc) NULL,
       };
 
       notebook_type = gtk_type_unique (gtk_container_get_type (), &notebook_info);
index 38257b9b4aa31a337174db8d241a1bdbec0b04c0..d61a73ede72a676cf90fe2a5b63e47cdd4c10041 100644 (file)
@@ -28,6 +28,11 @@ enum {
   DESTROY,
   LAST_SIGNAL
 };
+enum {
+  ARG_0,
+  ARG_USER_DATA,
+  ARG_SIGNAL
+};
 
 
 typedef struct _GtkObjectData  GtkObjectData;
@@ -44,13 +49,16 @@ struct _GtkArgInfo
 {
   char *name;
   GtkType type;
+  GtkType class_type;
+  guint arg_id;
 };
 
 
 static void           gtk_object_class_init    (GtkObjectClass *klass);
 static void           gtk_object_init          (GtkObject      *object);
-static void           gtk_object_arg           (GtkObject      *object,
-                                               GtkArg         *arg);
+static void           gtk_object_set_arg       (GtkObject      *object,
+                                               GtkArg         *arg,
+                                               guint           arg_id);
 static void           gtk_real_object_destroy  (GtkObject      *object);
 static void           gtk_object_data_init     (void);
 static GtkObjectData* gtk_object_data_new      (void);
@@ -95,7 +103,8 @@ gtk_object_init_type ()
     sizeof (GtkObjectClass),
     (GtkClassInitFunc) gtk_object_class_init,
     (GtkObjectInitFunc) gtk_object_init,
-    (GtkArgFunc) gtk_object_arg,
+    gtk_object_set_arg,
+    NULL,
   };
 
   object_type = gtk_type_unique (0, &object_info);
@@ -122,8 +131,8 @@ gtk_object_class_init (GtkObjectClass *class)
   class->signals = NULL;
   class->nsignals = 0;
 
-  gtk_object_add_arg_type ("GtkObject::user_data", GTK_TYPE_POINTER);
-  gtk_object_add_arg_type ("GtkObject::signal", GTK_TYPE_SIGNAL);
+  gtk_object_add_arg_type ("GtkObject::user_data", GTK_TYPE_POINTER, ARG_USER_DATA);
+  gtk_object_add_arg_type ("GtkObject::signal", GTK_TYPE_SIGNAL, ARG_SIGNAL);
 
   object_signals[DESTROY] =
     gtk_signal_new ("destroy",
@@ -163,24 +172,27 @@ gtk_object_init (GtkObject *object)
  *****************************************/
 
 static void
-gtk_object_arg (GtkObject *object,
-               GtkArg    *arg)
+gtk_object_set_arg (GtkObject *object,
+                   GtkArg    *arg,
+                   guint      arg_id)
 {
-  if (strcmp (arg->name, "user_data") == 0)
+  switch (arg_id)
     {
+    case ARG_USER_DATA:
       gtk_object_set_user_data (object, GTK_VALUE_POINTER (*arg));
-    }
-  else if (strncmp (arg->name, "signal", 6) == 0)
-    {
-      if ((arg->name[6] != ':') || (arg->name[7] != ':'))
+      break;
+    case ARG_SIGNAL:
+      if ((arg->name[11 + 6] != ':') || (arg->name[11 + 7] != ':'))
        {
          g_print ("invalid signal argument: \"%s\"\n", arg->name);
          return;
        }
-
-      gtk_signal_connect (object, arg->name + 8,
+      gtk_signal_connect (object, arg->name + 11 + 8,
                          (GtkSignalFunc) GTK_VALUE_SIGNAL (*arg).f,
                          GTK_VALUE_SIGNAL (*arg).d);
+      break;
+    default:
+      g_assert_not_reached ();
     }
 }
 
@@ -344,29 +356,40 @@ gtk_object_setv (GtkObject *obj,
                 gint       nargs,
                 GtkArg    *args)
 {
-  guint class_type;
-  char class_name[1024];
-  char *arg_name;
   int i;
 
   g_return_if_fail (obj != NULL);
 
+  if (!arg_info_ht)
+    return;
+
   for (i = 0; i < nargs; i++)
     {
-      arg_name = strchr (args[i].name, ':');
-      if (!arg_name || (arg_name[0] != ':') || (arg_name[1] != ':'))
+      GtkArgInfo *info;
+      gchar *lookup_name;
+      gchar *d;
+
+      lookup_name = g_strdup (args[i].name);
+      d = strchr (lookup_name, ':');
+      if (d && d[1] == ':')
        {
-         g_print ("invalid arg name: \"%s\"\n", args[i].name);
-         continue;
-       }
+         d = strchr (d + 2, ':');
+         if (d)
+           *d = 0;
 
-      strncpy (class_name, args[i].name, (long) (arg_name - args[i].name));
-      class_name[(long) (arg_name - args[i].name)] = '\0';
+         info = g_hash_table_lookup (arg_info_ht, lookup_name);
+       }
+      else
+       info = NULL;
 
-      args[i].name = arg_name + 2;
+      if (!info)
+       {
+         g_warning ("invalid arg name: \"%s\"\n", lookup_name);
+         continue;
+       }
+      g_free (lookup_name);
 
-      class_type = gtk_type_from_name (class_name);
-      gtk_type_set_arg (obj, class_type, &args[i]);
+      gtk_type_set_arg (obj, info->class_type, &args[i], info->arg_id);
     }
 }
 
@@ -380,13 +403,38 @@ gtk_object_setv (GtkObject *obj,
 
 void
 gtk_object_add_arg_type (const char *arg_name,
-                        GtkType     arg_type)
+                        GtkType     arg_type,
+                        guint       arg_id)
 {
   GtkArgInfo *info;
+  gchar class_part[1024];
+  gchar *arg_part;
+  GtkType class_type;
+
+  g_return_if_fail (arg_id > 0);
+  
+  arg_part = strchr (arg_name, ':');
+  if (!arg_part || (arg_part[0] != ':') || (arg_part[1] != ':'))
+    {
+      g_warning ("invalid arg name: \"%s\"\n", arg_name);
+      return;
+    }
+
+  strncpy (class_part, arg_name, (glong) (arg_part - arg_name));
+  class_part[(glong) (arg_part - arg_name)] = '\0';
+
+  class_type = gtk_type_from_name (class_part);
+  if (!class_type)
+    {
+      g_warning ("invalid class name in arg: \"%s\"\n", arg_name);
+      return;
+    }
 
   info = g_new (GtkArgInfo, 1);
-  info->name = g_strdup(arg_name);
+  info->name = g_strdup (arg_name);
   info->type = arg_type;
+  info->class_type = class_type;
+  info->arg_id = arg_id;
 
   if (!arg_info_ht)
     arg_info_ht = g_hash_table_new (g_string_hash, g_string_equal);
@@ -415,7 +463,7 @@ gtk_object_get_arg_type (const char *arg_name)
   t = strchr (arg_name, ':');
   if (!t || (t[0] != ':') || (t[1] != ':'))
     {
-      g_print ("invalid arg name: \"%s\"\n", arg_name);
+      g_warning ("invalid arg name: \"%s\"\n", arg_name);
       return GTK_TYPE_INVALID;
     }
 
@@ -801,7 +849,7 @@ gtk_object_data_id_alloc ()
 }
 
 /*****************************************
- * gtk_object_data_id_alloc:
+ * gtk_object_collect_args:
  *
  *   arguments:
  *
@@ -836,7 +884,7 @@ gtk_object_collect_args (gint    *nargs,
       switch (GTK_FUNDAMENTAL_TYPE (type))
        {
        case GTK_TYPE_INVALID:
-         g_print ("invalid arg name: \"%s\" %x\n", name, type);
+         g_warning ("invalid arg name: \"%s\" %x\n", name, type);
          (void) va_arg (args1, long);
          continue;
        case GTK_TYPE_NONE:
index f258e2f3bd250938b9343fbf4283c34a26820af4..16bcafa876f633122f9cc917116d6aef665f9142 100644 (file)
@@ -186,7 +186,8 @@ void gtk_object_setv (GtkObject *obj,
                      GtkArg    *args);
 
 void gtk_object_add_arg_type (const char *arg_name,
-                             GtkType     arg_type);
+                             GtkType     arg_type,
+                             guint       arg_id);
 
 GtkType gtk_object_get_arg_type (const char *arg_name);
 
index 0b0f5cc73f4b08f46816f70715731661bb67dfd6..c598f5e051678777a5e047853fddbb138982e967 100644 (file)
@@ -75,7 +75,8 @@ gtk_option_menu_get_type ()
        sizeof (GtkOptionMenuClass),
        (GtkClassInitFunc) gtk_option_menu_class_init,
        (GtkObjectInitFunc) gtk_option_menu_init,
-       (GtkArgFunc) NULL,
+       (GtkArgSetFunc) NULL,
+        (GtkArgGetFunc) NULL,
       };
 
       option_menu_type = gtk_type_unique (gtk_button_get_type (), &option_menu_info);
index c3ee553fc87c941a1a15b32b8b70e2ef97079bd7..e9a587e334cfb6294cfa3429a1b4ca219c579548 100644 (file)
@@ -53,7 +53,8 @@ gtk_paned_get_type ()
        sizeof (GtkPanedClass),
        (GtkClassInitFunc) gtk_paned_class_init,
        (GtkObjectInitFunc) gtk_paned_init,
-       (GtkArgFunc) NULL,
+       (GtkArgSetFunc) NULL,
+       (GtkArgGetFunc) NULL,
       };
 
       paned_type = gtk_type_unique (gtk_container_get_type (), &paned_info);
index 66ef1538cc2be698d7176facbbef416c878499f9..9505f598ff2ac9f3a31cce01cc3407263cf40ea6 100644 (file)
@@ -41,7 +41,8 @@ gtk_pixmap_get_type ()
        sizeof (GtkPixmapClass),
        (GtkClassInitFunc) gtk_pixmap_class_init,
        (GtkObjectInitFunc) gtk_pixmap_init,
-       (GtkArgFunc) NULL,
+       (GtkArgSetFunc) NULL,
+        (GtkArgGetFunc) NULL,
       };
 
       pixmap_type = gtk_type_unique (gtk_misc_get_type (), &pixmap_info);
index 4246a321ab51810d7a89b13b71561b6c04c79901..3080541e6612ae18b986b297f493e30d9ceb023b 100644 (file)
@@ -140,7 +140,8 @@ gtk_preview_get_type ()
         sizeof (GtkPreviewClass),
         (GtkClassInitFunc) gtk_preview_class_init,
         (GtkObjectInitFunc) gtk_preview_init,
-       (GtkArgFunc) NULL,
+       (GtkArgSetFunc) NULL,
+        (GtkArgGetFunc) NULL,
       };
 
       preview_type = gtk_type_unique (gtk_widget_get_type (), &preview_info);
index 620e5eed688ed8d3ccd16f4a8a47196d98bc2129..ae15aa7b13dc9f9b768af3eb9b18a98b045b3139 100644 (file)
@@ -47,7 +47,8 @@ gtk_progress_bar_get_type ()
        sizeof (GtkProgressBarClass),
        (GtkClassInitFunc) gtk_progress_bar_class_init,
        (GtkObjectInitFunc) gtk_progress_bar_init,
-       (GtkArgFunc) NULL,
+       (GtkArgSetFunc) NULL,
+        (GtkArgGetFunc) NULL,
       };
 
       progress_bar_type = gtk_type_unique (gtk_widget_get_type (), &progress_bar_info);
index 0c52836e96da1e600370e1e1f79b9cb6ddecf58e..1e9a36886b946499dee655ca6a76839fd5a4cc6c 100644 (file)
@@ -48,7 +48,8 @@ gtk_radio_button_get_type ()
        sizeof (GtkRadioButtonClass),
        (GtkClassInitFunc) gtk_radio_button_class_init,
        (GtkObjectInitFunc) gtk_radio_button_init,
-       (GtkArgFunc) NULL,
+       (GtkArgSetFunc) NULL,
+        (GtkArgGetFunc) NULL,
       };
 
       radio_button_type = gtk_type_unique (gtk_check_button_get_type (), &radio_button_info);
index edb8d63e7ba609e3ef665d54b3b7ccbf2a4dc76a..eb9c0c976d3e031db0f3cf323799299992f1f0ab 100644 (file)
@@ -40,7 +40,8 @@ gtk_radio_menu_item_get_type ()
         sizeof (GtkRadioMenuItemClass),
         (GtkClassInitFunc) gtk_radio_menu_item_class_init,
         (GtkObjectInitFunc) gtk_radio_menu_item_init,
-        (GtkArgFunc) NULL,
+        (GtkArgSetFunc) NULL,
+        (GtkArgGetFunc) NULL,
       };
 
       radio_menu_item_type = gtk_type_unique (gtk_check_menu_item_get_type (), &radio_menu_item_info);
index 58c41e43f995ba21a6f0afa1a2863f2ba61d0027..82d3c978369e14f78cfeb776a8aaeb8be4d39502 100644 (file)
@@ -90,7 +90,8 @@ gtk_range_get_type ()
        sizeof (GtkRangeClass),
        (GtkClassInitFunc) gtk_range_class_init,
        (GtkObjectInitFunc) gtk_range_init,
-       (GtkArgFunc) NULL,
+       (GtkArgSetFunc) NULL,
+        (GtkArgGetFunc) NULL,
       };
 
       range_type = gtk_type_unique (gtk_widget_get_type (), &range_info);
index e8a9b07107e45b016233c21f55e64193b06572ae..849d5eadf1ef568e4d4ef2cc202ddee504858180 100644 (file)
@@ -51,7 +51,8 @@ gtk_ruler_get_type ()
        sizeof (GtkRulerClass),
        (GtkClassInitFunc) gtk_ruler_class_init,
        (GtkObjectInitFunc) gtk_ruler_init,
-       (GtkArgFunc) NULL,
+       (GtkArgSetFunc) NULL,
+        (GtkArgGetFunc) NULL,
       };
 
       ruler_type = gtk_type_unique (gtk_widget_get_type (), &ruler_info);
index ba2f186168a01ae15d3d49825cd9ca5a358d81f3..073b6ef2a677e12fbc69954d647e4533638f6c1a 100644 (file)
@@ -46,7 +46,8 @@ gtk_scale_get_type ()
        sizeof (GtkScaleClass),
        (GtkClassInitFunc) gtk_scale_class_init,
        (GtkObjectInitFunc) gtk_scale_init,
-       (GtkArgFunc) NULL,
+       (GtkArgSetFunc) NULL,
+        (GtkArgGetFunc) NULL,
       };
 
       scale_type = gtk_type_unique (gtk_range_get_type (), &scale_info);
index 3f5088b446e3fff208c877861f8a9a03888a78ab..4c0d4b204fdcab4b3d2a6952c4dcbac66b580d3c 100644 (file)
@@ -34,7 +34,8 @@ gtk_scrollbar_get_type ()
        sizeof (GtkScrollbarClass),
        (GtkClassInitFunc) gtk_scrollbar_class_init,
        (GtkObjectInitFunc) gtk_scrollbar_init,
-       (GtkArgFunc) NULL,
+       (GtkArgSetFunc) NULL,
+        (GtkArgGetFunc) NULL,
       };
 
       scrollbar_type = gtk_type_unique (gtk_range_get_type (), &scrollbar_info);
index 320692710ce3863977b2eb59bda7f598f958451f..d637ce25ebe9ce3d88abeeb2fbac400403430dfe 100644 (file)
@@ -63,7 +63,8 @@ gtk_scrolled_window_get_type ()
        sizeof (GtkScrolledWindowClass),
        (GtkClassInitFunc) gtk_scrolled_window_class_init,
        (GtkObjectInitFunc) gtk_scrolled_window_init,
-       (GtkArgFunc) NULL,
+       (GtkArgSetFunc) NULL,
+        (GtkArgGetFunc) NULL,
       };
 
       scrolled_window_type = gtk_type_unique (gtk_container_get_type (), &scrolled_window_info);
index 6ad41ad5b09dccbd18cc4ab529ad3500d32d1074..1e14c737bbd8301b265164522354bbf2e24b1f59 100644 (file)
@@ -36,7 +36,8 @@ gtk_separator_get_type ()
        sizeof (GtkSeparatorClass),
        (GtkClassInitFunc) gtk_separator_class_init,
        (GtkObjectInitFunc) gtk_separator_init,
-       (GtkArgFunc) NULL,
+       (GtkArgSetFunc) NULL,
+        (GtkArgGetFunc) NULL,
       };
 
       separator_type = gtk_type_unique (gtk_widget_get_type (), &separator_info);
index 7711524dea9de421afed570fbc853692700c3337..623c2c210e6355a62c8881ae2eea818fe37a1ba4 100644 (file)
@@ -66,7 +66,8 @@ gtk_table_get_type ()
        sizeof (GtkTableClass),
        (GtkClassInitFunc) gtk_table_class_init,
        (GtkObjectInitFunc) gtk_table_init,
-       (GtkArgFunc) NULL,
+       (GtkArgSetFunc) NULL,
+        (GtkArgGetFunc) NULL,
       };
 
       table_type = gtk_type_unique (gtk_container_get_type (), &table_info);
index fdd133eb59e331095c272f3a281b9eeef5336cdf..44ac63ba63b9887c75d481cfc5e0572121957b99 100644 (file)
@@ -325,7 +325,8 @@ gtk_text_get_type ()
        sizeof (GtkTextClass),
        (GtkClassInitFunc) gtk_text_class_init,
        (GtkObjectInitFunc) gtk_text_init,
-       (GtkArgFunc) NULL,
+       (GtkArgSetFunc) NULL,
+        (GtkArgGetFunc) NULL,
       };
 
       text_type = gtk_type_unique (gtk_widget_get_type (), &text_info);
index eabcb1b26692fdc108956f20f6ab0fbac06d5a84..be39f8b1f57cfbbcf6bf36b8208fe61a66331e72 100644 (file)
@@ -58,7 +58,8 @@ gtk_toggle_button_get_type ()
        sizeof (GtkToggleButtonClass),
        (GtkClassInitFunc) gtk_toggle_button_class_init,
        (GtkObjectInitFunc) gtk_toggle_button_init,
-       (GtkArgFunc) NULL,
+       (GtkArgSetFunc) NULL,
+        (GtkArgGetFunc) NULL,
       };
 
       toggle_button_type = gtk_type_unique (gtk_button_get_type (), &toggle_button_info);
index 3bc43591c1c3f3469bc549f48fc4acafca0da1ac..59c88633cbab3392e5bf5281e69941d61f5f1b92 100644 (file)
@@ -104,7 +104,8 @@ gtk_toolbar_get_type (void)
        sizeof (GtkToolbarClass),
        (GtkClassInitFunc) gtk_toolbar_class_init,
        (GtkObjectInitFunc) gtk_toolbar_init,
-       (GtkArgFunc) NULL
+       (GtkArgSetFunc) NULL,
+       (GtkArgGetFunc) NULL,
       };
 
       toolbar_type = gtk_type_unique (gtk_container_get_type (), &toolbar_info);
index 512d4a491ec10ef6d8c23a7816938de615708108..c81e3d77446a983eeccd2293a78a3faee479e5f8 100644 (file)
@@ -88,7 +88,8 @@ gtk_tree_get_type ()
        sizeof (GtkTreeClass),
        (GtkClassInitFunc) gtk_tree_class_init,
        (GtkObjectInitFunc) gtk_tree_init,
-       (GtkArgFunc) NULL,
+       (GtkArgSetFunc) NULL,
+        (GtkArgGetFunc) NULL,
       };
 
       tree_type = gtk_type_unique (gtk_container_get_type (), &tree_info);
index 1999666642cd2b91be45df197fa1938889501897..71f833d37e1167ce2329c1a378df8c63850d2a12 100644 (file)
@@ -99,7 +99,8 @@ gtk_tree_item_get_type ()
        sizeof (GtkTreeItemClass),
        (GtkClassInitFunc) gtk_tree_item_class_init,
        (GtkObjectInitFunc) gtk_tree_item_init,
-       (GtkArgFunc) NULL,
+       (GtkArgSetFunc) NULL,
+        (GtkArgGetFunc) NULL,
       };
 
       tree_item_type = gtk_type_unique (gtk_item_get_type (), &tree_item_info);
index ffde61647581638b7268a7f1e6c458467580da3c..79e049156f11c7827e420c1c55ce6e1a51a952bb 100644 (file)
@@ -271,8 +271,9 @@ gtk_type_is_a (GtkType type,
 
 void
 gtk_type_set_arg (GtkObject *object,
-                 GtkType      type,
-                 GtkArg    *arg)
+                 GtkType    type,
+                 GtkArg    *arg,
+                 guint      arg_id)
 {
   GtkTypeNode *node;
 
@@ -281,8 +282,8 @@ gtk_type_set_arg (GtkObject *object,
 
   node = g_hash_table_lookup (type_hash_table, &type);
 
-  if (node->type_info.arg_func)
-    (* node->type_info.arg_func) (object, arg);
+  if (node && node->type_info.arg_set_func)
+    (* node->type_info.arg_set_func) (object, arg, arg_id);
 }
 
 static void
@@ -390,7 +391,8 @@ gtk_type_register_builtin (char   *name,
   info.object_size = info.class_size = 0;
   info.class_init_func = NULL;
   info.object_init_func = NULL;
-  info.arg_func = NULL;
+  info.arg_set_func = NULL;
+  info.arg_get_func = NULL;
 
   return gtk_type_unique (parent, &info);
 }
index 911885be95942129914a43524423853c170943b7..d6e398f0e571d3bb859a03e5a89ac26ebe12182d 100644 (file)
@@ -77,7 +77,8 @@ typedef struct _GtkTypeInfo    GtkTypeInfo;
 
 typedef void (*GtkClassInitFunc)  (gpointer klass);
 typedef void (*GtkObjectInitFunc) (gpointer object);
-typedef void (*GtkArgFunc) (GtkObject *object, GtkArg *arg);
+typedef void (*GtkArgGetFunc) (GtkObject *object, GtkArg *arg, guint arg_id);
+typedef void (*GtkArgSetFunc) (GtkObject *object, GtkArg *arg, guint arg_id);
 typedef gint (*GtkFunction) (gpointer data);
 typedef void (*GtkRemoveFunction) (gpointer data);
 typedef void (*GtkCallbackMarshal) (GtkObject *object,
@@ -89,7 +90,7 @@ typedef void (*GtkDestroyNotify) (gpointer data);
 struct _GtkArg
 {
   GtkType type;
-  char *name;
+  gchar *name;
 
   union {
     gchar char_data;
@@ -166,7 +167,8 @@ struct _GtkTypeInfo
   guint class_size;
   GtkClassInitFunc class_init_func;
   GtkObjectInitFunc object_init_func;
-  GtkArgFunc arg_func;
+  GtkArgSetFunc arg_set_func;
+  GtkArgGetFunc arg_get_func;
 };
 
 
@@ -185,7 +187,8 @@ gint     gtk_type_is_a              (GtkType      type,
                                     GtkType      is_a_type);
 void     gtk_type_set_arg           (GtkObject   *object,
                                     GtkType      type,
-                                    GtkArg      *arg);
+                                    GtkArg      *arg,
+                                    guint        arg_id);
 
 
 #ifdef __cplusplus
index 4fc867fdf312663bfec71fe8deb0b922f62b789c..3210f82dccfc91cd692e41d67b1eadabcafe50af 100644 (file)
@@ -42,7 +42,8 @@ gtk_vbutton_box_get_type ()
        sizeof (GtkVButtonBoxClass),
        (GtkClassInitFunc) gtk_vbutton_box_class_init,
        (GtkObjectInitFunc) gtk_vbutton_box_init,
-       (GtkArgFunc) NULL,
+       (GtkArgSetFunc) NULL,
+        (GtkArgGetFunc) NULL,
       };
 
       vbutton_box_type = gtk_type_unique (gtk_button_box_get_type (), &vbutton_box_info);
index 585e99b87bb3d05f0a279017f779ca049e5ddbc1..a26f33ebc185d79efa9fd6127cf599504d527d0a 100644 (file)
@@ -40,7 +40,8 @@ gtk_vbox_get_type ()
        sizeof (GtkVBoxClass),
        (GtkClassInitFunc) gtk_vbox_class_init,
        (GtkObjectInitFunc) gtk_vbox_init,
-       (GtkArgFunc) NULL,
+       (GtkArgSetFunc) NULL,
+        (GtkArgGetFunc) NULL,
       };
 
       vbox_type = gtk_type_unique (gtk_box_get_type (), &vbox_info);
index 46fd1d3c41829cfb4427a1cdfdd412189cb5827d..b39ca31efacdde67d1b2172f30644856dda88ad2 100644 (file)
@@ -56,7 +56,8 @@ gtk_viewport_get_type ()
        sizeof (GtkViewportClass),
        (GtkClassInitFunc) gtk_viewport_class_init,
        (GtkObjectInitFunc) gtk_viewport_init,
-       (GtkArgFunc) NULL,
+       (GtkArgSetFunc) NULL,
+        (GtkArgGetFunc) NULL,
       };
 
       viewport_type = gtk_type_unique (gtk_bin_get_type (), &viewport_info);
index 2dae03209ec95ace5441b0d21e6f8ec417dd5d57..9b0c0b2e01858503881a72d38594a09092031e19 100644 (file)
@@ -49,7 +49,8 @@ gtk_vpaned_get_type ()
        sizeof (GtkVPanedClass),
        (GtkClassInitFunc) gtk_vpaned_class_init,
        (GtkObjectInitFunc) gtk_vpaned_init,
-       (GtkArgFunc) NULL,
+       (GtkArgSetFunc) NULL,
+        (GtkArgGetFunc) NULL,
       };
 
       vpaned_type = gtk_type_unique (gtk_paned_get_type (), &vpaned_info);
index 5de5099a5fb791b4180a13740e58c7309e0ec551..80c97a61fa6dd10d7d0740a22ce667e768903d76 100644 (file)
@@ -51,7 +51,8 @@ gtk_vruler_get_type ()
        sizeof (GtkVRulerClass),
        (GtkClassInitFunc) gtk_vruler_class_init,
        (GtkObjectInitFunc) gtk_vruler_init,
-       (GtkArgFunc) NULL,
+       (GtkArgSetFunc) NULL,
+        (GtkArgGetFunc) NULL,
       };
 
       vruler_type = gtk_type_unique (gtk_ruler_get_type (), &vruler_info);
index 9c2e3058fb121ff82fe6866a0ac718a3ef2e8e5c..20de97401b037094b2fd04bdadd27cc9f3d806a4 100644 (file)
@@ -59,7 +59,8 @@ gtk_vscale_get_type ()
        sizeof (GtkVScaleClass),
        (GtkClassInitFunc) gtk_vscale_class_init,
        (GtkObjectInitFunc) gtk_vscale_init,
-       (GtkArgFunc) NULL,
+       (GtkArgSetFunc) NULL,
+        (GtkArgGetFunc) NULL,
       };
 
       vscale_type = gtk_type_unique (gtk_scale_get_type (), &vscale_info);
index 053131e6546548697c5818cdf594ef78fc1b6947..f83fef1e8bed458c5b38a5714d4b6743a713f829 100644 (file)
@@ -53,7 +53,8 @@ gtk_vscrollbar_get_type ()
        sizeof (GtkVScrollbarClass),
        (GtkClassInitFunc) gtk_vscrollbar_class_init,
        (GtkObjectInitFunc) gtk_vscrollbar_init,
-       (GtkArgFunc) NULL,
+       (GtkArgSetFunc) NULL,
+        (GtkArgGetFunc) NULL,
       };
 
       vscrollbar_type = gtk_type_unique (gtk_scrollbar_get_type (), &vscrollbar_info);
index fbbba19ffe3d09aaa96f0a20bbf5e0761e225975..9e9b6d885187a10553606aeb5d6fd95fdbe188fe 100644 (file)
@@ -38,7 +38,8 @@ gtk_vseparator_get_type ()
        sizeof (GtkVSeparatorClass),
        (GtkClassInitFunc) gtk_vseparator_class_init,
        (GtkObjectInitFunc) gtk_vseparator_init,
-       (GtkArgFunc) NULL,
+       (GtkArgSetFunc) NULL,
+        (GtkArgGetFunc) NULL,
       };
 
       vseparator_type = gtk_type_unique (gtk_separator_get_type (), &vseparator_info);
index c0f0d22b0c6d52b2688aabebb837cfc3c55ec8bb..9dbde0d43b49864a77a1c3a00c3195b67719e8f9 100644 (file)
@@ -80,6 +80,21 @@ enum {
   LAST_SIGNAL
 };
 
+enum {
+  ARG_0,
+  ARG_X,
+  ARG_Y,
+  ARG_WIDTH,
+  ARG_HEIGHT,
+  ARG_VISIBLE,
+  ARG_SENSITIVE,
+  ARG_EVENTS,
+  ARG_EXTENSION_EVENTS,
+  ARG_NAME,
+  ARG_STYLE,
+  ARG_PARENT
+};
+
 
 typedef void (*GtkWidgetSignal1) (GtkObject *object,
                                  gpointer   arg1,
@@ -116,8 +131,9 @@ static void gtk_widget_marshal_signal_4 (GtkObject  *object,
 
 static void gtk_widget_class_init               (GtkWidgetClass    *klass);
 static void gtk_widget_init                     (GtkWidget         *widget);
-static void gtk_widget_arg                      (GtkWidget         *widget,
-                                                 GtkArg            *arg);
+static void gtk_widget_set_arg                  (GtkWidget         *widget,
+                                                 GtkArg            *arg,
+                                                 guint              arg_id);
 static void gtk_real_widget_destroy             (GtkObject         *object);
 static void gtk_real_widget_show                (GtkWidget         *widget);
 static void gtk_real_widget_hide                (GtkWidget         *widget);
@@ -205,7 +221,8 @@ gtk_widget_get_type ()
        sizeof (GtkWidgetClass),
        (GtkClassInitFunc) gtk_widget_class_init,
        (GtkObjectInitFunc) gtk_widget_init,
-       (GtkArgFunc) gtk_widget_arg,
+       (GtkArgSetFunc) gtk_widget_set_arg,
+       (GtkArgGetFunc) NULL,
       };
       
       widget_type = gtk_type_unique (gtk_object_get_type (), &widget_info);
@@ -231,17 +248,17 @@ gtk_widget_class_init (GtkWidgetClass *klass)
   
   parent_class = gtk_type_class (gtk_object_get_type ());
   
-  gtk_object_add_arg_type ("GtkWidget::x", GTK_TYPE_INT);
-  gtk_object_add_arg_type ("GtkWidget::y", GTK_TYPE_INT);
-  gtk_object_add_arg_type ("GtkWidget::width", GTK_TYPE_INT);
-  gtk_object_add_arg_type ("GtkWidget::height", GTK_TYPE_INT);
-  gtk_object_add_arg_type ("GtkWidget::visible", GTK_TYPE_BOOL);
-  gtk_object_add_arg_type ("GtkWidget::sensitive", GTK_TYPE_BOOL);
-  gtk_object_add_arg_type ("GtkWidget::events", GTK_TYPE_GDK_EVENT_MASK);
-  gtk_object_add_arg_type ("GtkWidget::extension_events", GTK_TYPE_GDK_EVENT_MASK);
-  gtk_object_add_arg_type ("GtkWidget::name", GTK_TYPE_STRING);
-  gtk_object_add_arg_type ("GtkWidget::style", GTK_TYPE_STYLE);
-  gtk_object_add_arg_type ("GtkWidget::parent", GTK_TYPE_CONTAINER);
+  gtk_object_add_arg_type ("GtkWidget::x", GTK_TYPE_INT, ARG_X);
+  gtk_object_add_arg_type ("GtkWidget::y", GTK_TYPE_INT, ARG_Y);
+  gtk_object_add_arg_type ("GtkWidget::width", GTK_TYPE_INT, ARG_WIDTH);
+  gtk_object_add_arg_type ("GtkWidget::height", GTK_TYPE_INT, ARG_HEIGHT);
+  gtk_object_add_arg_type ("GtkWidget::visible", GTK_TYPE_BOOL, ARG_VISIBLE);
+  gtk_object_add_arg_type ("GtkWidget::sensitive", GTK_TYPE_BOOL, ARG_SENSITIVE);
+  gtk_object_add_arg_type ("GtkWidget::events", GTK_TYPE_GDK_EVENT_MASK, ARG_EVENTS);
+  gtk_object_add_arg_type ("GtkWidget::extension_events", GTK_TYPE_GDK_EVENT_MASK, ARG_EXTENSION_EVENTS);
+  gtk_object_add_arg_type ("GtkWidget::name", GTK_TYPE_STRING, ARG_NAME);
+  gtk_object_add_arg_type ("GtkWidget::style", GTK_TYPE_STYLE, ARG_STYLE);
+  gtk_object_add_arg_type ("GtkWidget::parent", GTK_TYPE_CONTAINER, ARG_PARENT);
   
   widget_signals[SHOW] =
     gtk_signal_new ("show",
@@ -651,7 +668,7 @@ gtk_widget_class_init (GtkWidgetClass *klass)
 }
 
 /*****************************************
- * gtk_widget_arg:
+ * gtk_widget_set_arg:
  *
  *   arguments:
  *
@@ -659,55 +676,50 @@ gtk_widget_class_init (GtkWidgetClass *klass)
  *****************************************/
 
 static void
-gtk_widget_arg (GtkWidget *widget,
-               GtkArg    *arg)
+gtk_widget_set_arg (GtkWidget  *widget,
+                   GtkArg      *arg,
+                   guint        arg_id)
 {
-  if (strcmp (arg->name, "x") == 0)
+  switch (arg_id)
     {
+    case ARG_X:
       gtk_widget_set_uposition (widget, GTK_VALUE_INT(*arg), -2);
-    }
-  else if (strcmp (arg->name, "y") == 0)
-    {
+      break;
+    case ARG_Y:
       gtk_widget_set_uposition (widget, -2, GTK_VALUE_INT(*arg));
-    }
-  else if (strcmp (arg->name, "width") == 0)
-    {
+      break;
+    case ARG_WIDTH:
       gtk_widget_set_usize (widget, GTK_VALUE_INT(*arg), -1);
-    }
-  else if (strcmp (arg->name, "height") == 0)
-    {
+      break;
+    case ARG_HEIGHT:
       gtk_widget_set_usize (widget, -1, GTK_VALUE_INT(*arg));
-    }
-  else if (strcmp (arg->name, "visible") == 0)
-    {
+      break;
+    case ARG_VISIBLE:
       if (GTK_VALUE_BOOL(*arg))
        gtk_widget_show (widget);
       else
        gtk_widget_hide (widget);
-    }
-  else if (strcmp (arg->name, "sensitive") == 0)
-    {
+      break;
+    case ARG_SENSITIVE:
       gtk_widget_set_sensitive (widget, GTK_VALUE_BOOL(*arg));
-    }
-  else if (strcmp (arg->name, "events") == 0)
-    {
+      break;
+    case ARG_EVENTS:
       gtk_widget_set_events (widget, GTK_VALUE_FLAGS(*arg));
-    }
-  else if (strcmp (arg->name, "extension_events") == 0)
-    {
+      break;
+    case ARG_EXTENSION_EVENTS:
       gtk_widget_set_extension_events (widget, GTK_VALUE_FLAGS(*arg));
-    }
-  else if (strcmp (arg->name, "name") == 0)
-    {
+      break;
+    case ARG_NAME:
       gtk_widget_set_name (widget, GTK_VALUE_STRING(*arg));
-    }
-  else if (strcmp (arg->name, "style") == 0)
-    {
+      break;
+    case ARG_STYLE:
       gtk_widget_set_style (widget, (GtkStyle*)GTK_VALUE_BOXED(*arg));
-    }
-  else if (strcmp (arg->name, "parent") == 0)
-    {
+      break;
+    case ARG_PARENT:
       gtk_container_add (GTK_CONTAINER (GTK_VALUE_OBJECT(*arg)), widget);
+      break;
+    default:
+      g_assert_not_reached ();
     }
 }
 
index f7ed03ed701817682a5351cf8e36b0bd28caadec..163ade09a4cbcba939f1d625e2290fa37b4e2eb3 100644 (file)
@@ -28,7 +28,14 @@ enum {
   SET_FOCUS,
   LAST_SIGNAL
 };
-
+enum {
+  ARG_0,
+  ARG_TYPE,
+  ARG_TITLE,
+  ARG_AUTO_SHRINK,
+  ARG_ALLOW_SHRINK,
+  ARG_ALLOW_GROW
+};
 
 typedef gint (*GtkWindowSignal1) (GtkObject *object,
                                  gpointer   arg1,
@@ -50,8 +57,9 @@ static void gtk_window_marshal_signal_2 (GtkObject      *object,
                                         GtkArg         *args);
 static void gtk_window_class_init         (GtkWindowClass    *klass);
 static void gtk_window_init               (GtkWindow         *window);
-static void gtk_window_arg                (GtkWindow         *window,
-                                          GtkArg            *arg);
+static void gtk_window_set_arg            (GtkWindow         *window,
+                                          GtkArg            *arg,
+                                          guint              arg_id);
 static void gtk_window_destroy            (GtkObject         *object);
 static void gtk_window_show               (GtkWidget         *widget);
 static void gtk_window_hide               (GtkWidget         *widget);
@@ -114,7 +122,8 @@ gtk_window_get_type ()
        sizeof (GtkWindowClass),
        (GtkClassInitFunc) gtk_window_class_init,
        (GtkObjectInitFunc) gtk_window_init,
-       (GtkArgFunc) gtk_window_arg,
+       (GtkArgSetFunc) gtk_window_set_arg,
+       (GtkArgGetFunc) NULL,
       };
 
       window_type = gtk_type_unique (gtk_bin_get_type (), &window_info);
@@ -136,11 +145,11 @@ gtk_window_class_init (GtkWindowClass *klass)
 
   parent_class = gtk_type_class (gtk_bin_get_type ());
 
-  gtk_object_add_arg_type ("GtkWindow::type", GTK_TYPE_WINDOW_TYPE);
-  gtk_object_add_arg_type ("GtkWindow::title", GTK_TYPE_STRING);
-  gtk_object_add_arg_type ("GtkWindow::auto_shrink", GTK_TYPE_BOOL);
-  gtk_object_add_arg_type ("GtkWindow::allow_shrink", GTK_TYPE_BOOL);
-  gtk_object_add_arg_type ("GtkWindow::allow_grow", GTK_TYPE_BOOL);
+  gtk_object_add_arg_type ("GtkWindow::type", GTK_TYPE_WINDOW_TYPE, ARG_TYPE);
+  gtk_object_add_arg_type ("GtkWindow::title", GTK_TYPE_STRING, ARG_TITLE);
+  gtk_object_add_arg_type ("GtkWindow::auto_shrink", GTK_TYPE_BOOL, ARG_AUTO_SHRINK);
+  gtk_object_add_arg_type ("GtkWindow::allow_shrink", GTK_TYPE_BOOL, ARG_ALLOW_SHRINK);
+  gtk_object_add_arg_type ("GtkWindow::allow_grow", GTK_TYPE_BOOL, ARG_ALLOW_GROW);
 
   window_signals[MOVE_RESIZE] =
     gtk_signal_new ("move_resize",
@@ -212,28 +221,29 @@ gtk_window_init (GtkWindow *window)
 }
 
 static void
-gtk_window_arg (GtkWindow *window,
-               GtkArg    *arg)
+gtk_window_set_arg (GtkWindow  *window,
+                   GtkArg     *arg,
+                   guint       arg_id)
 {
-  if (strcmp (arg->name, "type") == 0)
+  switch (arg_id)
     {
+    case ARG_TYPE:
       window->type = GTK_VALUE_ENUM(*arg);
-    }
-  else if (strcmp (arg->name, "title") == 0)
-    {
+      break;
+    case ARG_TITLE:
       gtk_window_set_title (window, GTK_VALUE_STRING(*arg));
-    }
-  else if (strcmp (arg->name, "auto_shrink") == 0)
-    {
+      break;
+    case ARG_AUTO_SHRINK:
       window->auto_shrink = (GTK_VALUE_BOOL(*arg) != FALSE);
-    }
-  else if (strcmp (arg->name, "allow_shrink") == 0)
-    {
+      break;
+    case ARG_ALLOW_SHRINK:
       window->allow_shrink = (GTK_VALUE_BOOL(*arg) != FALSE);
-    }
-  else if (strcmp (arg->name, "allow_grow") == 0)
-    {
+      break;
+    case ARG_ALLOW_GROW:
       window->allow_grow = (GTK_VALUE_BOOL(*arg) != FALSE);
+      break;
+    default:
+      g_assert_not_reached ();
     }
 }