[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] Changes to emacs/src/w32select.c
From: |
Jason Rumney |
Subject: |
[Emacs-diffs] Changes to emacs/src/w32select.c |
Date: |
Sun, 06 Jul 2003 17:58:40 -0400 |
Index: emacs/src/w32select.c
diff -c emacs/src/w32select.c:1.28 emacs/src/w32select.c:1.29
*** emacs/src/w32select.c:1.28 Mon Oct 14 07:01:49 2002
--- emacs/src/w32select.c Sun Jul 6 17:58:40 2003
***************
*** 41,49 ****
/* Coding system for the next communicating with other Windows programs. */
static Lisp_Object Vnext_selection_coding_system;
! /* The last text we put into the clipboard. This is used to prevent
! passing back our own text from the clipboard, instead of using the
! kill ring. The former is undesirable because the clipboard data
could be MULEtilated by inappropriately chosen
(next-)selection-coding-system. For this reason, we must store the
text *after* it was encoded/Unix-to-DOS-converted. */
--- 41,54 ----
/* Coding system for the next communicating with other Windows programs. */
static Lisp_Object Vnext_selection_coding_system;
! /* Sequence number, used where possible to detect when we are pasting
! our own text. */
! static DWORD last_clipboard_sequence_number;
! extern ClipboardSequence_Proc clipboard_sequence_fn;
!
! /* The last text we put into the clipboard. This is used when the OS
! does not support sequence numbers (NT4, 95). It is undesirable to
! use data put on the clipboard by Emacs because the clipboard data
could be MULEtilated by inappropriately chosen
(next-)selection-coding-system. For this reason, we must store the
text *after* it was encoded/Unix-to-DOS-converted. */
***************
*** 217,233 ****
encode_coding (&coding, src, dst, nbytes, bufsize);
Vlast_coding_system_used = coding.symbol;
! /* Stash away the data we are about to put into the clipboard, so we
! could later check inside Fw32_get_clipboard_data whether
! the clipboard still holds our data. */
! if (clipboard_storage_size < coding.produced)
! {
! clipboard_storage_size = coding.produced + 100;
! last_clipboard_text = (char *) xrealloc (last_clipboard_text,
! clipboard_storage_size);
! }
! if (last_clipboard_text)
! memcpy (last_clipboard_text, dst, coding.produced);
GlobalUnlock (htext);
--- 222,244 ----
encode_coding (&coding, src, dst, nbytes, bufsize);
Vlast_coding_system_used = coding.symbol;
! /* If clipboard sequence numbers are not supported, keep a copy for
! later comparison. */
! if (!clipboard_sequence_fn)
! {
! /* Stash away the data we are about to put into the
! clipboard, so we could later check inside
! Fw32_get_clipboard_data whether the clipboard still
! holds our data. */
! if (clipboard_storage_size < coding.produced)
! {
! clipboard_storage_size = coding.produced + 100;
! last_clipboard_text = (char *) xrealloc (last_clipboard_text,
!
clipboard_storage_size);
! }
! if (last_clipboard_text)
! memcpy (last_clipboard_text, dst, coding.produced);
! }
GlobalUnlock (htext);
***************
*** 243,248 ****
--- 254,262 ----
ok = EmptyClipboard () && SetClipboardData (CF_TEXT, htext);
+ if (clipboard_sequence_fn)
+ last_clipboard_sequence_number = clipboard_sequence_fn ();
+
CloseClipboard ();
if (ok) goto done;
***************
*** 254,259 ****
--- 268,275 ----
if (last_clipboard_text)
*last_clipboard_text = '\0';
+ last_clipboard_sequence_number = 0;
+
done:
UNBLOCK_INPUT;
***************
*** 297,305 ****
data in the clipboard. This is so we don't pass our own text
from the clipboard (which might be troublesome if the killed
text includes null characters). */
! if (last_clipboard_text
! && clipboard_storage_size >= nbytes
! && memcmp(last_clipboard_text, src, nbytes) == 0)
goto closeclip;
{
--- 313,323 ----
data in the clipboard. This is so we don't pass our own text
from the clipboard (which might be troublesome if the killed
text includes null characters). */
! if ((clipboard_sequence_fn
! && clipboard_sequence_fn () == last_clipboard_sequence_number)
! || (last_clipboard_text
! && clipboard_storage_size >= nbytes
! && memcmp(last_clipboard_text, src, nbytes) == 0))
goto closeclip;
{
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] Changes to emacs/src/w32select.c,
Jason Rumney <=