[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: GNUstep paste board (Was: really attracting developers)

From: Matt Rice
Subject: Re: GNUstep paste board (Was: really attracting developers)
Date: Mon, 28 Aug 2006 15:07:42 -0700 (PDT)

--- Fred Kiefer <address@hidden> wrote:
> DND will be another big step. Here a whole rewrite
> is needed. When we
> tried to integrate GNUstep DND with X we did get it
> completely wrong the
> first time.

a while back i tried getting gnustep to work as a x
'dragging source' as we call it.. it still uses the
outdated xdnd code but attached is what i ended up
with and a dragging destination which also uses the
outdated xdnd code from gnustep..

the whole thing inside the case SelectionRequest:
needs to be rewritten doesnt do any of the conversion
it should (file uris should have file:// etc and other
conversion methods for other stuff...) 

i recall there being alot more to the patch than this
but this is all there seemed to be... so hopefully its
all here...

i also remember there being times when the code just
magically didnt work.. 

hope it helps, dont forsee finishing it anytime soon
if someone wants to pick it up...

Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around 

Attachment: xdnd-dest.tar.gz
Description: 296406374-xdnd-dest.tar.gz

Index: Source/x11/XGServerEvent.m
--- Source/x11/XGServerEvent.m  (revision 22775)
+++ Source/x11/XGServerEvent.m  (working copy)
@@ -30,6 +30,7 @@
 #include <AppKit/NSGraphics.h>
 #include <AppKit/NSMenu.h>
 #include <AppKit/NSWindow.h>
+#include <AppKit/NSPasteboard.h>
 #include <Foundation/NSException.h>
 #include <Foundation/NSArray.h>
 #include <Foundation/NSDictionary.h>
@@ -1294,10 +1295,34 @@
        case SelectionRequest:
-         NSDebugLLog(@"NSEvent", @"%d SelectionRequest\n",
-                     xEvent.xselectionrequest.requestor);
+         {
+           DndClass dnd = xdnd();
+           /* ugly hack alert delete all this stuff please*/
+           NSPasteboard *pb = [NSPasteboard pasteboardWithName:NSDragPboard];
+           NSArray *types = [pb types];
+           NSLog(@"%@", [pb types]);
+           NSData *data;
+           if ([types count])
+             {
+               id uh = [pb propertyListForType:[types objectAtIndex:0]];
+               if ([uh isKindOfClass:[NSArray class]])
+                 {
+                   if ([uh count])
+                   {
+                     uh = [uh objectAtIndex:0];
+                   }
+                   NSLog(@"%@", uh);
+                   data = [uh dataUsingEncoding:NSASCIIStringEncoding 
+                 }
+               xdnd_selection_send(&dnd, &xEvent.xselectionrequest, (unsigned 
char *)[data bytes], [data length]);     
+             }
+           NSDebugLLog(@"NSEvent", @"%d SelectionRequest\n",
+                       xEvent.xselectionrequest.requestor);
+         }
              // We shouldn't get here unless we forgot to trap an event above
 #ifdef XSHM
Index: Source/x11/XGDragView.m
--- Source/x11/XGDragView.m     (revision 22775)
+++ Source/x11/XGDragView.m     (working copy)
@@ -276,6 +276,7 @@
       case GSAppKitDraggingEnter:
+       xdnd_set_selection_owner(&dnd, dragWindev->ident, typelist[0]);
        xdnd_send_enter(&dnd, dWindowNumber, dragWindev->ident, typelist);
        xdnd_send_position(&dnd, dWindowNumber, dragWindev->ident,
          GSActionForDragOperation (dragMask & operationMask),

reply via email to

[Prev in Thread] Current Thread [Next in Thread]