Changeset 4127
- Timestamp:
- 2006年07月28日 07時58分52秒 (2 years ago)
- Files:
-
- trunk/src/ChangeLog.Meadow (modified) (1 diff)
- trunk/src/emacs.c (modified) (1 diff)
- trunk/src/mw32clpbd.c (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/src/ChangeLog.Meadow
r4123 r4127 1 2006-07-28 Masayuki FUJII <boochang@m4.kcn.ne.jp> 2 3 * mw32clpbd.c (GetClipboardSequenceNumber_Proc): New type. 4 (get_clipboard_sequence_number_fn): New variable. 5 (last_clipboard_sequence_number): New variable. 6 (Fw32_set_clipboard_data): Store clipboard text only if 7 GetClipboardSequenceNumber API is not available. Store clipboard 8 sequence number instread of clipboard text if 9 GetClipboardSequenceNumber API is available. 10 (Fw32_get_clipboard_data): Return nil if clipboard sequence number 11 is not changed since w32-set-clipboard-data sets data in 12 clipboard. 13 (init_mw32clpbd): New function. 14 15 * emacs.c (main): Call init_mw32clpbd. 16 1 17 2006-07-27 MIYOSHI Masanori <miyoshi@meadowy.org> 2 18 trunk/src/emacs.c
r4119 r4127 1738 1738 init_mw32reg (); 1739 1739 init_mw32mci (); 1740 init_mw32clpbd (); 1740 1741 #endif 1741 1742 init_fns (); trunk/src/mw32clpbd.c
r4074 r4127 58 58 static size_t clipboard_storage_size = 0; 59 59 60 typedef DWORD (WINAPI *GetClipboardSequenceNumber_Proc)(VOID); 61 GetClipboardSequenceNumber_Proc get_clipboard_sequence_number_fn = NULL; 62 63 static DWORD last_clipboard_sequence_number = 0; 64 65 60 66 /* From w32select.c(GNU Emacs) */ 61 67 … … 109 115 lptext[size] = '\0'; 110 116 111 /* Stash away the data we are about to put into the 112 clipboard, so we could later check inside 113 Fw32_get_clipboard_data whether the clipboard still 114 holds our data. */ 115 if (clipboard_storage_size < size) 116 { 117 clipboard_storage_size = size + 100; 118 last_clipboard_text = (char *) xrealloc (last_clipboard_text, 119 clipboard_storage_size); 120 } 121 if (last_clipboard_text) 122 { 123 memcpy (last_clipboard_text, lptext, size); 124 last_clipboard_text_size = size; 117 if (!get_clipboard_sequence_number_fn) 118 { 119 /* Stash away the data we are about to put into the 120 clipboard, so we could later check inside 121 Fw32_get_clipboard_data whether the clipboard still 122 holds our data. */ 123 if (clipboard_storage_size < size) 124 { 125 clipboard_storage_size = size + 100; 126 last_clipboard_text = (char *) xrealloc (last_clipboard_text, 127 clipboard_storage_size); 128 } 129 if (last_clipboard_text) 130 { 131 memcpy (last_clipboard_text, lptext, size); 132 last_clipboard_text_size = size; 133 } 125 134 } 126 135 … … 136 145 137 146 CloseClipboard (); 147 148 if (get_clipboard_sequence_number_fn) 149 last_clipboard_sequence_number = get_clipboard_sequence_number_fn (); 138 150 139 151 if (ok) … … 172 184 173 185 BLOCK_INPUT; 186 187 if (last_clipboard_sequence_number && 188 last_clipboard_sequence_number == get_clipboard_sequence_number_fn ()) 189 return Qnil; 174 190 175 191 if (!OpenClipboard (NULL)) … … 240 256 } 241 257 258 void 259 init_mw32clpbd (void) 260 { 261 HMODULE user32_lib = GetModuleHandle ("user32.dll"); 262 263 get_clipboard_sequence_number_fn = (GetClipboardSequenceNumber_Proc) 264 GetProcAddress (user32_lib, "GetClipboardSequenceNumber"); 265 266 /* Test GetClipboardSequenceNumber API. If test fails, make it 267 inavailable. */ 268 if (!get_clipboard_sequence_number_fn ()) 269 get_clipboard_sequence_number_fn = NULL; 270 } 271 242 272 syms_of_mw32clipboard () 243 273 {
