comparison src/glyphs-x.c @ 4981:4aebb0131297

Cleanups/renaming of EXTERNAL_TO_C_STRING and friends -------------------- ChangeLog entries follow: -------------------- modules/ChangeLog addition: 2010-02-05 Ben Wing <ben@xemacs.org> * postgresql/postgresql.c: * postgresql/postgresql.c (CHECK_LIVE_CONNECTION): * postgresql/postgresql.c (Fpq_connectdb): * postgresql/postgresql.c (Fpq_connect_start): * postgresql/postgresql.c (Fpq_lo_import): * postgresql/postgresql.c (Fpq_lo_export): * ldap/eldap.c (Fldap_open): * ldap/eldap.c (Fldap_search_basic): * ldap/eldap.c (Fldap_add): * ldap/eldap.c (Fldap_modify): * ldap/eldap.c (Fldap_delete): * canna/canna_api.c (Fcanna_initialize): * canna/canna_api.c (Fcanna_store_yomi): * canna/canna_api.c (Fcanna_parse): * canna/canna_api.c (Fcanna_henkan_begin): EXTERNAL_TO_C_STRING returns its argument instead of storing it in a parameter, and is renamed to EXTERNAL_TO_ITEXT. Similar things happen to related macros. See entry in src/ChangeLog. More Mule-izing of postgresql.c. Extract out common code between `pq-connectdb' and `pq-connect-start'. Fix places that signal an error string using a formatted string to instead follow the standard and have a fixed reason followed by the particular error message stored as one of the frobs. src/ChangeLog addition: 2010-02-05 Ben Wing <ben@xemacs.org> * console-msw.c (write_string_to_mswindows_debugging_output): * console-msw.c (Fmswindows_message_box): * console-x.c (x_perhaps_init_unseen_key_defaults): * console.c: * database.c (dbm_get): * database.c (dbm_put): * database.c (dbm_remove): * database.c (berkdb_get): * database.c (berkdb_put): * database.c (berkdb_remove): * database.c (Fopen_database): * device-gtk.c (gtk_init_device): * device-msw.c (msprinter_init_device_internal): * device-msw.c (msprinter_default_printer): * device-msw.c (msprinter_init_device): * device-msw.c (sync_printer_with_devmode): * device-msw.c (Fmsprinter_select_settings): * device-x.c (sanity_check_geometry_resource): * device-x.c (Dynarr_add_validified_lisp_string): * device-x.c (x_init_device): * device-x.c (Fx_put_resource): * device-x.c (Fx_valid_keysym_name_p): * device-x.c (Fx_set_font_path): * dialog-msw.c (push_lisp_string_as_unicode): * dialog-msw.c (handle_directory_dialog_box): * dialog-msw.c (handle_file_dialog_box): * dialog-x.c (dbox_descriptor_to_widget_value): * editfns.c (Fformat_time_string): * editfns.c (Fencode_time): * editfns.c (Fset_time_zone_rule): * emacs.c (make_argc_argv): * emacs.c (Fdump_emacs): * emodules.c (emodules_load): * eval.c: * eval.c (maybe_signal_error_1): * event-msw.c (Fdde_alloc_advise_item): * event-msw.c (mswindows_dde_callback): * event-msw.c (mswindows_wnd_proc): * fileio.c (report_error_with_errno): * fileio.c (Fsysnetunam): * fileio.c (Fdo_auto_save): * font-mgr.c (extract_fcapi_string): * font-mgr.c (Ffc_config_app_font_add_file): * font-mgr.c (Ffc_config_app_font_add_dir): * font-mgr.c (Ffc_config_filename): * frame-gtk.c (gtk_set_frame_text_value): * frame-gtk.c (gtk_create_widgets): * frame-msw.c (mswindows_init_frame_1): * frame-msw.c (mswindows_set_title_from_ibyte): * frame-msw.c (msprinter_init_frame_3): * frame-x.c (x_set_frame_text_value): * frame-x.c (x_set_frame_properties): * frame-x.c (start_drag_internal_1): * frame-x.c (x_cde_transfer_callback): * frame-x.c (x_create_widgets): * glyphs-eimage.c (my_jpeg_output_message): * glyphs-eimage.c (jpeg_instantiate): * glyphs-eimage.c (gif_instantiate): * glyphs-eimage.c (png_instantiate): * glyphs-eimage.c (tiff_instantiate): * glyphs-gtk.c (xbm_instantiate_1): * glyphs-gtk.c (gtk_xbm_instantiate): * glyphs-gtk.c (gtk_xpm_instantiate): * glyphs-gtk.c (gtk_xface_instantiate): * glyphs-gtk.c (cursor_font_instantiate): * glyphs-gtk.c (gtk_redisplay_widget): * glyphs-gtk.c (gtk_widget_instantiate_1): * glyphs-gtk.c (gtk_add_tab_item): * glyphs-msw.c (mswindows_xpm_instantiate): * glyphs-msw.c (bmp_instantiate): * glyphs-msw.c (mswindows_resource_instantiate): * glyphs-msw.c (xbm_instantiate_1): * glyphs-msw.c (mswindows_xbm_instantiate): * glyphs-msw.c (mswindows_xface_instantiate): * glyphs-msw.c (mswindows_redisplay_widget): * glyphs-msw.c (mswindows_widget_instantiate): * glyphs-msw.c (add_tree_item): * glyphs-msw.c (add_tab_item): * glyphs-msw.c (mswindows_combo_box_instantiate): * glyphs-msw.c (mswindows_widget_query_string_geometry): * glyphs-x.c (x_locate_pixmap_file): * glyphs-x.c (xbm_instantiate_1): * glyphs-x.c (x_xbm_instantiate): * glyphs-x.c (extract_xpm_color_names): * glyphs-x.c (x_xpm_instantiate): * glyphs-x.c (x_xface_instantiate): * glyphs-x.c (autodetect_instantiate): * glyphs-x.c (safe_XLoadFont): * glyphs-x.c (cursor_font_instantiate): * glyphs-x.c (x_redisplay_widget): * glyphs-x.c (Fchange_subwindow_property): * glyphs-x.c (x_widget_instantiate): * glyphs-x.c (x_tab_control_redisplay): * glyphs.c (pixmap_to_lisp_data): * gui-x.c (menu_separator_style_and_to_external): * gui-x.c (add_accel_and_to_external): * gui-x.c (button_item_to_widget_value): * hpplay.c (player_error_internal): * hpplay.c (play_sound_file): * hpplay.c (play_sound_data): * intl.c (Fset_current_locale): * lisp.h: * menubar-gtk.c (gtk_xemacs_set_accel_keys): * menubar-msw.c (populate_menu_add_item): * menubar-msw.c (populate_or_checksum_helper): * menubar-x.c (menu_item_descriptor_to_widget_value_1): * nt.c (init_user_info): * nt.c (get_long_basename): * nt.c (nt_get_resource): * nt.c (init_mswindows_environment): * nt.c (get_cached_volume_information): * nt.c (mswindows_readdir): * nt.c (read_unc_volume): * nt.c (mswindows_stat): * nt.c (mswindows_getdcwd): * nt.c (mswindows_executable_type): * nt.c (Fmswindows_short_file_name): * ntplay.c (nt_play_sound_file): * objects-gtk.c: * objects-gtk.c (gtk_valid_color_name_p): * objects-gtk.c (gtk_initialize_font_instance): * objects-gtk.c (gtk_font_list): * objects-msw.c (font_enum_callback_2): * objects-msw.c (parse_font_spec): * objects-x.c (x_parse_nearest_color): * objects-x.c (x_valid_color_name_p): * objects-x.c (x_initialize_font_instance): * objects-x.c (x_font_instance_truename): * objects-x.c (x_font_list): * objects-xlike-inc.c (XFUN): * objects-xlike-inc.c (xft_find_charset_font): * process-nt.c (mswindows_report_winsock_error): * process-nt.c (nt_create_process): * process-nt.c (get_internet_address): * process-nt.c (nt_open_network_stream): * process-unix.c: * process-unix.c (allocate_pty): * process-unix.c (get_internet_address): * process-unix.c (unix_canonicalize_host_name): * process-unix.c (unix_open_network_stream): * realpath.c: * select-common.h (lisp_data_to_selection_data): * select-gtk.c (symbol_to_gtk_atom): * select-gtk.c (atom_to_symbol): * select-msw.c (symbol_to_ms_cf): * select-msw.c (mswindows_register_selection_data_type): * select-x.c (symbol_to_x_atom): * select-x.c (x_atom_to_symbol): * select-x.c (hack_motif_clipboard_selection): * select-x.c (Fx_store_cutbuffer_internal): * sound.c (Fplay_sound_file): * sound.c (Fplay_sound): * sound.h (sound_perror): * sysdep.c: * sysdep.c (qxe_allocating_getcwd): * sysdep.c (qxe_execve): * sysdep.c (copy_in_passwd): * sysdep.c (qxe_getpwnam): * sysdep.c (qxe_ctime): * sysdll.c (dll_open): * sysdll.c (dll_function): * sysdll.c (dll_variable): * sysdll.c (search_linked_libs): * sysdll.c (dll_error): * sysfile.h: * sysfile.h (PATHNAME_CONVERT_OUT_TSTR): * sysfile.h (PATHNAME_CONVERT_OUT_UTF_8): * sysfile.h (PATHNAME_CONVERT_OUT): * sysfile.h (LISP_PATHNAME_CONVERT_OUT): * syswindows.h (ITEXT_TO_TSTR): * syswindows.h (LOCAL_FILE_FORMAT_TO_TSTR): * syswindows.h (TSTR_TO_LOCAL_FILE_FORMAT): * syswindows.h (LOCAL_FILE_FORMAT_TO_INTERNAL_MSWIN): * syswindows.h (LISP_LOCAL_FILE_FORMAT_MAYBE_URL_TO_TSTR): * text.h: * text.h (eicpy_ext_len): * text.h (enum new_dfc_src_type): * text.h (EXTERNAL_TO_ITEXT): * text.h (GET_STRERROR): * tooltalk.c (check_status): * tooltalk.c (Fadd_tooltalk_message_arg): * tooltalk.c (Fadd_tooltalk_pattern_attribute): * tooltalk.c (Fadd_tooltalk_pattern_arg): * win32.c (tstr_to_local_file_format): * win32.c (mswindows_lisp_error_1): * win32.c (mswindows_report_process_error): * win32.c (Fmswindows_shell_execute): * win32.c (mswindows_read_link_1): Changes involving external/internal format conversion, mostly code cleanup and renaming. 1. Eliminate the previous macros like LISP_STRING_TO_EXTERNAL that stored its result in a parameter. The new version of LISP_STRING_TO_EXTERNAL returns its result through the return value, same as the previous NEW_LISP_STRING_TO_EXTERNAL. Use the new-style macros throughout the code. 2. Rename C_STRING_TO_EXTERNAL and friends to ITEXT_TO_EXTERNAL, in keeping with overall naming rationalization involving Itext and related types. Macros involved in previous two: EXTERNAL_TO_C_STRING -> EXTERNAL_TO_ITEXT EXTERNAL_TO_C_STRING_MALLOC -> EXTERNAL_TO_ITEXT_MALLOC SIZED_EXTERNAL_TO_C_STRING -> SIZED_EXTERNAL_TO_ITEXT SIZED_EXTERNAL_TO_C_STRING_MALLOC -> SIZED_EXTERNAL_TO_ITEXT_MALLOC C_STRING_TO_EXTERNAL -> ITEXT_TO_EXTERNAL C_STRING_TO_EXTERNAL_MALLOC -> ITEXT_TO_EXTERNAL_MALLOC LISP_STRING_TO_EXTERNAL LISP_STRING_TO_EXTERNAL_MALLOC LISP_STRING_TO_TSTR C_STRING_TO_TSTR -> ITEXT_TO_TSTR TSTR_TO_C_STRING -> TSTR_TO_ITEXT The following four still return their values through parameters, since they have more than one value to return: C_STRING_TO_SIZED_EXTERNAL -> ITEXT_TO_SIZED_EXTERNAL LISP_STRING_TO_SIZED_EXTERNAL C_STRING_TO_SIZED_EXTERNAL_MALLOC -> ITEXT_TO_SIZED_EXTERNAL_MALLOC LISP_STRING_TO_SIZED_EXTERNAL_MALLOC Sometimes additional casts had to be inserted, since the old macros played strange games and completely defeated the type system of the store params. 3. Rewrite many places where direct calls to TO_EXTERNAL_FORMAT occurred with calls to one of the convenience macros listed above, or to make_extstring(). 4. Eliminate SIZED_C_STRING macros (they were hardly used, anyway) and use a direct call to TO_EXTERNAL_FORMAT or TO_INTERNAL_FORMAT. 4. Use LISP_PATHNAME_CONVERT_OUT in many places instead of something like LISP_STRING_TO_EXTERNAL(..., Qfile_name). 5. Eliminate some temporary variables that are no longer necessary now that we return a value rather than storing it into a variable. 6. Some Mule-izing in database.c. 7. Error functions: -- A bit of code cleanup in maybe_signal_error_1. -- Eliminate report_file_type_error; it's just an alias for signal_error_2 with params in a different order. -- Fix some places in the hostname-handling code that directly inserted externally-retrieved error strings into the supposed ASCII "reason" param instead of doing the right thing and sticking text descriptive of what was going on in "reason" and putting the external message in a frob. 8. Use Ascbyte instead of CIbyte in process-unix.c and maybe one or two other places. 9. Some code cleanup in copy_in_passwd() in sysdep.c. 10. Fix a real bug due to accidental variable shadowing in tstr_to_local_file_format() in win32.c.
author Ben Wing <ben@xemacs.org>
date Fri, 05 Feb 2010 11:02:24 -0600
parents cbe181529c34
children 3c3c1d139863
comparison
equal deleted inserted replaced
4972:c448f4c38d65 4981:4aebb0131297
592 if (path) 592 if (path)
593 { 593 {
594 Extbyte *pathext; 594 Extbyte *pathext;
595 SubstitutionRec subs[1]; 595 SubstitutionRec subs[1];
596 subs[0].match = 'B'; 596 subs[0].match = 'B';
597 LISP_STRING_TO_EXTERNAL (name, subs[0].substitution, Qfile_name); 597 LISP_PATHNAME_CONVERT_OUT (name, subs[0].substitution);
598 C_STRING_TO_EXTERNAL (path, pathext, Qfile_name); 598 pathext = ITEXT_TO_EXTERNAL (path, Qfile_name);
599 /* #### Motif uses a big hairy default if $XBMLANGPATH isn't set. 599 /* #### Motif uses a big hairy default if $XBMLANGPATH isn't set.
600 We don't. If you want it used, set it. */ 600 We don't. If you want it used, set it. */
601 if (pathext && 601 if (pathext &&
602 (pathext = XtResolvePathname (display, "bitmaps", 0, 0, pathext, 602 (pathext = XtResolvePathname (display, "bitmaps", 0, 0, pathext,
603 subs, XtNumber (subs), 0))) 603 subs, XtNumber (subs), 0)))
618 "bitmapFilePath", "BitmapFilePath", &type, &value) 618 "bitmapFilePath", "BitmapFilePath", &type, &value)
619 && !strcmp (type, "String")) 619 && !strcmp (type, "String"))
620 { 620 {
621 Ibyte *path; 621 Ibyte *path;
622 622
623 EXTERNAL_TO_C_STRING (value.addr, path, Qfile_name); 623 path = EXTERNAL_TO_ITEXT (value.addr, Qfile_name);
624 Vx_bitmap_file_path = split_env_path (0, path); 624 Vx_bitmap_file_path = split_env_path (0, path);
625 } 625 }
626 Vx_bitmap_file_path = nconc2 (Vx_bitmap_file_path, 626 Vx_bitmap_file_path = nconc2 (Vx_bitmap_file_path,
627 (split_external_path (BITMAPDIR))); 627 (split_external_path (BITMAPDIR)));
628 } 628 }
1226 1226
1227 if (!NILP (mask_data)) 1227 if (!NILP (mask_data))
1228 { 1228 {
1229 CBinbyte *ext_data; 1229 CBinbyte *ext_data;
1230 1230
1231 LISP_STRING_TO_EXTERNAL (XCAR (XCDR (XCDR (mask_data))), ext_data, 1231 ext_data = LISP_STRING_TO_EXTERNAL (XCAR (XCDR (XCDR (mask_data))),
1232 Qbinary); 1232 Qbinary);
1233 mask = pixmap_from_xbm_inline (IMAGE_INSTANCE_DEVICE (ii), 1233 mask = pixmap_from_xbm_inline (IMAGE_INSTANCE_DEVICE (ii),
1234 XINT (XCAR (mask_data)), 1234 XINT (XCAR (mask_data)),
1235 XINT (XCAR (XCDR (mask_data))), 1235 XINT (XCAR (XCDR (mask_data))),
1236 ext_data); 1236 ext_data);
1237 } 1237 }
1251 Lisp_Object data = find_keyword_in_vector (instantiator, Q_data); 1251 Lisp_Object data = find_keyword_in_vector (instantiator, Q_data);
1252 CBinbyte *ext_data; 1252 CBinbyte *ext_data;
1253 1253
1254 assert (!NILP (data)); 1254 assert (!NILP (data));
1255 1255
1256 LISP_STRING_TO_EXTERNAL (XCAR (XCDR (XCDR (data))), ext_data, Qbinary); 1256 ext_data = LISP_STRING_TO_EXTERNAL (XCAR (XCDR (XCDR (data))), Qbinary);
1257 1257
1258 xbm_instantiate_1 (image_instance, instantiator, pointer_fg, 1258 xbm_instantiate_1 (image_instance, instantiator, pointer_fg,
1259 pointer_bg, dest_mask, XINT (XCAR (data)), 1259 pointer_bg, dest_mask, XINT (XCAR (data)),
1260 XINT (XCAR (XCDR (data))), ext_data); 1260 XINT (XCAR (XCDR (data))), ext_data);
1261 } 1261 }
1336 /* Duplicate the pixel value so that we still have a lock on it if 1336 /* Duplicate the pixel value so that we still have a lock on it if
1337 the pixel we were passed is later freed. */ 1337 the pixel we were passed is later freed. */
1338 if (! XAllocColor (dpy, cmap, &color)) 1338 if (! XAllocColor (dpy, cmap, &color))
1339 ABORT (); /* it must be allocable since we're just duplicating it */ 1339 ABORT (); /* it must be allocable since we're just duplicating it */
1340 1340
1341 TO_EXTERNAL_FORMAT (LISP_STRING, XCAR (cons), C_STRING_MALLOC, 1341
1342 symbols[i].name, Qctext); 1342 symbols[i].name = LISP_STRING_TO_EXTERNAL_MALLOC (XCAR (cons), Qctext);
1343 symbols[i].pixel = color.pixel; 1343 symbols[i].pixel = color.pixel;
1344 symbols[i].value = 0; 1344 symbols[i].value = 0;
1345 free_cons (cons); 1345 free_cons (cons);
1346 cons = results; 1346 cons = results;
1347 results = XCDR (results); 1347 results = XCDR (results);
1458 color_symbol_alist); 1458 color_symbol_alist);
1459 1459
1460 { 1460 {
1461 Extbyte *dataext; 1461 Extbyte *dataext;
1462 1462
1463 LISP_STRING_TO_EXTERNAL (data, dataext, Qctext); 1463 dataext = LISP_STRING_TO_EXTERNAL (data, Qctext);
1464 1464
1465 result = 1465 result =
1466 XpmCreatePixmapFromBuffer (dpy, 1466 XpmCreatePixmapFromBuffer (dpy,
1467 XtWindow 1467 XtWindow
1468 (DEVICE_XT_APP_SHELL (XDEVICE(device))), 1468 (DEVICE_XT_APP_SHELL (XDEVICE(device))),
1610 const CIbyte * volatile emsg = 0; 1610 const CIbyte * volatile emsg = 0;
1611 const Binbyte * volatile dstring; 1611 const Binbyte * volatile dstring;
1612 1612
1613 assert (!NILP (data)); 1613 assert (!NILP (data));
1614 1614
1615 TO_EXTERNAL_FORMAT (LISP_STRING, data, 1615 dstring = (const Binbyte *) LISP_STRING_TO_EXTERNAL (data, Qbinary);
1616 C_STRING_ALLOCA, dstring,
1617 Qbinary);
1618 1616
1619 if ((p = (Binbyte *) strchr ((char *) dstring, ':'))) 1617 if ((p = (Binbyte *) strchr ((char *) dstring, ':')))
1620 { 1618 {
1621 dstring = p + 1; 1619 dstring = p + 1;
1622 } 1620 }
1785 1783
1786 alist = tagged_vector_to_alist (instantiator); 1784 alist = tagged_vector_to_alist (instantiator);
1787 if (dest_mask & IMAGE_POINTER_MASK) 1785 if (dest_mask & IMAGE_POINTER_MASK)
1788 { 1786 {
1789 const char *name_ext; 1787 const char *name_ext;
1790 LISP_STRING_TO_EXTERNAL (data, name_ext, Qfile_name); 1788 LISP_PATHNAME_CONVERT_OUT (data, name_ext);
1791 if (XmuCursorNameToIndex (name_ext) != -1) 1789 if (XmuCursorNameToIndex (name_ext) != -1)
1792 { 1790 {
1793 result = alist_to_tagged_vector (Qcursor_font, alist); 1791 result = alist_to_tagged_vector (Qcursor_font, alist);
1794 is_cursor_font = 1; 1792 is_cursor_font = 1;
1795 } 1793 }
1849 static Font 1847 static Font
1850 safe_XLoadFont (Display *dpy, Ibyte *name) 1848 safe_XLoadFont (Display *dpy, Ibyte *name)
1851 { 1849 {
1852 Font font; 1850 Font font;
1853 int (*old_handler) (Display *, XErrorEvent *); 1851 int (*old_handler) (Display *, XErrorEvent *);
1854 Extbyte *nameext;
1855 1852
1856 XLoadFont_got_error = 0; 1853 XLoadFont_got_error = 0;
1857 XSync (dpy, 0); 1854 XSync (dpy, 0);
1858 old_handler = XSetErrorHandler (XLoadFont_error_handler); 1855 old_handler = XSetErrorHandler (XLoadFont_error_handler);
1859 C_STRING_TO_EXTERNAL (name, nameext, Qfile_name); 1856 font = XLoadFont (dpy, ITEXT_TO_EXTERNAL (name, Qfile_name));
1860 font = XLoadFont (dpy, nameext);
1861 XSync (dpy, 0); 1857 XSync (dpy, 0);
1862 XSetErrorHandler (old_handler); 1858 XSetErrorHandler (old_handler);
1863 if (XLoadFont_got_error) return 0; 1859 if (XLoadFont_got_error) return 0;
1864 return font; 1860 return font;
1865 } 1861 }
1988 dpy = DEVICE_X_DISPLAY (XDEVICE (device)); 1984 dpy = DEVICE_X_DISPLAY (XDEVICE (device));
1989 1985
1990 if (!(dest_mask & IMAGE_POINTER_MASK)) 1986 if (!(dest_mask & IMAGE_POINTER_MASK))
1991 incompatible_image_types (instantiator, dest_mask, IMAGE_POINTER_MASK); 1987 incompatible_image_types (instantiator, dest_mask, IMAGE_POINTER_MASK);
1992 1988
1993 LISP_STRING_TO_EXTERNAL (data, name_ext, Qfile_name); 1989 LISP_PATHNAME_CONVERT_OUT (data, name_ext);
1994 if ((i = XmuCursorNameToIndex (name_ext)) == -1) 1990 if ((i = XmuCursorNameToIndex (name_ext)) == -1)
1995 invalid_argument ("Unrecognized cursor-font name", data); 1991 invalid_argument ("Unrecognized cursor-font name", data);
1996 1992
1997 x_initialize_pixmap_image_instance (ii, 1, IMAGE_POINTER); 1993 x_initialize_pixmap_image_instance (ii, 1, IMAGE_POINTER);
1998 IMAGE_INSTANCE_X_CURSOR (ii) = XCreateFontCursor (dpy, i); 1994 IMAGE_INSTANCE_X_CURSOR (ii) = XCreateFontCursor (dpy, i);
2199 /* Possibly update the text. */ 2195 /* Possibly update the text. */
2200 if (IMAGE_INSTANCE_TEXT_CHANGED (p)) 2196 if (IMAGE_INSTANCE_TEXT_CHANGED (p))
2201 { 2197 {
2202 Extbyte* str; 2198 Extbyte* str;
2203 Lisp_Object val = IMAGE_INSTANCE_WIDGET_TEXT (p); 2199 Lisp_Object val = IMAGE_INSTANCE_WIDGET_TEXT (p);
2204 LISP_STRING_TO_EXTERNAL (val, str, Qlwlib_encoding); 2200 str = LISP_STRING_TO_EXTERNAL (val, Qlwlib_encoding);
2205 wv->value = str; 2201 wv->value = str;
2206 } 2202 }
2207 2203
2208 /* Possibly update the size. */ 2204 /* Possibly update the size. */
2209 if (IMAGE_INSTANCE_SIZE_CHANGED (p) 2205 if (IMAGE_INSTANCE_SIZE_CHANGED (p)
2331 sw = XSUBWINDOW (subwindow); 2327 sw = XSUBWINDOW (subwindow);
2332 dpy = DisplayOfScreen (LISP_DEVICE_TO_X_SCREEN 2328 dpy = DisplayOfScreen (LISP_DEVICE_TO_X_SCREEN
2333 (FRAME_DEVICE (XFRAME (sw->frame)))); 2329 (FRAME_DEVICE (XFRAME (sw->frame))));
2334 2330
2335 LISP_TO_EXTERNAL (property, propext, Qctext); 2331 LISP_TO_EXTERNAL (property, propext, Qctext);
2336 TO_EXTERNAL_FORMAT (LISP_STRING, data, 2332 LISP_STRING_TO_SIZED_EXTERNAL (data, dataext, datalen, Qctext);
2337 ALLOCA, (dataext, datalen), Qctext);
2338 property_atom = XInternAtom (dpy, propext, False); 2333 property_atom = XInternAtom (dpy, propext, False);
2339 XChangeProperty (dpy, sw->subwindow, property_atom, XA_STRING, 8, 2334 XChangeProperty (dpy, sw->subwindow, property_atom, XA_STRING, 8,
2340 PropModeReplace, dataext, datalen); 2335 PropModeReplace, dataext, datalen);
2341 return property; 2336 return property;
2342 } 2337 }
2467 instantiation for a widget. But we can go ahead and do it without 2462 instantiation for a widget. But we can go ahead and do it without
2468 checking because there is always a generic instantiator. */ 2463 checking because there is always a generic instantiator. */
2469 IMAGE_INSTANCE_TYPE (ii) = IMAGE_WIDGET; 2464 IMAGE_INSTANCE_TYPE (ii) = IMAGE_WIDGET;
2470 2465
2471 if (!NILP (IMAGE_INSTANCE_WIDGET_TEXT (ii))) 2466 if (!NILP (IMAGE_INSTANCE_WIDGET_TEXT (ii)))
2472 LISP_STRING_TO_EXTERNAL (IMAGE_INSTANCE_WIDGET_TEXT (ii), nm, 2467 nm = LISP_STRING_TO_EXTERNAL (IMAGE_INSTANCE_WIDGET_TEXT (ii),
2473 Qlwlib_encoding); 2468 Qlwlib_encoding);
2474 2469
2475 ii->data = xnew_and_zero (struct x_subwindow_data); 2470 ii->data = xnew_and_zero (struct x_subwindow_data);
2476 2471
2477 /* Create a clip window to contain the subwidget. Incredibly the 2472 /* Create a clip window to contain the subwidget. Incredibly the
2478 XEmacs manager seems to be the most appropriate widget for 2473 XEmacs manager seems to be the most appropriate widget for
2774 (XCDR (IMAGE_INSTANCE_WIDGET_ITEMS (ii))); 2769 (XCDR (IMAGE_INSTANCE_WIDGET_ITEMS (ii)));
2775 char* name; 2770 char* name;
2776 unsigned int num_children, i; 2771 unsigned int num_children, i;
2777 Widget* children; 2772 Widget* children;
2778 2773
2779 LISP_STRING_TO_EXTERNAL (XGUI_ITEM (XCAR (rest))->name, 2774 name =
2780 name, Qlwlib_encoding); 2775 LISP_STRING_TO_EXTERNAL (XGUI_ITEM (XCAR (rest))->name,
2776 Qlwlib_encoding);
2781 /* The name may contain a `.' which confuses 2777 /* The name may contain a `.' which confuses
2782 XtNameToWidget, so we do it ourselves. */ 2778 XtNameToWidget, so we do it ourselves. */
2783 children = 2779 children =
2784 XtCompositeChildren (IMAGE_INSTANCE_X_WIDGET_ID (ii), 2780 XtCompositeChildren (IMAGE_INSTANCE_X_WIDGET_ID (ii),
2785 &num_children); 2781 &num_children);