# HG changeset patch # User Eli Zaretskii # Date 1014386897 0 # Node ID aa52a9cea9f85d5b33009de817dad97d2cd66b96 # Parent d242c8e8b2a0ed0d1d5407395bfaebaee420c42d (Fw16_set_clipboard_data): Run pre-write-conversion on the string before encoding it. (Fw16_get_clipboard_data): Run post-read-conversion on the string after decoding it. diff -r d242c8e8b2a0 -r aa52a9cea9f8 src/w16select.c --- a/src/w16select.c Fri Feb 22 13:49:56 2002 +0000 +++ b/src/w16select.c Fri Feb 22 14:08:17 2002 +0000 @@ -492,14 +492,14 @@ int no_crlf_conversion; CHECK_STRING (string); - + if (NILP (frame)) frame = Fselected_frame (); CHECK_LIVE_FRAME (frame); if ( !FRAME_MSDOS_P (XFRAME (frame))) goto done; - + BLOCK_INPUT; nbytes = STRING_BYTES (XSTRING (string)); @@ -528,6 +528,13 @@ Vnext_selection_coding_system = Vselection_coding_system; setup_coding_system (Fcheck_coding_system (Vnext_selection_coding_system), &coding); + if (SYMBOLP (coding.pre_write_conversion) + && !NILP (Ffboundp (coding.pre_write_conversion))) + { + string = run_pre_post_conversion_on_str (string, &coding, 1); + src = XSTRING (string)->data; + nbytes = STRING_BYTES (XSTRING (string)); + } coding.src_multibyte = 1; coding.dst_multibyte = 0; Vnext_selection_coding_system = Qnil; @@ -543,7 +550,7 @@ if (!open_clipboard ()) goto error; - + ok = empty_clipboard () && ((put_status = set_clipboard_data (CF_OEMTEXT, src, nbytes, no_crlf_conversion)) @@ -552,11 +559,11 @@ if (!no_crlf_conversion) Vlast_coding_system_used = Qraw_text; close_clipboard (); - + if (ok) goto unblock; error: - + ok = 0; unblock: @@ -585,7 +592,7 @@ } sit_for (2, 0, 0, 1, 1); } - + done: return (ok && put_status == 0 ? string : Qnil); @@ -608,9 +615,9 @@ CHECK_LIVE_FRAME (frame); if ( !FRAME_MSDOS_P (XFRAME (frame))) goto done; - + BLOCK_INPUT; - + if (!open_clipboard ()) goto unblock; @@ -625,27 +632,20 @@ goto closeclip; /* Do we need to decode it? */ - if ( -#if 1 - 1 -#else - ! NILP (buffer_defaults.enable_multibyte_characters) -#endif - ) - { - /* If the clipboard data contains any 8-bit Latin-1 code, we - need to decode it. */ - int i; + { + /* If the clipboard data contains any 8-bit Latin-1 code, we + need to decode it. */ + int i; - for (i = 0; i < truelen; i++) - { - if (htext[i] >= 0x80) - { - require_encoding = 1; - break; - } - } - } + for (i = 0; i < truelen; i++) + { + if (htext[i] >= 0x80) + { + require_encoding = 1; + break; + } + } + } if (require_encoding) { int bufsize; @@ -667,6 +667,9 @@ ret = make_string_from_bytes ((char *) buf, coding.produced_char, coding.produced); xfree (buf); + if (SYMBOLP (coding.post_read_conversion) + && !NILP (Ffboundp (coding.post_read_conversion))) + ret = run_pre_post_conversion_on_str (ret, coding, 0); Vlast_coding_system_used = coding.symbol; } else