Re: Drag and Drop Oddities
Re: Drag and Drop Oddities
- Subject: Re: Drag and Drop Oddities
- From: Hsu <email@hidden>
- Date: Wed, 12 Jun 2002 11:29:05 -0700
This looks pretty close to what I'm doing, and I don't think this is
considered "periodic events".
Couple of questions -
why create the NSImage before you know if you want to drag or not? (if
([self mouse:localPoint inRect:[self clickableRect]]) {)
Does the NSImage change all the time? Can you cache it rather than
creating a new one all the time? Do you ever release it?
Hillegass mentions that the dragOffset parameter to the dragImage method
doesn't see to do anything - I set it to NSZeroSize and it seems to work
fine.
Karl
On Wednesday, June 12, 2002, at 08:28 AM, John Anderson wrote:
So if I'm using the following code to detect a click or a drag, I'm
only using periodic events, right?:
- (void)mouseDown:(NSEvent *)theEvent
{
NSPoint localPoint = [self convertPoint:[theEvent locationInWindow]
fromView:nil];
[[[self window] windowController] deselectAll];
if ([self mouse:localPoint inRect:[self clickableRect]]) {
isSelected = YES;
[self display];
}
else
isSelected = NO;
}
- (void)mouseDragged:(NSEvent *)theEvent
{
NSSize dragOffset;
NSPoint imageLoc;
NSPasteboard *pboard;
NSImage *dragImage = [[NSImage alloc] initWithData:[self
dataWithPDFInsideRect:[self clickableRect]]];
NSPoint localPoint = [self convertPoint:[theEvent locationInWindow]
fromView:nil];
NSData *ownerData;
[[[self window] windowController] deselectAll];
if ([self mouse:localPoint inRect:[self clickableRect]]) {
imageLoc = [self clickableRect].origin;
imageLoc.y += 8;
dragOffset = NSMakeSize(localPoint.x, localPoint.y);
pboard = [NSPasteboard pasteboardWithName:NSDragPboard];
[pboard declareTypes:[NSArray
arrayWithObject:@"PresenceContainer"] owner:self];
ownerData = [NSArchiver archivedDataWithRootObject:self];
[pboard setData:ownerData forType:@"PresenceContainer"];
[self dragImage:dragImage at:imageLoc offset:dragOffset
event:theEvent pasteboard:pboard source:self slideBack:YES];
}
}
What's causing the slowness here? Should I create the NSImage and
NSData when I get the mouseDown event instead, and hold onto it until I
get a drag? Perhaps that would speed things up... any other
suggestions? I don't really want to send dragImage: when I get
onMouseDown because I support selection of these objects as well, and
the slightest mouse movement causes a snap-back effect, which is
disturbing... so i want a delay, just not one this big.
John Anderson
everchanging
On Wednesday, June 12, 2002, at 12:26 AM, Jason Harris wrote:
I've seen this before. It occurs when overriding mouseDown to receive
an
event and then starting periodic events to determine whether to begin
a drag
even if the user hasn't moved the mouse. You send locationInWindow to
the
periodic event and this is what you see, because locationInWindow is
only
defined for mouse events.
Jason
Hsu Tried to Tell Me:
I've not seen this in XShelf (which is based directly on code from
Apple
source archives and Hillegass' book)... drag/drop seems to work fine
(and it's thus far all Cocoa, no Carbon)
Karl
On Tuesday, June 11, 2002, at 11:39 AM, John Anderson wrote:
I've seen the exact same problem. Hate to post a "me too" here but I
thought you'd like to know that someone feels your pain :-)
John
On Monday, June 10, 2002, at 09:02 PM, Lucas Haley wrote:
Heya all --
I've just delved into drag and drop, and things are going well.
However, whenever I begin my drag, the app stalls a little, and the
image quickly jumps once from the top left of the monitor to the
mouse
position. Has anyone else encountered this? I am using code almost
exclusively lifted from Hillegass and the Apple source code
archives.
Also: is it not possible in IB to make a matrix out of a custom
view?
Thanks for any help!
-Lucas
_______________________________________________
cocoa-dev mailing list | email@hidden
Help/Unsubscribe/Archives:
http://www.lists.apple.com/mailman/listinfo/cocoa-dev
Do not post admin requests to the list. They will be ignored.
_______________________________________________
cocoa-dev mailing list | email@hidden
Help/Unsubscribe/Archives:
http://www.lists.apple.com/mailman/listinfo/cocoa-dev
Do not post admin requests to the list. They will be ignored.
--
Attention pregnant women: Anybody who talks to their own stomach is
crazy.
Homepage:
http://homepage.mac.com/khsu/index.html
_______________________________________________
cocoa-dev mailing list | email@hidden
Help/Unsubscribe/Archives:
http://www.lists.apple.com/mailman/listinfo/cocoa-dev
Do not post admin requests to the list. They will be ignored.
_______________________________________________
cocoa-dev mailing list | email@hidden
Help/Unsubscribe/Archives:
http://www.lists.apple.com/mailman/listinfo/cocoa-dev
Do not post admin requests to the list. They will be ignored.
_______________________________________________
cocoa-dev mailing list | email@hidden
Help/Unsubscribe/Archives:
http://www.lists.apple.com/mailman/listinfo/cocoa-dev
Do not post admin requests to the list. They will be ignored.
--
The day Microsoft makes something that doesn't suck is the day they
start making vacuum cleaners.
Homepage:
http://homepage.mac.com/khsu/index.html
_______________________________________________
cocoa-dev mailing list | email@hidden
Help/Unsubscribe/Archives:
http://www.lists.apple.com/mailman/listinfo/cocoa-dev
Do not post admin requests to the list. They will be ignored.