Re: lockFocus and unlockFocus not really working at drag-time???
Re: lockFocus and unlockFocus not really working at drag-time???
- Subject: Re: lockFocus and unlockFocus not really working at drag-time???
- From: John Pannell <email@hidden>
- Date: Sun, 12 Mar 2006 16:21:37 -0700
Hi Eric-
I think the problem is that the drag sets the application into the
NSEventTrackingRunLoopMode and all of the drawing commands are queued
up in NSDefaultRunLoopMode until the mouse is released. I have a
view that performs animation during a drag, and used a timer (created
right before the
dragImage:at:offset:event:pasteboard:source:slideBack: method) to
fire and initiate drawing in the proper run loop, using the runloop's
performSelector:target:argument:order:modes: method. This situation
doesn't need a timer, I wouldn't think.
In the case outlined below, I think you could replace the [self
DrawRing] call in mouseEntered: with...
[[NSRunLoop currentRunLoop] performSelector:@selector(drawRing)
target:self argument:nil order:1 modes:[NSArray
arrayWithObjects:@"NSEventTrackingRunLoopMode",
@"NSDefaultRunLoopMode", nil]];
The message would also have to be balanced with an "undrawRing"
message in the mouseExited: method.
My knowledge of runloops, etc. is pretty shaky, but I believe that is
what the original post is up against.
HTH!
John
John Pannell
Positive Spin Media
http://www.positivespinmedia.com
On Mar 12, 2006, at 3:35 PM, Eric Morand wrote:
I have the exact same problem and I'd be glad if someone could give
us some hints.
Le 16 janv. 06 à 18:31, Theodore H. Smith a écrit :
I'm trying to do something really really really really really simple.
I just want to draw a drag focus ring in a window. Just like the
Finder does when you drag a file from one window to another.
The focus ring must be drawn in an WebView object, because I have
a WebView that will display html files.
So it makes sense that I want to drag and drop html files into a
WebView, correct?
But it's just not working.
I got this code:
-(void) DrawRing {
if ( ! [self lockFocusIfCanDraw] ) {
return;
}
NSColor* color = [NSColor blueColor];
NSRect rFrame = [self frame];
NSSize rSize = rFrame.size;
[color set];
NSBezierPath* bza = [NSBezierPath bezierPath];
[bza moveToPoint:NSMakePoint(0.0,0.0)];
[bza lineToPoint:NSMakePoint(rSize.width,0.0)];
[bza lineToPoint:NSMakePoint(rSize.width,rSize.height)];
[bza lineToPoint:NSMakePoint(0.0,rSize.height)];
[bza lineToPoint:NSMakePoint(0.0,0.0)];
[bza setLineWidth:2.0];
[bza setLineJoinStyle:NSRoundLineJoinStyle];
[bza closePath];
[bza stroke];
[self unlockFocus];
// [self display];
}
- (NSDragOperation)draggingEntered:(id <NSDraggingInfo>)sender {
SetThemeCursor(kThemeCopyArrowCursor);
NSDragOperation d = [self draggingTest:sender];
if (d == NSDragOperationGeneric) {
[self DrawRing];
}
return d;
}
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Cocoa-dev mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden