make does like tabs, right? Fix build.

svn path=/trunk/; revision=34540
This commit is contained in:
James Tabor 2008-07-16 01:22:26 +00:00
parent 44e8888c47
commit 702a9bb706
10 changed files with 175 additions and 95 deletions

View file

@ -167,20 +167,20 @@ all: $(ROS_AUTOMAKE)
.SUFFIXES:
ifeq ($(HOST),)
ifeq ($(word 1,$(shell gcc -dumpmachine)),mingw32)
ifeq ($(findstring msys,$(shell sh --version 2>nul)),msys)
export OSTYPE = msys
HOST=mingw32-linux
HOST_CFLAGS+=-fshort-wchar
HOST_CPPFLAGS+=-fshort-wchar
else
HOST=mingw32-windows
endif
else
HOST=mingw32-linux
HOST_CFLAGS+=-fshort-wchar
HOST_CPPFLAGS+=-fshort-wchar
endif
ifeq ($(word 1,$(shell gcc -dumpmachine)),mingw32)
ifeq ($(findstring msys,$(shell sh --version 2>nul)),msys)
export OSTYPE = msys
HOST=mingw32-linux
HOST_CFLAGS+=-fshort-wchar
HOST_CPPFLAGS+=-fshort-wchar
else
HOST=mingw32-windows
endif
else
HOST=mingw32-linux
HOST_CFLAGS+=-fshort-wchar
HOST_CPPFLAGS+=-fshort-wchar
endif
endif
# Default to half-verbose mode

View file

