]> git.sesse.net Git - vlc/blobdiff - activex/oleobject.cpp
all: backport of r13193
[vlc] / activex / oleobject.cpp
index 0c95bd5795f86966647746d76378a271d83dd4ea..f376dec033343216e5650e5ecad4bcaf840bbf7b 100644 (file)
@@ -142,6 +142,12 @@ HRESULT VLCOleObject::doInPlaceActivate(LPMSG lpMsg, LPOLECLIENTSITE pActiveSite
         {
             return OLEOBJ_S_INVALIDHWND;
         }
+        else if( NULL == lprcPosRect )
+        {
+            SetRect(&posRect, 0, 0, 0, 0);
+            lprcPosRect = &posRect;
+            lprcClipRect = &posRect;
+        }
 
         if( FAILED(_p_instance->onActivateInPlace(lpMsg, hwndParent, lprcPosRect, lprcClipRect)) )
         {
@@ -150,18 +156,16 @@ HRESULT VLCOleObject::doInPlaceActivate(LPMSG lpMsg, LPOLECLIENTSITE pActiveSite
             return OLEOBJ_S_CANNOT_DOVERB_NOW;
         }
 
-        if( NULL != p_inPlaceSite )
-            p_inPlaceSite->OnPosRectChange(lprcPosRect);
-
-        pActiveSite->ShowObject();
-        _p_instance->setVisible(TRUE);
-
         if( NULL != p_inPlaceSite )
         {
             p_inPlaceSite->OnInPlaceActivate();
+            p_inPlaceSite->OnPosRectChange(lprcPosRect);
             p_inPlaceSite->Release();
         }
 
+        pActiveSite->ShowObject();
+        _p_instance->setVisible(TRUE);
+
         if( NULL != lpMsg )
         {
             switch( lpMsg->message )
@@ -331,6 +335,7 @@ STDMETHODIMP VLCOleObject::SetExtent(DWORD dwDrawAspect, SIZEL *pSizel)
     if( NULL == pSizel )
         return E_POINTER;
 
+
     if( dwDrawAspect & DVASPECT_CONTENT )
     {
         _p_instance->setExtent(*pSizel);