| @@ -172,12 +172,11 @@ void* attachComponentToWindowRef (Component* comp, void* windowRef) | |||
| void detachComponentFromWindowRef (Component* comp, void* nsWindow); | |||
| void detachComponentFromWindowRef (Component* comp, void* nsWindow) | |||
| { | |||
| #if JUCE_64BIT | |||
| comp->removeFromDesktop(); | |||
| #else | |||
| JUCE_AUTORELEASEPOOL | |||
| { | |||
| JUCE_AUTORELEASEPOOL | |||
| #if JUCE_64BIT | |||
| comp->removeFromDesktop(); | |||
| #else | |||
| EventHandlerRef ref = (EventHandlerRef) (void*) (pointer_sized_int) | |||
| comp->getProperties() ["boundsEventRef"].toString().getHexValue64(); | |||
| RemoveEventHandler (ref); | |||
| @@ -198,42 +197,43 @@ void detachComponentFromWindowRef (Component* comp, void* nsWindow) | |||
| comp->removeFromDesktop(); | |||
| [hostWindow release]; | |||
| } | |||
| // The event loop needs to be run between closing the window and deleting the plugin, | |||
| // presumably to let the cocoa objects get tidied up. Leaving out this line causes crashes | |||
| // in Live and Reaper when you delete the plugin with its window open. | |||
| // (Doing it this way rather than using a single longer timout means that we can guarantee | |||
| // how many messages will be dispatched, which seems to be vital in Reaper) | |||
| for (int i = 20; --i >= 0;) | |||
| MessageManager::getInstance()->runDispatchLoopUntil (1); | |||
| #endif | |||
| // The event loop needs to be run between closing the window and deleting the plugin, | |||
| // presumably to let the cocoa objects get tidied up. Leaving out this line causes crashes | |||
| // in Live and Reaper when you delete the plugin with its window open. | |||
| // (Doing it this way rather than using a single longer timout means that we can guarantee | |||
| // how many messages will be dispatched, which seems to be vital in Reaper) | |||
| for (int i = 20; --i >= 0;) | |||
| MessageManager::getInstance()->runDispatchLoopUntil (1); | |||
| #endif | |||
| } | |||
| } | |||
| void setNativeHostWindowSize (void* nsWindow, Component* component, int newWidth, int newHeight, const PluginHostType& host); | |||
| void setNativeHostWindowSize (void* nsWindow, Component* component, int newWidth, int newHeight, const PluginHostType& host) | |||
| { | |||
| JUCE_AUTORELEASEPOOL | |||
| #if JUCE_64BIT | |||
| if (NSView* hostView = (NSView*) nsWindow) | |||
| { | |||
| // xxx is this necessary, or do the hosts detect a change in the child view and do this automatically? | |||
| [hostView setFrameSize: NSMakeSize ([hostView frame].size.width + (newWidth - component->getWidth()), | |||
| [hostView frame].size.height + (newHeight - component->getHeight()))]; | |||
| } | |||
| #else | |||
| #if JUCE_64BIT | |||
| if (NSView* hostView = (NSView*) nsWindow) | |||
| { | |||
| // xxx is this necessary, or do the hosts detect a change in the child view and do this automatically? | |||
| [hostView setFrameSize: NSMakeSize ([hostView frame].size.width + (newWidth - component->getWidth()), | |||
| [hostView frame].size.height + (newHeight - component->getHeight()))]; | |||
| } | |||
| #else | |||
| if (HIViewRef dummyView = (HIViewRef) (void*) (pointer_sized_int) | |||
| component->getProperties() ["dummyViewRef"].toString().getHexValue64()) | |||
| { | |||
| HIRect frameRect; | |||
| HIViewGetFrame (dummyView, &frameRect); | |||
| frameRect.size.width = newWidth; | |||
| frameRect.size.height = newHeight; | |||
| HIViewSetFrame (dummyView, &frameRect); | |||
| if (HIViewRef dummyView = (HIViewRef) (void*) (pointer_sized_int) | |||
| component->getProperties() ["dummyViewRef"].toString().getHexValue64()) | |||
| { | |||
| HIRect frameRect; | |||
| HIViewGetFrame (dummyView, &frameRect); | |||
| frameRect.size.width = newWidth; | |||
| frameRect.size.height = newHeight; | |||
| HIViewSetFrame (dummyView, &frameRect); | |||
| } | |||
| #endif | |||
| } | |||
| #endif | |||
| } | |||
| void checkWindowVisibility (void* nsWindow, Component* comp); | |||