]> git.sesse.net Git - vlc/blobdiff - activex/oleinplaceobject.cpp
src/check_symbols: Work around some sed implemention. (Especially Mac OS X's).
[vlc] / activex / oleinplaceobject.cpp
index 0ad8a58e60a2c159f99b43331f34de4cb671b9c2..9e118f8fe33c9b6176420da380eaa729614c469f 100644 (file)
@@ -17,7 +17,7 @@
  *
  * You should have received a copy of the GNU General Public License
  * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111, USA.
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
  *****************************************************************************/
 
 #include "plugin.h"
@@ -55,7 +55,7 @@ STDMETHODIMP VLCOleInPlaceObject::InPlaceDeactivate(void)
         _p_instance->onInPlaceDeactivate();
 
         LPOLEOBJECT p_oleObject;
-        if( SUCCEEDED(QueryInterface(IID_IOleObject, (void**)&p_oleObject)) ) 
+        if( SUCCEEDED(QueryInterface(IID_IOleObject, (void**)&p_oleObject)) )
         {
             LPOLECLIENTSITE p_clientSite;
             if( SUCCEEDED(p_oleObject->GetClientSite(&p_clientSite)) )
@@ -81,12 +81,10 @@ STDMETHODIMP VLCOleInPlaceObject::UIDeactivate(void)
     if( _p_instance->isInPlaceActive() )
     {
         if( _p_instance->hasFocus() )
-        {
             _p_instance->setFocus(FALSE);
-        }
 
         LPOLEOBJECT p_oleObject;
-        if( SUCCEEDED(QueryInterface(IID_IOleObject, (void**)&p_oleObject)) ) 
+        if( SUCCEEDED(QueryInterface(IID_IOleObject, (void**)&p_oleObject)) )
         {
             LPOLECLIENTSITE p_clientSite;
             if( SUCCEEDED(p_oleObject->GetClientSite(&p_clientSite)) )
@@ -95,6 +93,25 @@ STDMETHODIMP VLCOleInPlaceObject::UIDeactivate(void)
 
                 if( SUCCEEDED(p_clientSite->QueryInterface(IID_IOleInPlaceSite, (void**)&p_inPlaceSite)) )
                 {
+                    LPOLEINPLACEFRAME p_inPlaceFrame;
+                    LPOLEINPLACEUIWINDOW p_inPlaceUIWindow;
+                    OLEINPLACEFRAMEINFO oleFrameInfo;
+                    RECT posRect, clipRect;
+
+                    oleFrameInfo.cb = sizeof(OLEINPLACEFRAMEINFO);
+                    if( SUCCEEDED(p_inPlaceSite->GetWindowContext(&p_inPlaceFrame, &p_inPlaceUIWindow, &posRect, &clipRect, &oleFrameInfo)) )
+                    {
+                        if( p_inPlaceFrame )
+                        {
+                            p_inPlaceFrame->SetActiveObject(NULL, NULL);
+                            p_inPlaceFrame->Release();
+                        }
+                        if( p_inPlaceUIWindow )
+                        {
+                            p_inPlaceUIWindow->SetActiveObject(NULL, NULL);
+                            p_inPlaceUIWindow->Release();
+                        }
+                    }
                     p_inPlaceSite->OnUIDeactivate(FALSE);
                     p_inPlaceSite->Release();
                 }