Author: jimtabor Date: Tue Jul 15 20:22:26 2008 New Revision: 34540
URL: http://svn.reactos.org/svn/reactos?rev=34540&view=rev Log: make does like tabs, right? Fix build.
Modified: trunk/reactos/Makefile trunk/reactos/dll/win32/user32/windows/defwnd.c trunk/reactos/dll/win32/user32/windows/window.c trunk/reactos/subsystems/win32/win32k/ntuser/defwnd.c trunk/reactos/subsystems/win32/win32k/ntuser/hook.c trunk/reactos/subsystems/win32/win32k/ntuser/simplecall.c trunk/reactos/subsystems/win32/win32k/ntuser/window.c trunk/reactos/subsystems/win32/win32k/ntuser/winpos.c trunk/reactos/subsystems/win32/win32k/objects/path.c trunk/reactos/subsystems/win32/win32k/objects/text.c
Modified: trunk/reactos/Makefile URL: http://svn.reactos.org/svn/reactos/trunk/reactos/Makefile?rev=34540&r1=3... ============================================================================== --- trunk/reactos/Makefile [iso-8859-1] (original) +++ trunk/reactos/Makefile [iso-8859-1] Tue Jul 15 20:22:26 2008 @@ -167,20 +167,20 @@ .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
Modified: trunk/reactos/dll/win32/user32/windows/defwnd.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/user32/windows/de... ============================================================================== --- trunk/reactos/dll/win32/user32/windows/defwnd.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/user32/windows/defwnd.c [iso-8859-1] Tue Jul 15 20:22:26 2008 @@ -742,8 +742,12 @@ 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) { @@ -752,28 +756,40 @@ 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 @@
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; }
Modified: trunk/reactos/dll/win32/user32/windows/window.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/user32/windows/wi... ============================================================================== --- trunk/reactos/dll/win32/user32/windows/window.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/user32/windows/window.c [iso-8859-1] Tue Jul 15 20:22:26 2008 @@ -1617,6 +1617,7 @@ int cy, UINT uFlags) { + FIXME("SetWindowPos\n"); return NtUserSetWindowPos(hWnd,hWndInsertAfter, X, Y, cx, cy, uFlags); }
@@ -1713,6 +1714,7 @@ ShowWindow(HWND hWnd, int nCmdShow) { + FIXME("ShowWindow\n"); return NtUserShowWindow(hWnd, nCmdShow); }
Modified: trunk/reactos/subsystems/win32/win32k/ntuser/defwnd.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/ntu... ============================================================================== --- trunk/reactos/subsystems/win32/win32k/ntuser/defwnd.c [iso-8859-1] (original) +++ trunk/reactos/subsystems/win32/win32k/ntuser/defwnd.c [iso-8859-1] Tue Jul 15 20:22:26 2008 @@ -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 @@ LPARAM lParam) { PWINDOW Wnd; + LRESULT lResult = 0;
if (Msg > WM_USER) return 0;
@@ -33,6 +42,11 @@
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 @@ break; }
- return 0; + return lResult; }
Modified: trunk/reactos/subsystems/win32/win32k/ntuser/hook.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/ntu... ============================================================================== --- trunk/reactos/subsystems/win32/win32k/ntuser/hook.c [iso-8859-1] (original) +++ trunk/reactos/subsystems/win32/win32k/ntuser/hook.c [iso-8859-1] Tue Jul 15 20:22:26 2008 @@ -107,11 +107,14 @@ 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 @@ 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 @@ /* 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
Modified: trunk/reactos/subsystems/win32/win32k/ntuser/simplecall.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/ntu... ============================================================================== --- trunk/reactos/subsystems/win32/win32k/ntuser/simplecall.c [iso-8859-1] (original) +++ trunk/reactos/subsystems/win32/win32k/ntuser/simplecall.c [iso-8859-1] Tue Jul 15 20:22:26 2008 @@ -736,6 +736,7 @@
case HWNDLOCK_ROUTINE_SETFOREGROUNDWINDOW: Ret = co_IntSetForegroundWindow(Window); + DPRINT1("Leave NtUserCallHwndLock SetForegroundWindow, ret=%i\n",Ret); break;
case HWNDLOCK_ROUTINE_UPDATEWINDOW:
Modified: trunk/reactos/subsystems/win32/win32k/ntuser/window.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/ntu... ============================================================================== --- trunk/reactos/subsystems/win32/win32k/ntuser/window.c [iso-8859-1] (original) +++ trunk/reactos/subsystems/win32/win32k/ntuser/window.c [iso-8859-1] Tue Jul 15 20:22:26 2008 @@ -3333,6 +3333,7 @@ break;
case GW_HWNDNEXT: + DPRINT1("GW_HWNDNEXT\n"); if (Window->NextSibling) hWndResult = Window->NextSibling->hSelf; break; @@ -3374,13 +3375,13 @@ { 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 @@ BOOL ret; USER_REFERENCE_ENTRY Ref;
- DPRINT("Enter NtUserSetWindowPos\n"); + DPRINT1("Enter NtUserSetWindowPos\n"); UserEnterExclusive();
if (!(Window = UserGetWindowObject(hWnd))) @@ -4259,7 +4260,7 @@ RETURN(ret);
CLEANUP: - DPRINT("Leave NtUserSetWindowPos, ret=%i\n",_ret_); + DPRINT1("Leave NtUserSetWindowPos, ret=%i\n",_ret_); UserLeave(); END_CLEANUP; } @@ -4407,7 +4408,7 @@ DECLARE_RETURN(BOOL); USER_REFERENCE_ENTRY Ref;
- DPRINT("Enter NtUserShowWindow\n"); + DPRINT1("Enter NtUserShowWindow\n"); UserEnterExclusive();
if (!(Window = UserGetWindowObject(hWnd))) @@ -4422,7 +4423,7 @@ RETURN(ret);
CLEANUP: - DPRINT("Leave NtUserShowWindow, ret=%i\n",_ret_); + DPRINT1("Leave NtUserShowWindow, ret=%i\n",_ret_); UserLeave(); END_CLEANUP; }
Modified: trunk/reactos/subsystems/win32/win32k/ntuser/winpos.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/ntu... ============================================================================== --- trunk/reactos/subsystems/win32/win32k/ntuser/winpos.c [iso-8859-1] (original) +++ trunk/reactos/subsystems/win32/win32k/ntuser/winpos.c [iso-8859-1] Tue Jul 15 20:22:26 2008 @@ -306,15 +306,24 @@ Size.x = Wnd->WindowRect.left; Size.y = Wnd->WindowRect.top; WinPosInitInternalPos(Window, &Size, &Wnd->WindowRect); - - if (Wnd->Style & WS_MINIMIZE) - { - if (!co_IntSendMessage(Window->hSelf, WM_QUERYOPEN, 0, 0)) - { - return(SWP_NOSIZE | SWP_NOMOVE); - } - SwpFlags |= SWP_NOCOPYBITS; - } + + if (co_HOOK_CallHooks(WH_CBT, HCBT_MINMAX, (WPARAM)Window->hSelf, ShowFlag)) + return SWP_NOSIZE | SWP_NOMOVE; + + if (Wnd->Style & WS_MINIMIZE) + { + switch (ShowFlag) + { + 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 @@ 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 @@ { BOOLEAN WasVisible; UINT Swp = 0; - RECT NewPos; + RECT NewPos = {0, 0, 0, 0}; BOOLEAN ShowFlag; // HRGN VisibleRgn; PWINDOW Wnd; @@ -1334,53 +1343,29 @@ } 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 @@ 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);
Modified: trunk/reactos/subsystems/win32/win32k/objects/path.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/obj... ============================================================================== --- trunk/reactos/subsystems/win32/win32k/objects/path.c [iso-8859-1] (original) +++ trunk/reactos/subsystems/win32/win32k/objects/path.c [iso-8859-1] Tue Jul 15 20:22:26 2008 @@ -869,6 +869,8 @@ ASSERT ( counts ); ASSERT ( polygons );
+ if (polygons == 1) return PATH_Polygon ( dc, pts, *counts ); + pPath = PATH_LockPath( dc->DcLevel.hPath ); if (!pPath) return FALSE;
@@ -878,6 +880,9 @@ PATH_UnlockPath( pPath ); return FALSE; } + + startpt.x = 0; + startpt.y = 0;
for(i = 0, poly = 0; poly < polygons; poly++) { @@ -886,7 +891,7 @@ 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);
Modified: trunk/reactos/subsystems/win32/win32k/objects/text.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/obj... ============================================================================== --- trunk/reactos/subsystems/win32/win32k/objects/text.c [iso-8859-1] (original) +++ trunk/reactos/subsystems/win32/win32k/objects/text.c [iso-8859-1] Tue Jul 15 20:22:26 2008 @@ -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> @@ -135,6 +136,35 @@ { DEFAULT_CHARSET, 0, FS(0)}, { 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 @@ 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 @@ BOOL STDCALL NtGdiSetTextJustification(HDC hDC, - int BreakExtra, - int BreakCount) -{ - UNIMPLEMENTED; - return FALSE; + int BreakExtra, + int BreakCount) +{ + 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