Hi Michael

I have had to do this same thing, and have encountered the same problem. 

In my case the main thing I wanted to accomplish was to get the scroll view in 
the main window to reflect the scroll position of my overlay window. It was not 
working very well, but then in my main window, I turned off scrollsDynamically 
then did a scrollPoint, then turned the scrollsDynamically back on again. I'm 
not sure if that is relevant to your situation.

That made it significantly better, but it's still not the same as scrolling in 
the main window when I don't have the overlay window there, so if you find out 
any more info, I'd be keen to hear.

For sending events to the main window from the overlay, I have been creating a 
new event from the existing event like this:

                                                NSEvent *newEvent = [NSEvent 
mouseEventWithType:[theEvent type] 
                                                                                
                                           location:mapWindowPoint
                                                                                
                                  modifierFlags:[theEvent modifierFlags] 
                                                                                
                                          timestamp:[theEvent timestamp] 
                                                                                
                                   windowNumber:[parentWindow windowNumber]
                                                                                
                                                context:[NSGraphicsContext 
graphicsContextWithWindow:parentWindow]
                                                                                
                                        eventNumber:[theEvent eventNumber]+1 
                                                                                
                                         clickCount:[theEvent clickCount]
                                                                                
                                           pressure:[theEvent pressure]];
                                                
                                                [NSApp postEvent:newEvent 
atStart:NO];

Where mapWindowPoint is the event location converted to the location in the 
parent window's coordinates, and incrementing the event number is just a guess 
at what I might be supposed to do (seems to work).

I'm also curious to know whether there is any advantage or disadvantage to 
using the NSOperationQueue to close your window instead of using 
performSelector:withObject:afterDelay:

Regards

Gideon



On 12/05/2012, at 11:35 AM, Michael Crawford wrote:

> I'd like to act on -mouseDown when it occurs within the bounds of an 
> NSImageView, which is a subview of a transparent overlay child window.  Some 
> of you may be wondering why I'm trying to do this so I'll try to explain that 
> up front.  There are bugs in Snow Leopard regarding the use of Core Animation 
> with layer-backed views and NSOutlineView.  In order to avoid these bugs, 
> which I'm told Apple will not be fixing for 10.6, I'm using a transparent 
> overlay to do the required animation and implement something like QuickLook 
> or a preview function.
> 
> I tried the following code but it resulted in really bad latency and 
> coordinate issues (I think) in the parent window's event handling.
> 
> #pragma mark - NSEvent Handling Methods
> 
> - (void)mouseDown:(NSEvent *)event
> {
>    [self.parentWindow sendEvent:event];
> #if 0
>    [super mouseDown:event];
>    [self.parentWindow removeChildWindow:self];
>    [[NSOperationQueue mainQueue] addOperationWithBlock:^{
>        [self close];
>    }];
> #endif
> }
> 
> 
> I'm thinking that the way I'm forwarding events to the parent is wrong.  So 
> I'm looking for advice on implementing a proper mouse filter that can forward 
> events and generate the same result as if the event was originally sent to 
> the parent window.
> 
> -Michael
> _______________________________________________
> 
> Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)
> 
> Please do not post admin requests or moderator comments to the list.
> Contact the moderators at cocoa-dev-admins(at)lists.apple.com
> 
> Help/Unsubscribe/Update your Subscription:
> https://lists.apple.com/mailman/options/cocoa-dev/gideon%40novamind.com
> 
> This email sent to gid...@novamind.com


_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to