From d2b1df88e8a28ea1fc53109609d7427fa96898c7 Mon Sep 17 00:00:00 2001 From: Francisco Ryan Tolmasky I Date: Sun, 26 Jul 2009 15:50:37 -0700 Subject: [PATCH] FIx for drag and drop without CPDOMWindowBridge. Reviewed by me. --- AppKit/CPDragServer.j | 11 +++++++++-- AppKit/CPWindow/CPWindow.j | 15 ++++++++++++--- AppKit/Platform/DOM/_CPDOMWindow.j | 3 +++ 3 files changed, 24 insertions(+), 5 deletions(-) diff --git a/AppKit/CPDragServer.j b/AppKit/CPDragServer.j index f39524a61..39c4900fb 100644 --- a/AppKit/CPDragServer.j +++ b/AppKit/CPDragServer.j @@ -26,6 +26,7 @@ @import #import "CoreGraphics/CGGeometry.h" +#import "Platform/Platform.h" #define DRAGGING_WINDOW(anObject) ([anObject isKindOfClass:[CPWindow class]] ? anObject : [anObject window]) @@ -241,14 +242,20 @@ var CPDragServerUpdateDragging = function(anEvent) - (void)dragView:(CPView)aView fromWindow:(CPWindow)aWindow at:(CGPoint)viewLocation offset:(CGSize)mouseOffset event:(CPEvent)anEvent pasteboard:(CPPasteboard)aPasteboard source:(id)aSourceObject slideBack:(BOOL)slideBack { var eventLocation = [anEvent locationInWindow]; - + CPDragServerView = aView; CPDragServerSource = aSourceObject; CPDragServerWindow = aWindow; CPDragServerOffset = CPPointMake(eventLocation.x - viewLocation.x, eventLocation.y - viewLocation.y); CPDragServerPasteboard = [CPPasteboard pasteboardWithName:CPDragPboard];//aPasteboard; - [_dragWindow setFrameSize:CGSizeMakeCopy([[CPDOMWindowBridge sharedDOMWindowBridge] frame].size)]; +#if PLATFORM(BROWSER) + var platformWindow = [aWindow platformWindow]; + + [_dragWindow setPlatformWindow:platformWindow]; + [_dragWindow setFrameSize:[platformWindow contentBounds]]; +#endif + [_dragWindow orderFront:self]; [aView setFrameOrigin:viewLocation]; diff --git a/AppKit/CPWindow/CPWindow.j b/AppKit/CPWindow/CPWindow.j index b83b7446e..dcc7fc2c9 100644 --- a/AppKit/CPWindow/CPWindow.j +++ b/AppKit/CPWindow/CPWindow.j @@ -395,6 +395,17 @@ CPTexturedBackgroundWindowMask return self; } +- (CPPlatformWindow)platformWindow +{ + return _platformWindow; +} + +- (void)setPlatformWindow:(CPPlatformWindow)aPlatformWindow +{ + // FIXME: already visible. + _platformWindow = aPlatformWindow; +} + /*! @ignore */ @@ -626,9 +637,7 @@ CPTexturedBackgroundWindowMask */ - (void)orderFront:(id)aSender { - if (![_platformWindow isVisible]) - [_platformWindow orderFront:self]; - + [_platformWindow orderFront:self]; [_platformWindow order:CPWindowAbove window:self relativeTo:nil]; } diff --git a/AppKit/Platform/DOM/_CPDOMWindow.j b/AppKit/Platform/DOM/_CPDOMWindow.j index 38b18faa2..1605ef941 100644 --- a/AppKit/Platform/DOM/_CPDOMWindow.j +++ b/AppKit/Platform/DOM/_CPDOMWindow.j @@ -254,6 +254,9 @@ var CTRL_KEY_CODE = 17; theDocument.addEventListener("touchmove", touchEventCallback, NO); theDocument.addEventListener("touchcancel", touchEventCallback, NO); + _DOMWindow.addEventListener("DOMMouseScroll", scrollEventCallback, NO); + _DOMWindow.addEventListener("mousewheel", scrollEventCallback, NO); + _DOMWindow.addEventListener("resize", resizeEventCallback, NO); _DOMWindow.addEventListener("beforeunload", function()