@ -742,9 +742,13 @@ DefWndTrackScrollBar(HWND Wnd, WPARAM wParam, POINT Pt)
LRESULT
DefWndHandleSysCommand(HWND hWnd, WPARAM wParam, LPARAM lParam)
{
WINDOWPLACEMENT wp;
// WINDOWPLACEMENT wp;
POINT Pt;
// ATM, This is for Hook call.
if (NtUserMessageCall( hWnd, WM_SYSCOMMAND, wParam, lParam, 0, NUMC_DEFWINDOWPROC, FALSE))
return 0;
switch (wParam & 0xfff0)
{
case SC_MOVE:
@ -752,28 +756,40 @@ DefWndHandleSysCommand(HWND hWnd, WPARAM wParam, LPARAM lParam)
DefWndDoSizeMove(hWnd, wParam);
break;
case SC_MINIMIZE:
wp.length = sizeof(WINDOWPLACEMENT);
FIXME("SysCommand SC_MINIMIZE\n");
/* wp.length = sizeof(WINDOWPLACEMENT);
if(GetWindowPlacement(hWnd, &wp))
{
wp.showCmd = SW_MINIMIZE;
SetWindowPlacement(hWnd, &wp);
}
}*/
if (hWnd == GetForegroundWindow())
ShowOwnedPopups(hWnd,FALSE);
ShowWindow( hWnd, SW_MINIMIZE );
break;
case SC_MAXIMIZE:
wp.length = sizeof(WINDOWPLACEMENT);
FIXME("SysCommand SC_MAXIMIZE\n");
/* wp.length = sizeof(WINDOWPLACEMENT);
if(GetWindowPlacement(hWnd, &wp))
{
wp.showCmd = SW_MAXIMIZE;
SetWindowPlacement(hWnd, &wp);
}
}*/
if (IsIconic(hWnd) && hWnd == GetForegroundWindow())
ShowOwnedPopups(hWnd,TRUE);
ShowWindow( hWnd, SW_MAXIMIZE );
break;
case SC_RESTORE:
wp.length = sizeof(WINDOWPLACEMENT);
FIXME("SysCommand SC_RESTORE\n");
/* wp.length = sizeof(WINDOWPLACEMENT);
if(GetWindowPlacement(hWnd, &wp))
{
wp.showCmd = SW_RESTORE;
SetWindowPlacement(hWnd, &wp);
}
}*/
if (IsIconic(hWnd) && hWnd == GetForegroundWindow())
ShowOwnedPopups(hWnd,TRUE);
ShowWindow( hWnd, SW_RESTORE );
break;
case SC_CLOSE:
SendMessageA(hWnd, WM_CLOSE, 0, 0);
@ -1410,7 +1426,8 @@ User32DefWindowProc(HWND hWnd,
case WM_SHOWWINDOW:
{
NtUserMessageCall( hWnd, Msg, wParam, lParam, 0, NUMC_DEFWINDOWPROC, FALSE);
if (lParam) // Call when it is necessary.
NtUserMessageCall( hWnd, Msg, wParam, lParam, 0, NUMC_DEFWINDOWPROC, FALSE);
break;
}

View file

@ -1617,6 +1617,7 @@ SetWindowPos(HWND hWnd,
int cy,
UINT uFlags)
{
FIXME("SetWindowPos\n");
return NtUserSetWindowPos(hWnd,hWndInsertAfter, X, Y, cx, cy, uFlags);
}
@ -1713,6 +1714,7 @@ BOOL STDCALL
ShowWindow(HWND hWnd,
int nCmdShow)
{
FIXME("ShowWindow\n");
return NtUserShowWindow(hWnd, nCmdShow);
}

View file

@ -13,7 +13,15 @@
#define NDEBUG
#include <debug.h>
LRESULT FASTCALL
IntDefWinHandleSysCommand( PWINDOW_OBJECT Window, WPARAM wParam, LPARAM lParam )
{
DPRINT1("hwnd %p WM_SYSCOMMAND %lx %lx\n", Window->hSelf, wParam, lParam );
if (co_HOOK_CallHooks(WH_CBT, HCBT_SYSCOMMAND, wParam, lParam))
return 1;
return 0;
}
/*
Win32k counterpart of User DefWindowProc
*/
@ -25,6 +33,7 @@ IntDefWindowProc(
LPARAM lParam)
{
PWINDOW Wnd;
LRESULT lResult = 0;
if (Msg > WM_USER) return 0;
@ -33,6 +42,11 @@ IntDefWindowProc(
switch (Msg)
{
case WM_SYSCOMMAND:
{
lResult = IntDefWinHandleSysCommand( Window, wParam, lParam );
break;
}
case WM_SHOWWINDOW:
{
if ((Wnd->Style & WS_VISIBLE) && wParam) break;
@ -54,7 +68,7 @@ IntDefWindowProc(
break;
}
return 0;
return lResult;
}

View file

@ -107,11 +107,14 @@ IntAddHook(PETHREAD Thread, int HookId, BOOLEAN Global, PWINSTATION_OBJECT WinSt
Hook->Thread = Thread;
Hook->HookId = HookId;
W32Thread = ((PW32THREAD)Thread->Tcb.Win32Thread);
ASSERT(W32Thread != NULL);
W32Thread->Hooks |= HOOKID_TO_FLAG(HookId);
if (W32Thread->ThreadInfo != NULL)
W32Thread->ThreadInfo->Hooks = W32Thread->Hooks;
if (Thread)
{
W32Thread = ((PW32THREAD)Thread->Tcb.Win32Thread);
ASSERT(W32Thread != NULL);
W32Thread->Hooks |= HOOKID_TO_FLAG(HookId);
if (W32Thread->ThreadInfo != NULL)
W32Thread->ThreadInfo->Hooks = W32Thread->Hooks;
}
RtlInitUnicodeString(&Hook->ModuleName, NULL);
@ -318,7 +321,7 @@ co_HOOK_CallHooks(INT HookId, INT Code, WPARAM wParam, LPARAM lParam)
return IntCallLowLevelHook(HookId, Code, wParam, lParam, Hook);
}
if (Hook->Thread != PsGetCurrentThread())
if ((Hook->Thread != PsGetCurrentThread()) && (Hook->Thread != NULL))
{
DPRINT1("Calling hooks in other threads not implemented yet");
return 0;
@ -570,7 +573,7 @@ NtUserSetWindowsHookEx(
/* We only (partially) support local WH_CBT hooks and
* WH_KEYBOARD_LL/WH_MOUSE_LL hooks for now */
if ((WH_CBT != HookId || Global)
&& WH_KEYBOARD_LL != HookId && WH_MOUSE_LL != HookId) // && WH_GETMESSAGE != HookId)
&& WH_KEYBOARD_LL != HookId && WH_MOUSE_LL != HookId && WH_GETMESSAGE != HookId)
{
#if 0 /* Removed to get winEmbed working again */
UNIMPLEMENTED

View file

@ -736,6 +736,7 @@ NtUserCallHwndLock(
case HWNDLOCK_ROUTINE_SETFOREGROUNDWINDOW:
Ret = co_IntSetForegroundWindow(Window);
DPRINT1("Leave NtUserCallHwndLock SetForegroundWindow, ret=%i\n",Ret);
break;
case HWNDLOCK_ROUTINE_UPDATEWINDOW:

View file

@ -3333,6 +3333,7 @@ UserGetWindow(HWND hWnd, UINT Relationship)
break;
case GW_HWNDNEXT:
DPRINT1("GW_HWNDNEXT\n");
if (Window->NextSibling)
hWndResult = Window->NextSibling->hSelf;
break;
@ -3374,13 +3375,13 @@ NtUserGetWindow(HWND hWnd, UINT Relationship)
{
DECLARE_RETURN(HWND);
DPRINT("Enter NtUserGetWindow\n");
DPRINT1("Enter NtUserGetWindow\n");
UserEnterShared();
RETURN(UserGetWindow(hWnd, Relationship));
CLEANUP:
DPRINT("Leave NtUserGetWindow, ret=%i\n",_ret_);
DPRINT1("Leave NtUserGetWindow, ret=%i\n",_ret_);
UserLeave();
END_CLEANUP;
}
@ -4244,7 +4245,7 @@ NtUserSetWindowPos(
BOOL ret;
USER_REFERENCE_ENTRY Ref;
DPRINT("Enter NtUserSetWindowPos\n");
DPRINT1("Enter NtUserSetWindowPos\n");
UserEnterExclusive();
if (!(Window = UserGetWindowObject(hWnd)))
@ -4259,7 +4260,7 @@ NtUserSetWindowPos(
RETURN(ret);
CLEANUP:
DPRINT("Leave NtUserSetWindowPos, ret=%i\n",_ret_);
DPRINT1("Leave NtUserSetWindowPos, ret=%i\n",_ret_);
UserLeave();
END_CLEANUP;
}
@ -4407,7 +4408,7 @@ NtUserShowWindow(HWND hWnd, LONG nCmdShow)
DECLARE_RETURN(BOOL);
USER_REFERENCE_ENTRY Ref;
DPRINT("Enter NtUserShowWindow\n");
DPRINT1("Enter NtUserShowWindow\n");
UserEnterExclusive();
if (!(Window = UserGetWindowObject(hWnd)))
@ -4422,7 +4423,7 @@ NtUserShowWindow(HWND hWnd, LONG nCmdShow)
RETURN(ret);
CLEANUP:
DPRINT("Leave NtUserShowWindow, ret=%i\n",_ret_);
DPRINT1("Leave NtUserShowWindow, ret=%i\n",_ret_);
UserLeave();
END_CLEANUP;
}

View file

@ -306,15 +306,24 @@ co_WinPosMinMaximize(PWINDOW_OBJECT Window, UINT ShowFlag, RECT* NewPos)
Size.x = Wnd->WindowRect.left;
Size.y = Wnd->WindowRect.top;
WinPosInitInternalPos(Window, &Size, &Wnd->WindowRect);
if (co_HOOK_CallHooks(WH_CBT, HCBT_MINMAX, (WPARAM)Window->hSelf, ShowFlag))
return SWP_NOSIZE | SWP_NOMOVE;
if (Wnd->Style & WS_MINIMIZE)
if (Wnd->Style & WS_MINIMIZE)
{
switch (ShowFlag)
{
if (!co_IntSendMessage(Window->hSelf, WM_QUERYOPEN, 0, 0))
{
return(SWP_NOSIZE | SWP_NOMOVE);
}
SwpFlags |= SWP_NOCOPYBITS;
case SW_MINIMIZE:
return SWP_NOSIZE | SWP_NOMOVE;
}
if (!co_IntSendMessage(Window->hSelf, WM_QUERYOPEN, 0, 0))
{
return(SWP_NOSIZE | SWP_NOMOVE);
}
SwpFlags |= SWP_NOCOPYBITS;
}
switch (ShowFlag)
{
case SW_MINIMIZE:
@ -1216,7 +1225,7 @@ co_WinPosSetWindowPos(
if (RgnType != ERROR && RgnType != NULLREGION)
{
/* old code
NtGdiOffsetRgn(DirtyRgn, Window->WindowRect.left, Window->WindowRect.top);
NtGdiOffsetRgn(DirtyRgn, Window->Wnd->WindowRect.left, Window->Wnd->WindowRect.top);
IntInvalidateWindows(Window, DirtyRgn,
RDW_ERASE | RDW_FRAME | RDW_INVALIDATE | RDW_ALLCHILDREN);
}
@ -1314,7 +1323,7 @@ co_WinPosShowWindow(PWINDOW_OBJECT Window, INT Cmd)
{
BOOLEAN WasVisible;
UINT Swp = 0;
RECT NewPos;
RECT NewPos = {0, 0, 0, 0};
BOOLEAN ShowFlag;
// HRGN VisibleRgn;
PWINDOW Wnd;
@ -1334,53 +1343,29 @@ co_WinPosShowWindow(PWINDOW_OBJECT Window, INT Cmd)
}
Swp |= SWP_HIDEWINDOW | SWP_NOSIZE | SWP_NOMOVE;
if (Window->hSelf != UserGetActiveWindow())
// if (Wnd->Style & WS_CHILD)
Swp |= SWP_NOACTIVATE | SWP_NOZORDER;
break;
}
case SW_SHOWMINNOACTIVE:
case SW_MINIMIZE:
Swp |= SWP_NOACTIVATE | SWP_NOZORDER;
/* Fall through. */
case SW_SHOWMINIMIZED:
Swp |= SWP_SHOWWINDOW;
/* Fall through. */
case SW_MINIMIZE:
{
Swp |= SWP_NOACTIVATE;
if (!(Wnd->Style & WS_MINIMIZE))
{
Swp |= co_WinPosMinMaximize(Window, SW_MINIMIZE, &NewPos) |
SWP_FRAMECHANGED;
}
else
{
Swp |= SWP_NOSIZE | SWP_NOMOVE;
if (! WasVisible)
{
Swp |= SWP_FRAMECHANGED;
}
}
break;
}
DPRINT1("ShowWindow _MINIMIZE\n");
Swp |= SWP_SHOWWINDOW | SWP_FRAMECHANGED;
Swp |= co_WinPosMinMaximize(Window, SW_MINIMIZE, &NewPos);
// if ((Wnd->Style & WS_MINIMIZE) && WasVisible) return TRUE;
break;
case SW_SHOWMAXIMIZED:
{
Swp |= SWP_SHOWWINDOW;
if (!(Wnd->Style & WS_MAXIMIZE))
{
Swp |= co_WinPosMinMaximize(Window, SW_MAXIMIZE, &NewPos) |
SWP_FRAMECHANGED;
}
else
{
Swp |= SWP_NOSIZE | SWP_NOMOVE;
if (! WasVisible)
{
Swp |= SWP_FRAMECHANGED;
}
}
break;
}
DPRINT1("ShowWindow _MAXIMIZE\n");
if (!WasVisible) Swp |= SWP_SHOWWINDOW;
Swp |= SWP_FRAMECHANGED;
Swp |= co_WinPosMinMaximize(Window, SW_MAXIMIZE, &NewPos);
// if ((Wnd->Style & WS_MAXIMIZE) && WasVisible) return TRUE;
break;
case SW_SHOWNA:
Swp |= SWP_NOACTIVATE | SWP_NOZORDER;
@ -1392,27 +1377,32 @@ co_WinPosShowWindow(PWINDOW_OBJECT Window, INT Cmd)
break;
case SW_SHOWNOACTIVATE:
//Swp |= SWP_NOZORDER;
Swp |= SWP_NOACTIVATE | SWP_NOZORDER;
/* Fall through. */
case SW_SHOWNORMAL:
case SW_SHOWDEFAULT:
case SW_RESTORE:
Swp |= SWP_SHOWWINDOW;
DPRINT1("ShowWindow _RESTORE\n");
if (!WasVisible) Swp |= SWP_SHOWWINDOW;
if (Wnd->Style & (WS_MINIMIZE | WS_MAXIMIZE))
{
Swp |= co_WinPosMinMaximize(Window, SW_RESTORE, &NewPos) |
SWP_FRAMECHANGED;
Swp |= SWP_FRAMECHANGED;
Swp |= co_WinPosMinMaximize(Window, SW_RESTORE, &NewPos);
}
else
{
// if (WasVisible) return TRUE;
Swp |= SWP_NOSIZE | SWP_NOMOVE;
if (! WasVisible)
{
Swp |= SWP_FRAMECHANGED;
}
}
if (Wnd->Style & WS_CHILD) Swp |= SWP_NOACTIVATE | SWP_NOZORDER;
break;
case SW_FORCEMINIMIZE:
// Fixme!
DPRINT1("Force hung application down! pWindow: %x\n",Window);
return WasVisible;
default:
return WasVisible;
}
ShowFlag = (Cmd != SW_HIDE);

View file

@ -869,6 +869,8 @@ PATH_PolyPolygon ( PDC dc, const POINT* pts, const INT* counts, UINT polygons )
ASSERT ( counts );
ASSERT ( polygons );
if (polygons == 1) return PATH_Polygon ( dc, pts, *counts );
pPath = PATH_LockPath( dc->DcLevel.hPath );
if (!pPath) return FALSE;
@ -879,6 +881,9 @@ PATH_PolyPolygon ( PDC dc, const POINT* pts, const INT* counts, UINT polygons )
return FALSE;
}
startpt.x = 0;
startpt.y = 0;
for(i = 0, poly = 0; poly < polygons; poly++)
{
for(point = 0; point < (ULONG) counts[poly]; point++, i++)
@ -886,7 +891,7 @@ PATH_PolyPolygon ( PDC dc, const POINT* pts, const INT* counts, UINT polygons )
pt = pts[i];
CoordLPtoDP ( dc, &pt );
if(point == 0) startpt = pt;
PATH_AddEntry(pPath, &pt, (point == 0) ? PT_MOVETO : PT_LINETO);
PATH_AddEntry(pPath, &pt, (point == 0) ? PT_MOVETO : PT_LINETO);
}
/* win98 adds an extra line to close the figure for some reason */
PATH_AddEntry(pPath, &startpt, PT_LINETO | PT_CLOSEFIGURE);

View file

@ -34,6 +34,7 @@
#include <freetype/ftglyph.h>
#include <freetype/ftoutln.h>
#include <freetype/ftwinfnt.h>
#include <freetype/ftmodapi.h>
#define NDEBUG
#include <debug.h>
@ -136,6 +137,35 @@ static CHARSETINFO FontTci[MAXTCIINDEX] = {
{ SYMBOL_CHARSET, 42 /* CP_SYMBOL */, FS(31)},
};
static FT_TrueTypeEngineType (*pFT_Get_TrueType_Engine_Type)(FT_Library);
static
BOOL
is_hinting_enabled(void)
{
/* Use the >= 2.2.0 function if available */
if(pFT_Get_TrueType_Engine_Type)
{
FT_TrueTypeEngineType type = pFT_Get_TrueType_Engine_Type(library);
return type == FT_TRUETYPE_ENGINE_TYPE_PATENTED;
}
#ifdef FT_DRIVER_HAS_HINTER
else
{
FT_Module mod;
/* otherwise if we've been compiled with < 2.2.0 headers
use the internal macro */
mod = pFT_Get_Module(library, "truetype");
if(mod && FT_DRIVER_HAS_HINTER(mod))
return TRUE;
}
#endif
return FALSE;
}
BOOL FASTCALL
InitFontSupport(VOID)
{
@ -3295,7 +3325,12 @@ NtGdiGetRasterizerCaps(
OUT LPRASTERIZER_STATUS praststat,
IN ULONG cjBytes)
{
UNIMPLEMENTED;
static int hinting = -1;
if(hinting == -1)
{
hinting = is_hinting_enabled();
}
return FALSE;
}
@ -3902,11 +3937,23 @@ NtGdiGetTextMetricsW(
BOOL
STDCALL
NtGdiSetTextJustification(HDC hDC,
int BreakExtra,
int BreakCount)
int BreakExtra,
int BreakCount)
{
UNIMPLEMENTED;
return FALSE;
PDC Dc;
PDC_ATTR Dc_Attr;
Dc = DC_LockDc(hDC);
if (!Dc)
{
return FALSE;
}
Dc_Attr = Dc->pDc_Attr;
if(!Dc_Attr) Dc_Attr = &Dc->Dc_Attr;
Dc_Attr->cBreak = BreakCount;
Dc_Attr->lBreakExtra = BreakExtra;
DC_UnlockDc(Dc);
return TRUE;
}
DWORD STDCALL