diff src/dialog-x.c @ 412:697ef44129c6 r21-2-14

Import from CVS: tag r21-2-14
author cvs
date Mon, 13 Aug 2007 11:20:41 +0200
parents b8cc9ab3f761
children 41dbb7a9d5f2
line wrap: on
line diff
--- a/src/dialog-x.c	Mon Aug 13 11:19:22 2007 +0200
+++ b/src/dialog-x.c	Mon Aug 13 11:20:41 2007 +0200
@@ -44,28 +44,22 @@
   widget_value *wv;
   int got_some;
   wv = xmalloc_widget_value ();
-  wv->name = xstrdup ("value");
+  wv->name = (char *) "value";
   got_some = lw_get_some_values (id, wv);
   if (got_some)
     {
       Lisp_Object text_field_callback;
       char *text_field_value = wv->value;
       VOID_TO_LISP (text_field_callback, wv->call_data);
-      text_field_callback = XCAR (XCDR (text_field_callback));
       if (text_field_value)
 	{
-	  void *tmp =
-	    LISP_TO_VOID (cons3 (Qnil,
-				 list2 (text_field_callback,
-					build_string (text_field_value)),
-				 Qnil));
+	  void *tmp = LISP_TO_VOID (list2 (text_field_callback,
+                                           build_string (text_field_value)));
 	  popup_selection_callback (0, id, (XtPointer) tmp);
+	  xfree (text_field_value);
 	}
     }
-  /* This code tried to optimize, newing/freeing. This is generally
-     unsafe so we will alwats strdup and always use
-     free_widget_value_tree. */
-  free_widget_value_tree (wv);
+  free_widget_value (wv);
 }
 
 static void
@@ -106,7 +100,7 @@
     lw_set_keyboard_focus (FRAME_X_SHELL_WIDGET (f), FRAME_X_TEXT_WIDGET (f));
 }
 
-static const char * const button_names [] = {
+static CONST char * CONST button_names [] = {
   "button1", "button2", "button3", "button4", "button5",
   "button6", "button7", "button8", "button9", "button10" };
 
@@ -126,7 +120,7 @@
   widget_value *prev = 0, *kids = 0;
   int n = 0;
   int count = specpdl_depth ();
-  Lisp_Object wv_closure, gui_item;
+  Lisp_Object wv_closure;
 
   CHECK_CONS (desc);
   CHECK_STRING (XCAR (desc));
@@ -150,7 +144,7 @@
 
   wv_closure = make_opaque_ptr (kids);
   record_unwind_protect (widget_value_unwind, wv_closure);
-  prev->name = xstrdup ("message");
+  prev->name = (char *) "message";
   prev->value = xstrdup (name);
   prev->enabled = 1;
 
@@ -169,11 +163,9 @@
       CHECK_VECTOR (button);
       wv = xmalloc_widget_value ();
 
-      gui_item = gui_parse_item_keywords (button);
-      if (!button_item_to_widget_value (Qdialog,
-					gui_item, wv, allow_text_p, 1, 0))
+      if (!button_item_to_widget_value (button, wv, allow_text_p, 1))
 	{
-	  free_widget_value_tree (wv);
+	  free_widget_value (wv);
 	  continue;
 	}
 
@@ -185,9 +177,8 @@
       else			/* it's a button */
 	{
 	  allow_text_p = 0;	 /* only allow text field at the front */
-	  if (wv->value)	xfree (wv->value);
-	  wv->value = wv->name;	/* what a mess... */
-	  wv->name = xstrdup (button_names [n]);
+	  wv->value = xstrdup (wv->name);	/* what a mess... */
+	  wv->name = (char *) button_names [n];
 
 	  if (partition_seen)
 	    rbuttons++;
@@ -210,7 +201,7 @@
     widget_value *dbox;
     sprintf (tmp_dbox_name, "%c%dBR%d", type, lbuttons + rbuttons, rbuttons);
     dbox = xmalloc_widget_value ();
-    dbox->name = xstrdup (tmp_dbox_name);
+    dbox->name = tmp_dbox_name;
     dbox->contents = kids;
 
     /* No more need to free the half-filled-in structures. */