comparison src/glyphs-msw.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 19a72041c5ed
children 3c3c1d139863
comparison
equal deleted inserted replaced
4972:c448f4c38d65 4981:4aebb0131297
966 966
967 CHECK_MSGDI_DEVICE (device); 967 CHECK_MSGDI_DEVICE (device);
968 968
969 assert (!NILP (data)); 969 assert (!NILP (data));
970 970
971 TO_EXTERNAL_FORMAT (LISP_STRING, data, 971 LISP_STRING_TO_SIZED_EXTERNAL (data, bytes, len, Qbinary);
972 ALLOCA, (bytes, len),
973 Qbinary);
974 972
975 /* in case we have color symbols */ 973 /* in case we have color symbols */
976 color_symbols = extract_xpm_color_names (device, domain, 974 color_symbols = extract_xpm_color_names (device, domain,
977 color_symbol_alist, &nsymbols); 975 color_symbol_alist, &nsymbols);
978 976
1053 1051
1054 CHECK_MSGDI_DEVICE (device); 1052 CHECK_MSGDI_DEVICE (device);
1055 1053
1056 assert (!NILP (data)); 1054 assert (!NILP (data));
1057 1055
1058 TO_EXTERNAL_FORMAT (LISP_STRING, data, 1056 LISP_STRING_TO_SIZED_EXTERNAL (data, bytes, len, Qbinary);
1059 ALLOCA, (bytes, len),
1060 Qbinary);
1061 1057
1062 /* Then slurp the image into memory, decoding along the way. 1058 /* Then slurp the image into memory, decoding along the way.
1063 The result is the image in a simple one-byte-per-pixel 1059 The result is the image in a simple one-byte-per-pixel
1064 format. */ 1060 format. */
1065 1061
1252 hinst = qxeLoadLibraryEx (fname, NULL, LOAD_LIBRARY_AS_DATAFILE); 1248 hinst = qxeLoadLibraryEx (fname, NULL, LOAD_LIBRARY_AS_DATAFILE);
1253 resid = MAKEINTRESOURCE (resource_name_to_resource (resource_id, 1249 resid = MAKEINTRESOURCE (resource_name_to_resource (resource_id,
1254 type)); 1250 type));
1255 1251
1256 if (!resid) 1252 if (!resid)
1257 LISP_STRING_TO_TSTR (resource_id, resid); 1253 resid = LISP_STRING_TO_TSTR (resource_id);
1258 } 1254 }
1259 } 1255 }
1260 else if (!(resid = MAKEINTRESOURCE (resource_name_to_resource (resource_id, 1256 else if (!(resid = MAKEINTRESOURCE (resource_name_to_resource (resource_id,
1261 type)))) 1257 type))))
1262 invalid_argument ("Invalid resource identifier", resource_id); 1258 invalid_argument ("Invalid resource identifier", resource_id);
1571 1567
1572 if (!NILP (mask_data)) 1568 if (!NILP (mask_data))
1573 { 1569 {
1574 Binbyte *ext_data; 1570 Binbyte *ext_data;
1575 1571
1576 TO_EXTERNAL_FORMAT (LISP_STRING, XCAR (XCDR (XCDR (mask_data))), 1572 ext_data =
1577 C_STRING_ALLOCA, ext_data, 1573 (Binbyte *) LISP_STRING_TO_EXTERNAL (XCAR (XCDR (XCDR (mask_data))),
1578 Qbinary); 1574 Qbinary);
1579 mask = xbm_create_bitmap_from_data (hdc, 1575 mask = xbm_create_bitmap_from_data (hdc,
1580 ext_data, 1576 ext_data,
1581 XINT (XCAR (mask_data)), 1577 XINT (XCAR (mask_data)),
1582 XINT (XCAR (XCDR (mask_data))), 1578 XINT (XCAR (XCDR (mask_data))),
1583 FALSE, 1579 FALSE,
1601 Lisp_Object data = find_keyword_in_vector (instantiator, Q_data); 1597 Lisp_Object data = find_keyword_in_vector (instantiator, Q_data);
1602 const Binbyte *ext_data; 1598 const Binbyte *ext_data;
1603 1599
1604 assert (!NILP (data)); 1600 assert (!NILP (data));
1605 1601
1606 TO_EXTERNAL_FORMAT (LISP_STRING, XCAR (XCDR (XCDR (data))), 1602 ext_data =
1607 C_STRING_ALLOCA, ext_data, 1603 (const Binbyte *) LISP_STRING_TO_EXTERNAL (XCAR (XCDR (XCDR (data))),
1608 Qbinary); 1604 Qbinary);
1609 1605
1610 xbm_instantiate_1 (image_instance, instantiator, pointer_fg, 1606 xbm_instantiate_1 (image_instance, instantiator, pointer_fg,
1611 pointer_bg, dest_mask, XINT (XCAR (data)), 1607 pointer_bg, dest_mask, XINT (XCAR (data)),
1612 XINT (XCAR (XCDR (data))), ext_data); 1608 XINT (XCAR (XCDR (data))), ext_data);
1613 } 1609 }
1648 const CIbyte * volatile emsg = 0; 1644 const CIbyte * volatile emsg = 0;
1649 const Binbyte * volatile dstring; 1645 const Binbyte * volatile dstring;
1650 1646
1651 assert (!NILP (data)); 1647 assert (!NILP (data));
1652 1648
1653 TO_EXTERNAL_FORMAT (LISP_STRING, data, 1649 dstring = (const Binbyte *) LISP_STRING_TO_EXTERNAL (data, Qbinary);
1654 C_STRING_ALLOCA, dstring,
1655 Qbinary);
1656 1650
1657 if ((p = (Binbyte *) strchr ((char *) dstring, ':'))) 1651 if ((p = (Binbyte *) strchr ((char *) dstring, ':')))
1658 { 1652 {
1659 dstring = p + 1; 1653 dstring = p + 1;
1660 } 1654 }
2030 /* Possibly update the text in the widget. */ 2024 /* Possibly update the text in the widget. */
2031 if (IMAGE_INSTANCE_TEXT_CHANGED (p) 2025 if (IMAGE_INSTANCE_TEXT_CHANGED (p)
2032 && !NILP (IMAGE_INSTANCE_WIDGET_TEXT (p))) 2026 && !NILP (IMAGE_INSTANCE_WIDGET_TEXT (p)))
2033 { 2027 {
2034 Extbyte *lparam = 0; 2028 Extbyte *lparam = 0;
2035 LISP_STRING_TO_TSTR (IMAGE_INSTANCE_WIDGET_TEXT (p), lparam); 2029 lparam = LISP_STRING_TO_TSTR (IMAGE_INSTANCE_WIDGET_TEXT (p));
2036 qxeSendMessage (WIDGET_INSTANCE_MSWINDOWS_HANDLE (p), 2030 qxeSendMessage (WIDGET_INSTANCE_MSWINDOWS_HANDLE (p),
2037 WM_SETTEXT, 0, (LPARAM) lparam); 2031 WM_SETTEXT, 0, (LPARAM) lparam);
2038 } 2032 }
2039 /* Set active state. */ 2033 /* Set active state. */
2040 if (IMAGE_INSTANCE_WIDGET_ITEMS_CHANGED (p)) 2034 if (IMAGE_INSTANCE_WIDGET_ITEMS_CHANGED (p))
2248 { 2242 {
2249 id = mswindows_register_widget_instance (image_instance, domain); 2243 id = mswindows_register_widget_instance (image_instance, domain);
2250 } 2244 }
2251 2245
2252 if (!NILP (IMAGE_INSTANCE_WIDGET_TEXT (ii))) 2246 if (!NILP (IMAGE_INSTANCE_WIDGET_TEXT (ii)))
2253 LISP_STRING_TO_TSTR (IMAGE_INSTANCE_WIDGET_TEXT (ii), nm); 2247 nm = LISP_STRING_TO_TSTR (IMAGE_INSTANCE_WIDGET_TEXT (ii));
2254 2248
2255 /* allocate space for the clip window and then allocate the clip window */ 2249 /* allocate space for the clip window and then allocate the clip window */
2256 ii->data = xnew_and_zero (struct mswindows_subwindow_data); 2250 ii->data = xnew_and_zero (struct mswindows_subwindow_data);
2257 2251
2258 if ((IMAGE_INSTANCE_MSWINDOWS_CLIPWINDOW (ii) 2252 if ((IMAGE_INSTANCE_MSWINDOWS_CLIPWINDOW (ii)
2270 NULL, /* must be null for this class */ 2264 NULL, /* must be null for this class */
2271 NULL)) == NULL) 2265 NULL)) == NULL)
2272 gui_error ("window creation failed with code", 2266 gui_error ("window creation failed with code",
2273 make_int (GetLastError())); 2267 make_int (GetLastError()));
2274 2268
2275 C_STRING_TO_TSTR (class_, classext); 2269 classext = ITEXT_TO_TSTR (class_);
2276 2270
2277 if ((wnd = qxeCreateWindowEx (exflags /* | WS_EX_NOPARENTNOTIFY*/, 2271 if ((wnd = qxeCreateWindowEx (exflags /* | WS_EX_NOPARENTNOTIFY*/,
2278 classext, 2272 classext,
2279 nm, 2273 nm,
2280 flags | WS_CHILD | WS_VISIBLE, 2274 flags | WS_CHILD | WS_VISIBLE,
2484 if (GUI_ITEMP (item)) 2478 if (GUI_ITEMP (item))
2485 { 2479 {
2486 tvitem.item.lParam = 2480 tvitem.item.lParam =
2487 mswindows_register_gui_item (image_instance, item, domain); 2481 mswindows_register_gui_item (image_instance, item, domain);
2488 tvitem.item.mask |= TVIF_PARAM; 2482 tvitem.item.mask |= TVIF_PARAM;
2489 LISP_STRING_TO_TSTR (XGUI_ITEM (item)->name, tvitem.item.pszText); 2483 tvitem.item.pszText =
2484 (LPWSTR) LISP_STRING_TO_TSTR (XGUI_ITEM (item)->name);
2490 } 2485 }
2491 else 2486 else
2492 LISP_STRING_TO_TSTR (item, tvitem.item.pszText); 2487 tvitem.item.pszText = (LPWSTR) LISP_STRING_TO_TSTR (item);
2493 2488
2494 tvitem.item.cchTextMax = qxetcslen ((Extbyte *) tvitem.item.pszText); 2489 tvitem.item.cchTextMax = qxetcslen ((Extbyte *) tvitem.item.pszText);
2495 2490
2496 if ((ret = (HTREEITEM) qxeSendMessage (wnd, TVM_INSERTITEM, 2491 if ((ret = (HTREEITEM) qxeSendMessage (wnd, TVM_INSERTITEM,
2497 0, (LPARAM) &tvitem)) == 0) 2492 0, (LPARAM) &tvitem)) == 0)
2600 if (GUI_ITEMP (item)) 2595 if (GUI_ITEMP (item))
2601 { 2596 {
2602 tcitem.lParam = 2597 tcitem.lParam =
2603 mswindows_register_gui_item (image_instance, item, domain); 2598 mswindows_register_gui_item (image_instance, item, domain);
2604 tcitem.mask |= TCIF_PARAM; 2599 tcitem.mask |= TCIF_PARAM;
2605 LISP_STRING_TO_TSTR (XGUI_ITEM (item)->name, tcitem.pszText); 2600 tcitem.pszText = (XELPTSTR) LISP_STRING_TO_TSTR (XGUI_ITEM (item)->name);
2606 } 2601 }
2607 else 2602 else
2608 { 2603 {
2609 CHECK_STRING (item); 2604 CHECK_STRING (item);
2610 LISP_STRING_TO_TSTR (item, tcitem.pszText); 2605 tcitem.pszText = (XELPTSTR) LISP_STRING_TO_TSTR (item);
2611 } 2606 }
2612 2607
2613 tcitem.cchTextMax = qxetcslen ((Extbyte *) tcitem.pszText); 2608 tcitem.cchTextMax = qxetcslen ((Extbyte *) tcitem.pszText);
2614 2609
2615 if ((ret = qxeSendMessage (wnd, TCM_INSERTITEM, i, (LPARAM) &tcitem)) < 0) 2610 if ((ret = qxeSendMessage (wnd, TCM_INSERTITEM, i, (LPARAM) &tcitem)) < 0)
2811 /* add items to the combo box */ 2806 /* add items to the combo box */
2812 qxeSendMessage (wnd, CB_RESETCONTENT, 0, 0); 2807 qxeSendMessage (wnd, CB_RESETCONTENT, 0, 0);
2813 LIST_LOOP (rest, items) 2808 LIST_LOOP (rest, items)
2814 { 2809 {
2815 Extbyte *lparam; 2810 Extbyte *lparam;
2816 LISP_STRING_TO_TSTR (XCAR (rest), lparam); 2811 lparam = LISP_STRING_TO_TSTR (XCAR (rest));
2817 if (qxeSendMessage (wnd, CB_ADDSTRING, 0, (LPARAM)lparam) == CB_ERR) 2812 if (qxeSendMessage (wnd, CB_ADDSTRING, 0, (LPARAM)lparam) == CB_ERR)
2818 gui_error ("error adding combo entries", instantiator); 2813 gui_error ("error adding combo entries", instantiator);
2819 } 2814 }
2820 } 2815 }
2821 2816
2928 Extbyte *str; 2923 Extbyte *str;
2929 Bytecount len; 2924 Bytecount len;
2930 SIZE size; 2925 SIZE size;
2931 2926
2932 SelectObject (hdc, mswindows_widget_hfont (face, domain, string)); 2927 SelectObject (hdc, mswindows_widget_hfont (face, domain, string));
2933 TO_EXTERNAL_FORMAT (LISP_STRING, string, ALLOCA, (str, len), 2928 LISP_STRING_TO_SIZED_EXTERNAL (string, str, len, Qmswindows_tstr);
2934 Qmswindows_tstr);
2935 qxeGetTextExtentPoint32 (hdc, str, len / XETCHAR_SIZE, &size); 2929 qxeGetTextExtentPoint32 (hdc, str, len / XETCHAR_SIZE, &size);
2936 *width = size.cx; 2930 *width = size.cx;
2937 } 2931 }
2938 } 2932 }
2939 2933