| @@ -467,9 +467,9 @@ public: | |||||
| }; | }; | ||||
| //============================================================================== | //============================================================================== | ||||
| HWNDComponentPeer (Component& comp, const int windowStyleFlags, HWND parentToAddTo_) | |||||
| HWNDComponentPeer (Component& comp, const int windowStyleFlags, HWND parent, bool nonRepainting) | |||||
| : ComponentPeer (comp, windowStyleFlags), | : ComponentPeer (comp, windowStyleFlags), | ||||
| dontRepaint (false), | |||||
| dontRepaint (nonRepainting), | |||||
| currentRenderingEngine (softwareRenderingEngine), | currentRenderingEngine (softwareRenderingEngine), | ||||
| lastPaintTime (0), | lastPaintTime (0), | ||||
| fullScreen (false), | fullScreen (false), | ||||
| @@ -479,7 +479,7 @@ public: | |||||
| constrainerIsResizing (false), | constrainerIsResizing (false), | ||||
| currentWindowIcon (0), | currentWindowIcon (0), | ||||
| dropTarget (nullptr), | dropTarget (nullptr), | ||||
| parentToAddTo (parentToAddTo_), | |||||
| parentToAddTo (parent), | |||||
| updateLayeredWindowAlpha (255) | updateLayeredWindowAlpha (255) | ||||
| { | { | ||||
| callFunctionIfNotLocked (&createWindowCallback, this); | callFunctionIfNotLocked (&createWindowCallback, this); | ||||
| @@ -903,7 +903,7 @@ public: | |||||
| class JuceDropTarget : public ComBaseClassHelper <IDropTarget> | class JuceDropTarget : public ComBaseClassHelper <IDropTarget> | ||||
| { | { | ||||
| public: | public: | ||||
| JuceDropTarget (HWNDComponentPeer& owner_) : ownerInfo (new OwnerInfo (owner_)) {} | |||||
| JuceDropTarget (HWNDComponentPeer& p) : ownerInfo (new OwnerInfo (p)) {} | |||||
| void clear() | void clear() | ||||
| { | { | ||||
| @@ -956,7 +956,7 @@ public: | |||||
| private: | private: | ||||
| struct OwnerInfo | struct OwnerInfo | ||||
| { | { | ||||
| OwnerInfo (HWNDComponentPeer& owner_) : owner (owner_) {} | |||||
| OwnerInfo (HWNDComponentPeer& p) : owner (p) {} | |||||
| Point<int> getMousePos (const POINTL& mousePos) const | Point<int> getMousePos (const POINTL& mousePos) const | ||||
| { | { | ||||
| @@ -1282,7 +1282,17 @@ private: | |||||
| JuceWindowIdentifier::setAsJUCEWindow (hwnd, true); | JuceWindowIdentifier::setAsJUCEWindow (hwnd, true); | ||||
| if (dropTarget == nullptr) | if (dropTarget == nullptr) | ||||
| dropTarget = new JuceDropTarget (*this); | |||||
| { | |||||
| HWNDComponentPeer* peer = nullptr; | |||||
| if (dontRepaint) | |||||
| peer = getOwnerOfWindow (parentToAddTo); | |||||
| if (peer == nullptr) | |||||
| peer = this; | |||||
| dropTarget = new JuceDropTarget (*peer); | |||||
| } | |||||
| RegisterDragDrop (hwnd, dropTarget); | RegisterDragDrop (hwnd, dropTarget); | ||||
| @@ -2689,16 +2699,16 @@ ModifierKeys HWNDComponentPeer::modifiersAtLastCallback; | |||||
| ComponentPeer* Component::createNewPeer (int styleFlags, void* nativeWindowToAttachTo) | ComponentPeer* Component::createNewPeer (int styleFlags, void* nativeWindowToAttachTo) | ||||
| { | { | ||||
| return new HWNDComponentPeer (*this, styleFlags, (HWND) nativeWindowToAttachTo); | |||||
| return new HWNDComponentPeer (*this, styleFlags, | |||||
| (HWND) nativeWindowToAttachTo, false); | |||||
| } | } | ||||
| ComponentPeer* createNonRepaintingEmbeddedWindowsPeer (Component* component, void* parent) | ComponentPeer* createNonRepaintingEmbeddedWindowsPeer (Component* component, void* parent) | ||||
| { | { | ||||
| jassert (component != nullptr); | jassert (component != nullptr); | ||||
| HWNDComponentPeer* const p = new HWNDComponentPeer (*component, ComponentPeer::windowIgnoresMouseClicks, (HWND) parent); | |||||
| p->dontRepaint = true; | |||||
| return p; | |||||
| return new HWNDComponentPeer (*component, ComponentPeer::windowIgnoresMouseClicks, | |||||
| (HWND) parent, true); | |||||
| } | } | ||||