Copy & Paste doesn't work again
Ulrich Czekalla
ulrich at codeweavers.com
Wed Jul 2 18:00:35 CDT 2003
On Wed, 2003-07-02 at 07:34, Ferenc Wagner wrote:
> Ulrich Czekalla <ulrich at codeweavers.com> writes:
>
> > Sure, I'll take a look.
>
> Once at it, let me express my concerns. Before that last
> patch went in, I was using the following local
> modifications:
>
> Index: dlls/x11drv/clipboard.c
> ===================================================================
> RCS file: /home/wine/wine/dlls/x11drv/clipboard.c,v
> retrieving revision 1.8
> diff -u -r1.8 clipboard.c
> --- dlls/x11drv/clipboard.c 23 Jan 2003 21:32:35 -0000 1.8
> +++ dlls/x11drv/clipboard.c 25 Mar 2003 15:36:52 -0000
> @@ -165,10 +165,6 @@
> case CF_TEXT:
> return None;
>
> - case CF_UNICODETEXT:
> - prop = XA_STRING;
> - break;
> -
> case CF_DIB:
> case CF_BITMAP:
> {
>
> I wanted to move Unicode text between Windows applications,
> but the above rule always converted it to iso-8859-1,
> destroying the contents. As far as I remember, there was no
> mechanism to offer (for a TARGET request) several possible
> transfer formats, raw internal being the preference,
> followed by other less convenient formats.
>
Good point. I'll fix this.
> @@ -947,6 +943,16 @@
> if ( !(selectionAcquired == (S_PRIMARY | S_CLIPBOARD)) )
> {
> Atom xaClipboard = TSXInternAtom(display, _CLIPBOARD, False);
> + BOOL TempWndCreated = False;
> +
> + if (hWndClipWindow == NULL)
> + {
> + hWndClipWindow = CreateWindowA ("STATIC", NULL, 0,
> + 0, 0, 0, 0,
> + NULL, NULL, NULL, NULL);
> + TempWndCreated = True;
> + }
> +
> owner = X11DRV_get_whole_window( GetAncestor( hWndClipWindow, GA_ROOT )
> );
>
> /* Grab PRIMARY selection if not owned */
> @@ -968,6 +974,9 @@
> selectionWindow = owner;
> TRACE("Grabbed X selection, owner=(%08x)\n", (unsigned) owner);
> }
> +
> + if (TempWndCreated)
> + DestroyWindow (hWndClipWindow);
> }
> }
>
> X11DRV_AcquireClipboard can be called with NULL
> hWndClipWindow (as documented on MSDN). The above hack came
> over it without introducing new global state, but clearly is
> not right. Worked for me, though.
>
Yes I noticed this as well. What we do in other areas is use
GetActiveWindow() if hWndClipWindow == 0. I have something like this in
my tree. I'll submit a patch soon.
> I wanted to investigate and find real fixes for both
> problems, but after your recent patches I will have to learn
> the new ways first. And I do not really have the time
> anyway, so I thought I had better tell about them at least.
>
Sure, any feedback help a lot. Thanks!
> Feri.
>
>
More information about the wine-devel
mailing list