# HG changeset patch # User Sam Lantinga # Date 1278655654 25200 # Node ID 9faebccfefb3a5eb1e30342c9afec373bd08958d # Parent 524dfefd554c693ce699665ad07725ca399a91ac Amazingly the Windows code is almost identical to the Mac OS X code. :) diff -r 524dfefd554c -r 9faebccfefb3 VisualC/SDL/SDL_VS2005.vcproj --- a/VisualC/SDL/SDL_VS2005.vcproj Thu Jul 08 22:54:03 2010 -0700 +++ b/VisualC/SDL/SDL_VS2005.vcproj Thu Jul 08 23:07:34 2010 -0700 @@ -569,6 +569,14 @@ > + + + + diff -r 524dfefd554c -r 9faebccfefb3 VisualC/SDL/SDL_VS2008.vcproj --- a/VisualC/SDL/SDL_VS2008.vcproj Thu Jul 08 22:54:03 2010 -0700 +++ b/VisualC/SDL/SDL_VS2008.vcproj Thu Jul 08 23:07:34 2010 -0700 @@ -724,6 +724,14 @@ > + + + + diff -r 524dfefd554c -r 9faebccfefb3 src/video/cocoa/SDL_cocoaclipboard.m --- a/src/video/cocoa/SDL_cocoaclipboard.m Thu Jul 08 22:54:03 2010 -0700 +++ b/src/video/cocoa/SDL_cocoaclipboard.m Thu Jul 08 23:07:34 2010 -0700 @@ -45,7 +45,7 @@ { SDL_VideoData *data = (SDL_VideoData *) _this->driverdata; NSAutoreleasePool *pool; - NSPasteboard *pasteboard; + NSPasteboard *pasteboard; NSString *format = GetTextFormat(_this); pool = [[NSAutoreleasePool alloc] init]; @@ -63,7 +63,7 @@ Cocoa_GetClipboardText(_THIS) { NSAutoreleasePool *pool; - NSPasteboard *pasteboard; + NSPasteboard *pasteboard; NSString *format = GetTextFormat(_this); NSString *available; char *text; @@ -96,7 +96,7 @@ Cocoa_HasClipboardText(_THIS) { NSAutoreleasePool *pool; - NSPasteboard *pasteboard; + NSPasteboard *pasteboard; NSString *format = GetTextFormat(_this); NSString *available; SDL_bool result; @@ -120,7 +120,7 @@ Cocoa_CheckClipboardUpdate(struct SDL_VideoData * data) { NSAutoreleasePool *pool; - NSPasteboard *pasteboard; + NSPasteboard *pasteboard; NSInteger count; pool = [[NSAutoreleasePool alloc] init]; diff -r 524dfefd554c -r 9faebccfefb3 src/video/win32/SDL_win32clipboard.c --- a/src/video/win32/SDL_win32clipboard.c Thu Jul 08 22:54:03 2010 -0700 +++ b/src/video/win32/SDL_win32clipboard.c Thu Jul 08 23:07:34 2010 -0700 @@ -23,6 +23,7 @@ #include "SDL_win32video.h" #include "SDL_win32window.h" +#include "../../events/SDL_clipboardevents_c.h" #ifdef UNICODE @@ -52,6 +53,7 @@ int WIN_SetClipboardText(_THIS, const char *text) { + SDL_VideoData *data = (SDL_VideoData *) _this->driverdata; int result = 0; if (OpenClipboard(GetWindowHandle(_this))) { @@ -93,6 +95,7 @@ WIN_SetError("Couldn't set clipboard data"); result = -1; } + data->clipboard_count = GetClipboardSequenceNumber(); } SDL_free(tstr); @@ -141,4 +144,18 @@ } } +void +WIN_CheckClipboardUpdate(struct SDL_VideoData * data) +{ + DWORD count; + + count = GetClipboardSequenceNumber(); + if (count != data->clipboard_count) { + if (data->clipboard_count) { + SDL_SendClipboardUpdate(); + } + data->clipboard_count = count; + } +} + /* vi: set ts=4 sw=4 expandtab: */ diff -r 524dfefd554c -r 9faebccfefb3 src/video/win32/SDL_win32clipboard.h --- a/src/video/win32/SDL_win32clipboard.h Thu Jul 08 22:54:03 2010 -0700 +++ b/src/video/win32/SDL_win32clipboard.h Thu Jul 08 23:07:34 2010 -0700 @@ -24,9 +24,13 @@ #ifndef _SDL_win32clipboard_h #define _SDL_win32clipboard_h +/* Forward declaration */ +struct SDL_VideoData; + extern int WIN_SetClipboardText(_THIS, const char *text); extern char *WIN_GetClipboardText(_THIS); extern SDL_bool WIN_HasClipboardText(_THIS); +extern void WIN_CheckClipboardUpdate(struct SDL_VideoData * data); #endif /* _SDL_win32clipboard_h */ diff -r 524dfefd554c -r 9faebccfefb3 src/video/win32/SDL_win32events.c --- a/src/video/win32/SDL_win32events.c Thu Jul 08 22:54:03 2010 -0700 +++ b/src/video/win32/SDL_win32events.c Thu Jul 08 23:07:34 2010 -0700 @@ -162,7 +162,10 @@ if (SDL_GetKeyboardFocus() != data->window) { SDL_SetKeyboardFocus(data->window); } - /* FIXME: Update keyboard state */ + /* + * FIXME: Update keyboard state + */ + WIN_CheckClipboardUpdate(data->videodata); } else { if (SDL_GetKeyboardFocus() == data->window) { SDL_SetKeyboardFocus(NULL); diff -r 524dfefd554c -r 9faebccfefb3 src/video/win32/SDL_win32video.c --- a/src/video/win32/SDL_win32video.c Thu Jul 08 22:54:03 2010 -0700 +++ b/src/video/win32/SDL_win32video.c Thu Jul 08 23:07:34 2010 -0700 @@ -28,7 +28,6 @@ #include "../SDL_pixels_c.h" #include "SDL_win32video.h" -#include "SDL_win32clipboard.h" #include "SDL_d3drender.h" #include "SDL_gdirender.h" diff -r 524dfefd554c -r 9faebccfefb3 src/video/win32/SDL_win32video.h --- a/src/video/win32/SDL_win32video.h Thu Jul 08 22:54:03 2010 -0700 +++ b/src/video/win32/SDL_win32video.h Thu Jul 08 23:07:34 2010 -0700 @@ -45,6 +45,7 @@ #include "ddraw.h" #endif +#include "SDL_win32clipboard.h" #include "SDL_win32events.h" #include "SDL_win32gamma.h" #include "SDL_win32keyboard.h" @@ -75,6 +76,8 @@ IDirectDraw *ddraw; #endif + DWORD clipboard_count; + const SDL_scancode *key_layout; } SDL_VideoData;