/*++

 Copyright (c) 2001 Microsoft Corporation

 Module Name:

    Acrobat5.cpp

 Abstract:

   Blow off calls to SetWindowPos() w/ bogus coordinates to 
   prevent the app from erronously turning its window into a
   small sasauge in the upper left-hand corner of the screen.

 Notes:

    This is an app specific shim.

 History:

    07/9/2001  reinerf    Created

--*/

#include "precomp.h"

IMPLEMENT_SHIM_BEGIN(Acrobat5)
#include "ShimHookMacro.h"

APIHOOK_ENUM_BEGIN
    APIHOOK_ENUM_ENTRY(SetWindowPos) 
APIHOOK_ENUM_END


BOOL
APIHOOK(SetWindowPos)(
  HWND hWnd,             // handle to window
  HWND hWndInsertAfter,  // placement-order handle
  int X,                 // horizontal position
  int Y,                 // vertical position
  int cx,                // width
  int cy,                // height
  UINT uFlags            // window-positioning options
)
{
    if (!(uFlags & (SWP_NOSIZE | SWP_NOMOVE)))
    {
        HWND hWndParent = GetParent(hWnd);
        
        if ((hWndParent == NULL) ||
            (hWndParent == GetDesktopWindow()))
        {
            if ((X < -3200) || 
                (Y < -3200))
            {
                // a toplevel window is being poorly positioned, ignore the call.
                DPFN( eDbgLevelInfo, "SetWindowPos passed bogus coordinates (X = %d, Y = %d), failing the call\n", X, Y);
                return FALSE;
            }
        }
    }

    return ORIGINAL_API(SetWindowPos)(hWnd, hWndInsertAfter, X, Y, cx, cy, uFlags);
}

/*++

 Register hooked functions

--*/

HOOK_BEGIN
    APIHOOK_ENTRY(USER32.DLL, SetWindowPos)
HOOK_END

IMPLEMENT_SHIM_END