ReactOS.org
Sign In
Sign Up
Sign In
Sign Up
Manage this list
×
Keyboard Shortcuts
Thread View
j
: Next unread message
k
: Previous unread message
j a
: Jump to all threads
j l
: Jump to MailingList overview
2024
December
November
October
September
August
July
June
May
April
March
February
January
2023
December
November
October
September
August
July
June
May
April
March
February
January
2022
December
November
October
September
August
July
June
May
April
March
February
January
2021
December
November
October
September
August
July
June
May
April
March
February
January
2020
December
November
October
September
August
July
June
May
April
March
February
January
2019
December
November
October
September
August
July
June
May
April
March
February
January
2018
December
November
October
September
August
July
June
May
April
March
February
January
2017
December
November
October
September
August
July
June
May
April
March
February
January
2016
December
November
October
September
August
July
June
May
April
March
February
January
2015
December
November
October
September
August
July
June
May
April
March
February
January
2014
December
November
October
September
August
July
June
May
April
March
February
January
2013
December
November
October
September
August
July
June
May
April
March
February
January
2012
December
November
October
September
August
July
June
May
April
March
February
January
2011
December
November
October
September
August
July
June
May
April
March
February
January
2010
December
November
October
September
August
July
June
May
April
March
February
January
2009
December
November
October
September
August
July
June
May
April
March
February
January
2008
December
November
October
September
August
July
June
May
April
March
February
January
2007
December
November
October
September
August
July
June
May
April
March
February
January
2006
December
November
October
September
August
July
June
May
April
March
February
January
2005
December
November
October
September
August
July
June
May
April
March
February
January
2004
December
November
October
September
August
July
June
May
April
March
February
List overview
Download
Ros-diffs
September 2009
----- 2024 -----
December 2024
November 2024
October 2024
September 2024
August 2024
July 2024
June 2024
May 2024
April 2024
March 2024
February 2024
January 2024
----- 2023 -----
December 2023
November 2023
October 2023
September 2023
August 2023
July 2023
June 2023
May 2023
April 2023
March 2023
February 2023
January 2023
----- 2022 -----
December 2022
November 2022
October 2022
September 2022
August 2022
July 2022
June 2022
May 2022
April 2022
March 2022
February 2022
January 2022
----- 2021 -----
December 2021
November 2021
October 2021
September 2021
August 2021
July 2021
June 2021
May 2021
April 2021
March 2021
February 2021
January 2021
----- 2020 -----
December 2020
November 2020
October 2020
September 2020
August 2020
July 2020
June 2020
May 2020
April 2020
March 2020
February 2020
January 2020
----- 2019 -----
December 2019
November 2019
October 2019
September 2019
August 2019
July 2019
June 2019
May 2019
April 2019
March 2019
February 2019
January 2019
----- 2018 -----
December 2018
November 2018
October 2018
September 2018
August 2018
July 2018
June 2018
May 2018
April 2018
March 2018
February 2018
January 2018
----- 2017 -----
December 2017
November 2017
October 2017
September 2017
August 2017
July 2017
June 2017
May 2017
April 2017
March 2017
February 2017
January 2017
----- 2016 -----
December 2016
November 2016
October 2016
September 2016
August 2016
July 2016
June 2016
May 2016
April 2016
March 2016
February 2016
January 2016
----- 2015 -----
December 2015
November 2015
October 2015
September 2015
August 2015
July 2015
June 2015
May 2015
April 2015
March 2015
February 2015
January 2015
----- 2014 -----
December 2014
November 2014
October 2014
September 2014
August 2014
July 2014
June 2014
May 2014
April 2014
March 2014
February 2014
January 2014
----- 2013 -----
December 2013
November 2013
October 2013
September 2013
August 2013
July 2013
June 2013
May 2013
April 2013
March 2013
February 2013
January 2013
----- 2012 -----
December 2012
November 2012
October 2012
September 2012
August 2012
July 2012
June 2012
May 2012
April 2012
March 2012
February 2012
January 2012
----- 2011 -----
December 2011
November 2011
October 2011
September 2011
August 2011
July 2011
June 2011
May 2011
April 2011
March 2011
February 2011
January 2011
----- 2010 -----
December 2010
November 2010
October 2010
September 2010
August 2010
July 2010
June 2010
May 2010
April 2010
March 2010
February 2010
January 2010
----- 2009 -----
December 2009
November 2009
October 2009
September 2009
August 2009
July 2009
June 2009
May 2009
April 2009
March 2009
February 2009
January 2009
----- 2008 -----
December 2008
November 2008
October 2008
September 2008
August 2008
July 2008
June 2008
May 2008
April 2008
March 2008
February 2008
January 2008
----- 2007 -----
December 2007
November 2007
October 2007
September 2007
August 2007
July 2007
June 2007
May 2007
April 2007
March 2007
February 2007
January 2007
----- 2006 -----
December 2006
November 2006
October 2006
September 2006
August 2006
July 2006
June 2006
May 2006
April 2006
March 2006
February 2006
January 2006
----- 2005 -----
December 2005
November 2005
October 2005
September 2005
August 2005
July 2005
June 2005
May 2005
April 2005
March 2005
February 2005
January 2005
----- 2004 -----
December 2004
November 2004
October 2004
September 2004
August 2004
July 2004
June 2004
May 2004
April 2004
March 2004
February 2004
ros-diffs@reactos.org
16 participants
270 discussions
Start a n
N
ew thread
[cgutman] 43156: - Add debug prints in failure cases - Replace 0 with NO_ERROR
by cgutman@svn.reactos.org
Author: cgutman Date: Sat Sep 26 03:05:45 2009 New Revision: 43156 URL:
http://svn.reactos.org/svn/reactos?rev=43156&view=rev
Log: - Add debug prints in failure cases - Replace 0 with NO_ERROR Modified: trunk/reactos/dll/win32/wshtcpip/wshtcpip.c Modified: trunk/reactos/dll/win32/wshtcpip/wshtcpip.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/wshtcpip/wshtcpi…
============================================================================== --- trunk/reactos/dll/win32/wshtcpip/wshtcpip.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/wshtcpip/wshtcpip.c [iso-8859-1] Sat Sep 26 03:05:45 2009 @@ -50,7 +50,7 @@ { UNIMPLEMENTED - return 0; + return NO_ERROR; } @@ -64,7 +64,7 @@ { UNIMPLEMENTED - return 0; + return NO_ERROR; } @@ -78,7 +78,10 @@ DWORD Size = 2 * sizeof(UINT); if (*SockaddrLength < Size) + { + DPRINT1("Socket address length too small: %d\n", *SockaddrLength); return WSAEFAULT; + } RtlZeroMemory(Sockaddr, *SockaddrLength); @@ -87,7 +90,7 @@ *SockaddrLength = Size; - return 0; + return NO_ERROR; } @@ -99,7 +102,7 @@ { UNIMPLEMENTED - return 0; + return NO_ERROR; } @@ -150,7 +153,7 @@ else SockaddrInfo->EndpointInfo = SockaddrEndpointInfoNormal; - return 0; + return NO_ERROR; } @@ -171,7 +174,7 @@ { UNIMPLEMENTED - return 0; + return NO_ERROR; } @@ -185,7 +188,10 @@ DWORD Size = 2 * sizeof(UINT); if (*SockaddrLength < Size) + { + DPRINT1("Socket address length too small: %d\n", *SockaddrLength); return WSAEFAULT; + } RtlZeroMemory(Sockaddr, *SockaddrLength); @@ -194,7 +200,7 @@ *SockaddrLength = Size; - return 0; + return NO_ERROR; } @@ -210,6 +216,7 @@ if (MappingLength < Size) { + DPRINT1("Mapping length too small: %d\n", MappingLength); return Size; } @@ -240,7 +247,7 @@ Mapping->Mapping[5].SocketType = SOCK_RAW; Mapping->Mapping[5].Protocol = IPPROTO_ICMP; - return 0; + return NO_ERROR; } @@ -253,7 +260,7 @@ { UNIMPLEMENTED - return 0; + return NO_ERROR; } @@ -276,7 +283,7 @@ { UNIMPLEMENTED - return 0; + return NO_ERROR; } @@ -299,7 +306,7 @@ { UNIMPLEMENTED - return 0; + return NO_ERROR; } @@ -323,7 +330,7 @@ break; } - return 0; + return NO_ERROR; } @@ -386,7 +393,7 @@ UNICODE_STRING RawDeviceName = RTL_CONSTANT_STRING(DD_RAW_IP_DEVICE_NAME); NTSTATUS Status; - DPRINT(""); + DPRINT("WSHOpenSocket2 called\n"); switch (*SocketType) { case SOCK_STREAM: @@ -475,7 +482,7 @@ { UNIMPLEMENTED - return 0; + return NO_ERROR; } @@ -490,7 +497,7 @@ { UNIMPLEMENTED - return 0; + return NO_ERROR; } /* EOF */
15 years, 3 months
1
0
0
0
[janderwald] 43155: - Enable building a bootcd
by janderwald@svn.reactos.org
Author: janderwald Date: Sat Sep 26 02:57:22 2009 New Revision: 43155 URL:
http://svn.reactos.org/svn/reactos?rev=43155&view=rev
Log: - Enable building a bootcd Modified: trunk/reactos/drivers/wdm/audio/legacy/wdmaud/wdmaud.h Modified: trunk/reactos/drivers/wdm/audio/legacy/wdmaud/wdmaud.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/wdm/audio/legacy/w…
============================================================================== --- trunk/reactos/drivers/wdm/audio/legacy/wdmaud/wdmaud.h [iso-8859-1] (original) +++ trunk/reactos/drivers/wdm/audio/legacy/wdmaud/wdmaud.h [iso-8859-1] Sat Sep 26 02:57:22 2009 @@ -120,4 +120,46 @@ IN PWDMAUD_DEVICE_INFO DeviceInfo, IN PWDMAUD_CLIENT ClientInfo); +NTSTATUS +NTAPI +WdmAudFrameSize( + IN PDEVICE_OBJECT DeviceObject, + IN PIRP Irp, + IN PWDMAUD_DEVICE_INFO DeviceInfo, + IN PWDMAUD_CLIENT ClientInfo); + +NTSTATUS +NTAPI +WdmAudGetLineInfo( + IN PDEVICE_OBJECT DeviceObject, + IN PIRP Irp, + IN PWDMAUD_DEVICE_INFO DeviceInfo, + IN PWDMAUD_CLIENT ClientInfo); + +NTSTATUS +NTAPI +WdmAudGetLineControls( + IN PDEVICE_OBJECT DeviceObject, + IN PIRP Irp, + IN PWDMAUD_DEVICE_INFO DeviceInfo, + IN PWDMAUD_CLIENT ClientInfo); + +NTSTATUS +NTAPI +WdmAudSetControlDetails( + IN PDEVICE_OBJECT DeviceObject, + IN PIRP Irp, + IN PWDMAUD_DEVICE_INFO DeviceInfo, + IN PWDMAUD_CLIENT ClientInfo); + +NTSTATUS +NTAPI +WdmAudGetControlDetails( + IN PDEVICE_OBJECT DeviceObject, + IN PIRP Irp, + IN PWDMAUD_DEVICE_INFO DeviceInfo, + IN PWDMAUD_CLIENT ClientInfo); + + + #endif
15 years, 3 months
1
0
0
0
[cgutman] 43154: - We want socket closure notification so we don't leak our socket context when the socket is destroyed - Free socket context in WSHNotify
by cgutman@svn.reactos.org
Author: cgutman Date: Sat Sep 26 01:44:51 2009 New Revision: 43154 URL:
http://svn.reactos.org/svn/reactos?rev=43154&view=rev
Log: - We want socket closure notification so we don't leak our socket context when the socket is destroyed - Free socket context in WSHNotify Modified: trunk/reactos/dll/win32/wshtcpip/wshtcpip.c Modified: trunk/reactos/dll/win32/wshtcpip/wshtcpip.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/wshtcpip/wshtcpi…
============================================================================== --- trunk/reactos/dll/win32/wshtcpip/wshtcpip.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/wshtcpip/wshtcpip.c [iso-8859-1] Sat Sep 26 01:44:51 2009 @@ -312,7 +312,16 @@ IN HANDLE TdiConnectionObjectHandle, IN DWORD NotifyEvent) { - UNIMPLEMENTED + switch (NotifyEvent) + { + case WSH_NOTIFY_CLOSE: + HeapFree(GetProcessHeap(), 0, HelperDllSocketContext); + break; + + default: + DPRINT1("Unwanted notification received! (%d)\n", NotifyEvent); + break; + } return 0; } @@ -446,6 +455,7 @@ Context->Flags = Flags; *HelperDllSocketContext = Context; + *NotificationEvents = WSH_NOTIFY_CLOSE; return NO_ERROR; }
15 years, 3 months
1
0
0
0
[cgutman] 43153: - Fix implementation of WSHGetWildcardSockaddr - Implement WSHGetBroadcastSockaddr
by cgutman@svn.reactos.org
Author: cgutman Date: Sat Sep 26 01:27:44 2009 New Revision: 43153 URL:
http://svn.reactos.org/svn/reactos?rev=43153&view=rev
Log: - Fix implementation of WSHGetWildcardSockaddr - Implement WSHGetBroadcastSockaddr Modified: trunk/reactos/dll/win32/wshtcpip/wshtcpip.c Modified: trunk/reactos/dll/win32/wshtcpip/wshtcpip.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/wshtcpip/wshtcpi…
============================================================================== --- trunk/reactos/dll/win32/wshtcpip/wshtcpip.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/wshtcpip/wshtcpip.c [iso-8859-1] Sat Sep 26 01:27:44 2009 @@ -75,7 +75,17 @@ OUT PSOCKADDR Sockaddr, OUT PINT SockaddrLength) { - UNIMPLEMENTED + DWORD Size = 2 * sizeof(UINT); + + if (*SockaddrLength < Size) + return WSAEFAULT; + + RtlZeroMemory(Sockaddr, *SockaddrLength); + + Sockaddr->sa_family = AF_INET; + *((PUINT)Sockaddr->sa_data) = INADDR_BROADCAST; + + *SockaddrLength = Size; return 0; } @@ -172,8 +182,18 @@ OUT PSOCKADDR Sockaddr, OUT PINT SockaddrLength) { - RtlZeroMemory((PVOID)Sockaddr, *SockaddrLength); + DWORD Size = 2 * sizeof(UINT); + + if (*SockaddrLength < Size) + return WSAEFAULT; + + RtlZeroMemory(Sockaddr, *SockaddrLength); + Sockaddr->sa_family = AF_INET; + *((PUINT)Sockaddr->sa_data) = INADDR_ANY; + + *SockaddrLength = Size; + return 0; }
15 years, 3 months
1
0
0
0
[cgutman] 43152: - Fix parameter checking in WSHGetSockaddrType - Implement WSHGetWinsockMapping
by cgutman@svn.reactos.org
Author: cgutman Date: Fri Sep 25 23:46:18 2009 New Revision: 43152 URL:
http://svn.reactos.org/svn/reactos?rev=43152&view=rev
Log: - Fix parameter checking in WSHGetSockaddrType - Implement WSHGetWinsockMapping Modified: trunk/reactos/dll/win32/wshtcpip/wshtcpip.c Modified: trunk/reactos/dll/win32/wshtcpip/wshtcpip.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/wshtcpip/wshtcpi…
============================================================================== --- trunk/reactos/dll/win32/wshtcpip/wshtcpip.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/wshtcpip/wshtcpip.c [iso-8859-1] Fri Sep 25 23:46:18 2009 @@ -107,51 +107,39 @@ { PSOCKADDR_IN ipv4 = (PSOCKADDR_IN)Sockaddr; - if ((ipv4 != NULL) - && (SockaddrLength == sizeof(SOCKADDR_IN)) - && (ipv4->sin_family == AF_INET) - && (SockaddrInfo != NULL)) + if (!ipv4 || !SockaddrInfo || SockaddrLength < sizeof(SOCKADDR_IN) || + ipv4->sin_family != AF_INET) { - - switch (ntohl(ipv4->sin_addr.s_addr)) - { - case INADDR_ANY: - SockaddrInfo->AddressInfo = SockaddrAddressInfoWildcard; - break; - - case INADDR_BROADCAST: - SockaddrInfo->AddressInfo = SockaddrAddressInfoBroadcast; - break; - - case INADDR_LOOPBACK: - SockaddrInfo->AddressInfo = SockaddrAddressInfoLoopback; - break; - - default: - SockaddrInfo->AddressInfo = SockaddrAddressInfoNormal; - break; - } - - if (ntohs(ipv4->sin_port) == 0) - SockaddrInfo->EndpointInfo = SockaddrEndpointInfoWildcard; - else if (ntohs(ipv4->sin_port) < IPPORT_RESERVED) - SockaddrInfo->EndpointInfo = SockaddrEndpointInfoReserved; - else - SockaddrInfo->EndpointInfo = SockaddrEndpointInfoNormal; - - return 0; - } - - DPRINT1("FIXME WSHGetSockaddrType Unsupported Address Family or bad parameters\n"); - if (SockaddrInfo != NULL) + DPRINT1("Invalid parameter: %x %x %d %u\n", ipv4, SockaddrInfo, SockaddrLength, (ipv4 ? ipv4->sin_family : 0)); + return WSAEINVAL; + } + + switch (ntohl(ipv4->sin_addr.s_addr)) { - SockaddrInfo->AddressInfo = SockaddrAddressInfoNormal; - SockaddrInfo->EndpointInfo = SockaddrEndpointInfoNormal; - } - - DPRINT1("Size of Address Family %d \n",SockaddrLength); - - DPRINT1("FIXME WSHGetSockaddrType return Winsock error, but we do not return any error\n"); + case INADDR_ANY: + SockaddrInfo->AddressInfo = SockaddrAddressInfoWildcard; + break; + + case INADDR_BROADCAST: + SockaddrInfo->AddressInfo = SockaddrAddressInfoBroadcast; + break; + + case INADDR_LOOPBACK: + SockaddrInfo->AddressInfo = SockaddrAddressInfoLoopback; + break; + + default: + SockaddrInfo->AddressInfo = SockaddrAddressInfoNormal; + break; + } + + if (ntohs(ipv4->sin_port) == 0) + SockaddrInfo->EndpointInfo = SockaddrEndpointInfoWildcard; + else if (ntohs(ipv4->sin_port) < IPPORT_RESERVED) + SockaddrInfo->EndpointInfo = SockaddrEndpointInfoReserved; + else + SockaddrInfo->EndpointInfo = SockaddrEndpointInfoNormal; + return 0; } @@ -196,7 +184,41 @@ OUT PWINSOCK_MAPPING Mapping, IN DWORD MappingLength) { - UNIMPLEMENTED + DWORD Rows = 6; + DWORD Columns = 3; + DWORD Size = 2 * sizeof(DWORD) + Columns * Rows * sizeof(DWORD); + + if (MappingLength < Size) + { + return Size; + } + + Mapping->Rows = Rows; + Mapping->Columns = Columns; + + Mapping->Mapping[0].AddressFamily = AF_INET; + Mapping->Mapping[0].SocketType = SOCK_STREAM; + Mapping->Mapping[0].Protocol = 0; + + Mapping->Mapping[1].AddressFamily = AF_INET; + Mapping->Mapping[1].SocketType = SOCK_STREAM; + Mapping->Mapping[1].Protocol = IPPROTO_TCP; + + Mapping->Mapping[2].AddressFamily = AF_INET; + Mapping->Mapping[2].SocketType = SOCK_DGRAM; + Mapping->Mapping[2].Protocol = 0; + + Mapping->Mapping[3].AddressFamily = AF_INET; + Mapping->Mapping[3].SocketType = SOCK_DGRAM; + Mapping->Mapping[3].Protocol = IPPROTO_UDP; + + Mapping->Mapping[4].AddressFamily = AF_INET; + Mapping->Mapping[4].SocketType = SOCK_RAW; + Mapping->Mapping[4].Protocol = 0; + + Mapping->Mapping[5].AddressFamily = AF_INET; + Mapping->Mapping[5].SocketType = SOCK_RAW; + Mapping->Mapping[5].Protocol = IPPROTO_ICMP; return 0; }
15 years, 3 months
1
0
0
0
[fireball] 43151: - Update user32, gdi32 and winex11.drv to Wine 1.1.30.
by fireball@svn.reactos.org
Author: fireball Date: Fri Sep 25 20:54:49 2009 New Revision: 43151 URL:
http://svn.reactos.org/svn/reactos?rev=43151&view=rev
Log: - Update user32, gdi32 and winex11.drv to Wine 1.1.30. Modified: branches/arwinss/reactos/dll/win32/gdi32/ (props changed) branches/arwinss/reactos/dll/win32/gdi32/bitblt.c branches/arwinss/reactos/dll/win32/gdi32/opengl.c branches/arwinss/reactos/dll/win32/user32/ (props changed) branches/arwinss/reactos/dll/win32/user32/clipboard.c branches/arwinss/reactos/dll/win32/user32/cursoricon.c branches/arwinss/reactos/dll/win32/user32/edit.c branches/arwinss/reactos/dll/win32/user32/hook.c branches/arwinss/reactos/dll/win32/user32/nonclient.c branches/arwinss/reactos/dll/win32/user32/painting.c branches/arwinss/reactos/dll/win32/user32/resources/user32_Ja.rc branches/arwinss/reactos/dll/win32/winex11.drv/ (props changed) branches/arwinss/reactos/dll/win32/winex11.drv/bitblt.c branches/arwinss/reactos/dll/win32/winex11.drv/bitmap.c branches/arwinss/reactos/dll/win32/winex11.drv/brush.c branches/arwinss/reactos/dll/win32/winex11.drv/clipboard.c branches/arwinss/reactos/dll/win32/winex11.drv/dib.c branches/arwinss/reactos/dll/win32/winex11.drv/event.c branches/arwinss/reactos/dll/win32/winex11.drv/graphics.c branches/arwinss/reactos/dll/win32/winex11.drv/init.c branches/arwinss/reactos/dll/win32/winex11.drv/keyboard.c branches/arwinss/reactos/dll/win32/winex11.drv/mouse.c branches/arwinss/reactos/dll/win32/winex11.drv/opengl.c branches/arwinss/reactos/dll/win32/winex11.drv/palette.c branches/arwinss/reactos/dll/win32/winex11.drv/window.c branches/arwinss/reactos/dll/win32/winex11.drv/x11drv.h branches/arwinss/reactos/dll/win32/winex11.drv/xrandr.c branches/arwinss/reactos/dll/win32/winex11.drv/xrender.c branches/arwinss/reactos/dll/win32/winex11.drv/xvidmode.c [This mail would be too long, it was shortened to contain the URLs only.] Modified: branches/arwinss/reactos/dll/win32/gdi32/bitblt.c URL:
http://svn.reactos.org/svn/reactos/branches/arwinss/reactos/dll/win32/gdi32…
Modified: branches/arwinss/reactos/dll/win32/gdi32/opengl.c URL:
http://svn.reactos.org/svn/reactos/branches/arwinss/reactos/dll/win32/gdi32…
Modified: branches/arwinss/reactos/dll/win32/user32/clipboard.c URL:
http://svn.reactos.org/svn/reactos/branches/arwinss/reactos/dll/win32/user3…
Modified: branches/arwinss/reactos/dll/win32/user32/cursoricon.c URL:
http://svn.reactos.org/svn/reactos/branches/arwinss/reactos/dll/win32/user3…
Modified: branches/arwinss/reactos/dll/win32/user32/edit.c URL:
http://svn.reactos.org/svn/reactos/branches/arwinss/reactos/dll/win32/user3…
Modified: branches/arwinss/reactos/dll/win32/user32/hook.c URL:
http://svn.reactos.org/svn/reactos/branches/arwinss/reactos/dll/win32/user3…
Modified: branches/arwinss/reactos/dll/win32/user32/nonclient.c URL:
http://svn.reactos.org/svn/reactos/branches/arwinss/reactos/dll/win32/user3…
Modified: branches/arwinss/reactos/dll/win32/user32/painting.c URL:
http://svn.reactos.org/svn/reactos/branches/arwinss/reactos/dll/win32/user3…
Modified: branches/arwinss/reactos/dll/win32/user32/resources/user32_Ja.rc URL:
http://svn.reactos.org/svn/reactos/branches/arwinss/reactos/dll/win32/user3…
Modified: branches/arwinss/reactos/dll/win32/winex11.drv/bitblt.c URL:
http://svn.reactos.org/svn/reactos/branches/arwinss/reactos/dll/win32/winex…
Modified: branches/arwinss/reactos/dll/win32/winex11.drv/bitmap.c URL:
http://svn.reactos.org/svn/reactos/branches/arwinss/reactos/dll/win32/winex…
Modified: branches/arwinss/reactos/dll/win32/winex11.drv/brush.c URL:
http://svn.reactos.org/svn/reactos/branches/arwinss/reactos/dll/win32/winex…
Modified: branches/arwinss/reactos/dll/win32/winex11.drv/clipboard.c URL:
http://svn.reactos.org/svn/reactos/branches/arwinss/reactos/dll/win32/winex…
Modified: branches/arwinss/reactos/dll/win32/winex11.drv/dib.c URL:
http://svn.reactos.org/svn/reactos/branches/arwinss/reactos/dll/win32/winex…
Modified: branches/arwinss/reactos/dll/win32/winex11.drv/event.c URL:
http://svn.reactos.org/svn/reactos/branches/arwinss/reactos/dll/win32/winex…
Modified: branches/arwinss/reactos/dll/win32/winex11.drv/graphics.c URL:
http://svn.reactos.org/svn/reactos/branches/arwinss/reactos/dll/win32/winex…
Modified: branches/arwinss/reactos/dll/win32/winex11.drv/init.c URL:
http://svn.reactos.org/svn/reactos/branches/arwinss/reactos/dll/win32/winex…
Modified: branches/arwinss/reactos/dll/win32/winex11.drv/keyboard.c URL:
http://svn.reactos.org/svn/reactos/branches/arwinss/reactos/dll/win32/winex…
Modified: branches/arwinss/reactos/dll/win32/winex11.drv/mouse.c URL:
http://svn.reactos.org/svn/reactos/branches/arwinss/reactos/dll/win32/winex…
Modified: branches/arwinss/reactos/dll/win32/winex11.drv/opengl.c URL:
http://svn.reactos.org/svn/reactos/branches/arwinss/reactos/dll/win32/winex…
Modified: branches/arwinss/reactos/dll/win32/winex11.drv/palette.c URL:
http://svn.reactos.org/svn/reactos/branches/arwinss/reactos/dll/win32/winex…
Modified: branches/arwinss/reactos/dll/win32/winex11.drv/window.c URL:
http://svn.reactos.org/svn/reactos/branches/arwinss/reactos/dll/win32/winex…
Modified: branches/arwinss/reactos/dll/win32/winex11.drv/x11drv.h URL:
http://svn.reactos.org/svn/reactos/branches/arwinss/reactos/dll/win32/winex…
Modified: branches/arwinss/reactos/dll/win32/winex11.drv/xrandr.c URL:
http://svn.reactos.org/svn/reactos/branches/arwinss/reactos/dll/win32/winex…
Modified: branches/arwinss/reactos/dll/win32/winex11.drv/xrender.c URL:
http://svn.reactos.org/svn/reactos/branches/arwinss/reactos/dll/win32/winex…
Modified: branches/arwinss/reactos/dll/win32/winex11.drv/xvidmode.c URL:
http://svn.reactos.org/svn/reactos/branches/arwinss/reactos/dll/win32/winex…
15 years, 3 months
1
0
0
0
[fireball] 43150: - Drop in Wine 1.1.30 user32, gdi32, winex11.drv, server. Part 2/2.
by fireball@svn.reactos.org
Author: fireball Date: Fri Sep 25 20:34:14 2009 New Revision: 43150 URL:
http://svn.reactos.org/svn/reactos?rev=43150&view=rev
Log: - Drop in Wine 1.1.30 user32, gdi32, winex11.drv, server. Part 2/2. Added: vendor/wine/dlls/gdi32/Wine-1_1_30/ - copied from r43101, vendor/wine/dlls/gdi32/current/ vendor/wine/dlls/gdi32/Wine-1_1_30/bitblt.c - copied unchanged from r43149, vendor/wine/dlls/gdi32/current/bitblt.c vendor/wine/dlls/gdi32/Wine-1_1_30/freetype.c - copied unchanged from r43136, vendor/wine/dlls/gdi32/current/freetype.c vendor/wine/dlls/gdi32/Wine-1_1_30/metafile.c - copied unchanged from r43136, vendor/wine/dlls/gdi32/current/metafile.c vendor/wine/dlls/gdi32/Wine-1_1_30/opengl.c - copied unchanged from r43149, vendor/wine/dlls/gdi32/current/opengl.c vendor/wine/dlls/gdi32/Wine-1_1_30/tests/bitmap.c - copied unchanged from r43149, vendor/wine/dlls/gdi32/current/tests/bitmap.c vendor/wine/dlls/gdi32/Wine-1_1_30/tests/font.c - copied unchanged from r43136, vendor/wine/dlls/gdi32/current/tests/font.c vendor/wine/dlls/gdi32/Wine-1_1_30/tests/metafile.c - copied unchanged from r43149, vendor/wine/dlls/gdi32/current/tests/metafile.c vendor/wine/dlls/user32/Wine-1_1_30/ - copied from r43101, vendor/wine/dlls/user32/current/ vendor/wine/dlls/user32/Wine-1_1_30/button.c - copied unchanged from r43136, vendor/wine/dlls/user32/current/button.c vendor/wine/dlls/user32/Wine-1_1_30/clipboard.c - copied unchanged from r43149, vendor/wine/dlls/user32/current/clipboard.c vendor/wine/dlls/user32/Wine-1_1_30/cursoricon.c - copied unchanged from r43149, vendor/wine/dlls/user32/current/cursoricon.c vendor/wine/dlls/user32/Wine-1_1_30/defdlg.c - copied unchanged from r43136, vendor/wine/dlls/user32/current/defdlg.c vendor/wine/dlls/user32/Wine-1_1_30/defwnd.c - copied unchanged from r43136, vendor/wine/dlls/user32/current/defwnd.c vendor/wine/dlls/user32/Wine-1_1_30/dialog.c - copied unchanged from r43136, vendor/wine/dlls/user32/current/dialog.c vendor/wine/dlls/user32/Wine-1_1_30/edit.c - copied unchanged from r43149, vendor/wine/dlls/user32/current/edit.c vendor/wine/dlls/user32/Wine-1_1_30/focus.c - copied unchanged from r43136, vendor/wine/dlls/user32/current/focus.c vendor/wine/dlls/user32/Wine-1_1_30/hook.c - copied unchanged from r43149, vendor/wine/dlls/user32/current/hook.c vendor/wine/dlls/user32/Wine-1_1_30/menu.c - copied unchanged from r43136, vendor/wine/dlls/user32/current/menu.c vendor/wine/dlls/user32/Wine-1_1_30/message.c - copied unchanged from r43136, vendor/wine/dlls/user32/current/message.c vendor/wine/dlls/user32/Wine-1_1_30/nonclient.c - copied unchanged from r43149, vendor/wine/dlls/user32/current/nonclient.c vendor/wine/dlls/user32/Wine-1_1_30/painting.c - copied unchanged from r43149, vendor/wine/dlls/user32/current/painting.c vendor/wine/dlls/user32/Wine-1_1_30/resources/user32_De.rc - copied unchanged from r43136, vendor/wine/dlls/user32/current/resources/user32_De.rc vendor/wine/dlls/user32/Wine-1_1_30/resources/user32_Fr.rc - copied unchanged from r43136, vendor/wine/dlls/user32/current/resources/user32_Fr.rc vendor/wine/dlls/user32/Wine-1_1_30/resources/user32_Ja.rc - copied unchanged from r43149, vendor/wine/dlls/user32/current/resources/user32_Ja.rc vendor/wine/dlls/user32/Wine-1_1_30/resources/user32_Pt.rc - copied unchanged from r43136, vendor/wine/dlls/user32/current/resources/user32_Pt.rc vendor/wine/dlls/user32/Wine-1_1_30/resources/user32_Ru.rc - copied unchanged from r43136, vendor/wine/dlls/user32/current/resources/user32_Ru.rc vendor/wine/dlls/user32/Wine-1_1_30/spy.c - copied unchanged from r43136, vendor/wine/dlls/user32/current/spy.c vendor/wine/dlls/user32/Wine-1_1_30/tests/combo.c - copied unchanged from r43136, vendor/wine/dlls/user32/current/tests/combo.c vendor/wine/dlls/user32/Wine-1_1_30/tests/cursoricon.c - copied unchanged from r43149, vendor/wine/dlls/user32/current/tests/cursoricon.c vendor/wine/dlls/user32/Wine-1_1_30/tests/dialog.c - copied unchanged from r43136, vendor/wine/dlls/user32/current/tests/dialog.c vendor/wine/dlls/user32/Wine-1_1_30/tests/edit.c - copied unchanged from r43136, vendor/wine/dlls/user32/current/tests/edit.c vendor/wine/dlls/user32/Wine-1_1_30/tests/input.c - copied unchanged from r43149, vendor/wine/dlls/user32/current/tests/input.c vendor/wine/dlls/user32/Wine-1_1_30/tests/menu.c - copied unchanged from r43136, vendor/wine/dlls/user32/current/tests/menu.c vendor/wine/dlls/user32/Wine-1_1_30/tests/msg.c - copied unchanged from r43149, vendor/wine/dlls/user32/current/tests/msg.c vendor/wine/dlls/user32/Wine-1_1_30/tests/resource.rc - copied unchanged from r43136, vendor/wine/dlls/user32/current/tests/resource.rc vendor/wine/dlls/user32/Wine-1_1_30/tests/win.c - copied unchanged from r43149, vendor/wine/dlls/user32/current/tests/win.c vendor/wine/dlls/user32/Wine-1_1_30/user32.spec - copied unchanged from r43136, vendor/wine/dlls/user32/current/user32.spec vendor/wine/dlls/user32/Wine-1_1_30/win.c - copied unchanged from r43136, vendor/wine/dlls/user32/current/win.c vendor/wine/dlls/user32/Wine-1_1_30/winpos.c - copied unchanged from r43136, vendor/wine/dlls/user32/current/winpos.c vendor/wine/dlls/winex11.drv/Wine-1_1_30/ - copied from r43101, vendor/wine/dlls/winex11.drv/current/ vendor/wine/dlls/winex11.drv/Wine-1_1_30/bitblt.c - copied unchanged from r43136, vendor/wine/dlls/winex11.drv/current/bitblt.c vendor/wine/dlls/winex11.drv/Wine-1_1_30/bitmap.c - copied unchanged from r43149, vendor/wine/dlls/winex11.drv/current/bitmap.c vendor/wine/dlls/winex11.drv/Wine-1_1_30/brush.c - copied unchanged from r43149, vendor/wine/dlls/winex11.drv/current/brush.c vendor/wine/dlls/winex11.drv/Wine-1_1_30/clipboard.c - copied unchanged from r43136, vendor/wine/dlls/winex11.drv/current/clipboard.c vendor/wine/dlls/winex11.drv/Wine-1_1_30/dib.c - copied unchanged from r43149, vendor/wine/dlls/winex11.drv/current/dib.c vendor/wine/dlls/winex11.drv/Wine-1_1_30/event.c - copied unchanged from r43149, vendor/wine/dlls/winex11.drv/current/event.c vendor/wine/dlls/winex11.drv/Wine-1_1_30/graphics.c - copied unchanged from r43136, vendor/wine/dlls/winex11.drv/current/graphics.c vendor/wine/dlls/winex11.drv/Wine-1_1_30/init.c - copied unchanged from r43136, vendor/wine/dlls/winex11.drv/current/init.c vendor/wine/dlls/winex11.drv/Wine-1_1_30/keyboard.c - copied unchanged from r43136, vendor/wine/dlls/winex11.drv/current/keyboard.c vendor/wine/dlls/winex11.drv/Wine-1_1_30/mouse.c - copied unchanged from r43136, vendor/wine/dlls/winex11.drv/current/mouse.c vendor/wine/dlls/winex11.drv/Wine-1_1_30/opengl.c - copied unchanged from r43136, vendor/wine/dlls/winex11.drv/current/opengl.c vendor/wine/dlls/winex11.drv/Wine-1_1_30/palette.c - copied unchanged from r43149, vendor/wine/dlls/winex11.drv/current/palette.c vendor/wine/dlls/winex11.drv/Wine-1_1_30/window.c - copied unchanged from r43149, vendor/wine/dlls/winex11.drv/current/window.c vendor/wine/dlls/winex11.drv/Wine-1_1_30/x11drv.h - copied unchanged from r43149, vendor/wine/dlls/winex11.drv/current/x11drv.h vendor/wine/dlls/winex11.drv/Wine-1_1_30/xrandr.c - copied unchanged from r43136, vendor/wine/dlls/winex11.drv/current/xrandr.c vendor/wine/dlls/winex11.drv/Wine-1_1_30/xrender.c - copied unchanged from r43149, vendor/wine/dlls/winex11.drv/current/xrender.c vendor/wine/dlls/winex11.drv/Wine-1_1_30/xvidmode.c - copied unchanged from r43149, vendor/wine/dlls/winex11.drv/current/xvidmode.c vendor/wine/server/Wine-1_1_30/ - copied from r43101, vendor/wine/server/current/ vendor/wine/server/Wine-1_1_30/async.c - copied unchanged from r43136, vendor/wine/server/current/async.c vendor/wine/server/Wine-1_1_30/change.c - copied unchanged from r43136, vendor/wine/server/current/change.c vendor/wine/server/Wine-1_1_30/debugger.c - copied unchanged from r43136, vendor/wine/server/current/debugger.c vendor/wine/server/Wine-1_1_30/fd.c - copied unchanged from r43136, vendor/wine/server/current/fd.c vendor/wine/server/Wine-1_1_30/file.c - copied unchanged from r43136, vendor/wine/server/current/file.c vendor/wine/server/Wine-1_1_30/file.h - copied unchanged from r43136, vendor/wine/server/current/file.h vendor/wine/server/Wine-1_1_30/mapping.c - copied unchanged from r43136, vendor/wine/server/current/mapping.c vendor/wine/server/Wine-1_1_30/process.c - copied unchanged from r43136, vendor/wine/server/current/process.c vendor/wine/server/Wine-1_1_30/procfs.c - copied unchanged from r43136, vendor/wine/server/current/procfs.c vendor/wine/server/Wine-1_1_30/protocol.def - copied unchanged from r43136, vendor/wine/server/current/protocol.def vendor/wine/server/Wine-1_1_30/request.h - copied unchanged from r43136, vendor/wine/server/current/request.h vendor/wine/server/Wine-1_1_30/sock.c - copied unchanged from r43136, vendor/wine/server/current/sock.c vendor/wine/server/Wine-1_1_30/trace.c - copied unchanged from r43136, vendor/wine/server/current/trace.c Removed: vendor/wine/dlls/gdi32/Wine-1_1_29/ vendor/wine/dlls/user32/Wine-1_1_29/ vendor/wine/dlls/winex11.drv/Wine-1_1_29/ vendor/wine/server/Wine-1_1_29/
15 years, 3 months
1
0
0
0
[fireball] 43149: - Drop in Wine 1.1.30 user32, gdi32, winex11.drv, server. Part 1/2.
by fireball@svn.reactos.org
Author: fireball Date: Fri Sep 25 20:32:41 2009 New Revision: 43149 URL:
http://svn.reactos.org/svn/reactos?rev=43149&view=rev
Log: - Drop in Wine 1.1.30 user32, gdi32, winex11.drv, server. Part 1/2. Modified: vendor/wine/dlls/gdi32/current/bitblt.c vendor/wine/dlls/gdi32/current/opengl.c vendor/wine/dlls/gdi32/current/tests/bitmap.c vendor/wine/dlls/gdi32/current/tests/metafile.c vendor/wine/dlls/user32/current/clipboard.c vendor/wine/dlls/user32/current/cursoricon.c vendor/wine/dlls/user32/current/edit.c vendor/wine/dlls/user32/current/hook.c vendor/wine/dlls/user32/current/nonclient.c vendor/wine/dlls/user32/current/painting.c vendor/wine/dlls/user32/current/resources/user32_Ja.rc vendor/wine/dlls/user32/current/tests/cursoricon.c vendor/wine/dlls/user32/current/tests/input.c vendor/wine/dlls/user32/current/tests/msg.c vendor/wine/dlls/user32/current/tests/win.c vendor/wine/dlls/winex11.drv/current/bitmap.c vendor/wine/dlls/winex11.drv/current/brush.c vendor/wine/dlls/winex11.drv/current/dib.c vendor/wine/dlls/winex11.drv/current/event.c vendor/wine/dlls/winex11.drv/current/palette.c vendor/wine/dlls/winex11.drv/current/window.c vendor/wine/dlls/winex11.drv/current/x11drv.h vendor/wine/dlls/winex11.drv/current/xrender.c vendor/wine/dlls/winex11.drv/current/xvidmode.c Modified: vendor/wine/dlls/gdi32/current/bitblt.c URL:
http://svn.reactos.org/svn/reactos/vendor/wine/dlls/gdi32/current/bitblt.c?…
============================================================================== --- vendor/wine/dlls/gdi32/current/bitblt.c [iso-8859-1] (original) +++ vendor/wine/dlls/gdi32/current/bitblt.c [iso-8859-1] Fri Sep 25 20:32:41 2009 @@ -518,9 +518,11 @@ DC *dcDst, *dcSrc; dcSrc = get_dc_ptr( hdcSrc ); + if (!dcSrc) return FALSE; + if ((dcDst = get_dc_ptr( hdcDst ))) { - if (dcSrc) update_dc( dcSrc ); + update_dc( dcSrc ); update_dc( dcDst ); TRACE("%p %d,%d %dx%d -> %p %d,%d %dx%d op=%02x flags=%02x srcconstalpha=%02x alphafmt=%02x\n", hdcSrc, xSrc, ySrc, widthSrc, heightSrc, @@ -529,11 +531,11 @@ blendFunction.SourceConstantAlpha, blendFunction.AlphaFormat); if (dcDst->funcs->pAlphaBlend) ret = dcDst->funcs->pAlphaBlend( dcDst->physDev, xDst, yDst, widthDst, heightDst, - dcSrc ? dcSrc->physDev : NULL, - xSrc, ySrc, widthSrc, heightSrc, blendFunction ); + dcSrc->physDev, xSrc, ySrc, widthSrc, heightSrc, + blendFunction ); release_dc_ptr( dcDst ); } - if (dcSrc) release_dc_ptr( dcSrc ); + release_dc_ptr( dcSrc ); return ret; } Modified: vendor/wine/dlls/gdi32/current/opengl.c URL:
http://svn.reactos.org/svn/reactos/vendor/wine/dlls/gdi32/current/opengl.c?…
============================================================================== --- vendor/wine/dlls/gdi32/current/opengl.c [iso-8859-1] (original) +++ vendor/wine/dlls/gdi32/current/opengl.c [iso-8859-1] Fri Sep 25 20:32:41 2009 @@ -193,7 +193,15 @@ /* When the context hglrc is NULL, the HDC is ignored and can be NULL. * In that case use the global hDC to get access to the driver. */ if(hglrc == NULL) + { + if( hdc == NULL && !wglGetCurrentContext() ) + { + WARN( "Current context is NULL\n"); + SetLastError( ERROR_INVALID_HANDLE ); + return FALSE; + } dc = OPENGL_GetDefaultDC(); + } else dc = get_dc_ptr( hdc ); Modified: vendor/wine/dlls/gdi32/current/tests/bitmap.c URL:
http://svn.reactos.org/svn/reactos/vendor/wine/dlls/gdi32/current/tests/bit…
============================================================================== --- vendor/wine/dlls/gdi32/current/tests/bitmap.c [iso-8859-1] (original) +++ vendor/wine/dlls/gdi32/current/tests/bitmap.c [iso-8859-1] Fri Sep 25 20:32:41 2009 @@ -2393,6 +2393,10 @@ expect_eq(pGdiAlphaBlend(hdcDst, 0, 0, 20, 20, hdcSrc, -1, 0, 30, 30, blend), TRUE, BOOL, "%d"); expect_eq(pGdiAlphaBlend(hdcDst, 0, 0, 20, 20, hdcSrc, 0, -1, 30, 30, blend), TRUE, BOOL, "%d"); + SetLastError(0xdeadbeef); + expect_eq(pGdiAlphaBlend(hdcDst, 0, 0, 20, 20, NULL, 0, 0, 20, 20, blend), FALSE, BOOL, "%d"); + expect_eq(GetLastError(), 0xdeadbeef, int, "%d"); + SelectObject(hdcDst, oldDst); SelectObject(hdcSrc, oldSrc); DeleteObject(bmpSrc); Modified: vendor/wine/dlls/gdi32/current/tests/metafile.c URL:
http://svn.reactos.org/svn/reactos/vendor/wine/dlls/gdi32/current/tests/met…
============================================================================== --- vendor/wine/dlls/gdi32/current/tests/metafile.c [iso-8859-1] (original) +++ vendor/wine/dlls/gdi32/current/tests/metafile.c [iso-8859-1] Fri Sep 25 20:32:41 2009 @@ -1908,6 +1908,7 @@ HENHMETAFILE hemf; HRGN hrgn; INT ret; + RECT rc_res, rc_sclip; SetLastError(0xdeadbeef); hdc = CreateEnhMetaFileA(0, NULL, NULL, NULL); @@ -1946,6 +1947,22 @@ DeleteEnhMetaFile(hemf); ReleaseDC(hwnd, hdc); DestroyWindow(hwnd); + + hdc = CreateEnhMetaFileA(0, NULL, NULL, NULL); + + SetRect(&rc_sclip, 100, 100, GetSystemMetrics(SM_CXSCREEN), GetSystemMetrics(SM_CYSCREEN)); + hrgn = CreateRectRgn(rc_sclip.left, rc_sclip.top, rc_sclip.right, rc_sclip.bottom); + SelectClipRgn(hdc, hrgn); + GetClipBox(hdc, &rc_res); + todo_wine ok(EqualRect(&rc_res, &rc_sclip), + "expected rc_res (%d, %d) - (%d, %d), got (%d, %d) - (%d, %d)\n", + rc_sclip.left, rc_sclip.top, rc_sclip.right, rc_sclip.bottom, + rc_res.left, rc_res.top, rc_res.right, rc_res.bottom); + + hemf = CloseEnhMetaFile(hdc); + DeleteEnhMetaFile(hemf); + DeleteObject(hrgn); + DeleteDC(hdc); } static INT CALLBACK EmfEnumProc(HDC hdc, HANDLETABLE *lpHTable, const ENHMETARECORD *lpEMFR, INT nObj, LPARAM lpData) Modified: vendor/wine/dlls/user32/current/clipboard.c URL:
http://svn.reactos.org/svn/reactos/vendor/wine/dlls/user32/current/clipboar…
============================================================================== --- vendor/wine/dlls/user32/current/clipboard.c [iso-8859-1] (original) +++ vendor/wine/dlls/user32/current/clipboard.c [iso-8859-1] Fri Sep 25 20:32:41 2009 @@ -188,6 +188,21 @@ return bRet; } +static HWND CLIPBOARD_SetClipboardViewer( HWND hWnd ) +{ + HWND hwndPrev = 0; + + SERVER_START_REQ( set_clipboard_info ) + { + req->flags = SET_CB_VIEWER; + req->viewer = wine_server_user_handle( hWnd ); + if (!wine_server_call_err( req )) + hwndPrev = wine_server_ptr_handle( reply->old_viewer ); + } + SERVER_END_REQ; + + return hwndPrev; +} /************************************************************************** * WIN32 Clipboard implementation @@ -285,7 +300,7 @@ USER_Driver->pEndClipboardUpdate(); if (hWndViewer) - SendMessageW(hWndViewer, WM_DRAWCLIPBOARD, 0, 0); + SendMessageW(hWndViewer, WM_DRAWCLIPBOARD, (WPARAM) GetClipboardOwner(), 0); bCBHasChanged = FALSE; } @@ -390,17 +405,10 @@ */ HWND WINAPI SetClipboardViewer( HWND hWnd ) { - HWND hwndPrev = 0; - - SERVER_START_REQ( set_clipboard_info ) - { - req->flags = SET_CB_VIEWER; - req->viewer = wine_server_user_handle( hWnd ); - if (!wine_server_call_err( req )) - hwndPrev = wine_server_ptr_handle( reply->old_viewer ); - } - SERVER_END_REQ; - + HWND hwndPrev = CLIPBOARD_SetClipboardViewer(hWnd); + + if (hWnd) + SendMessageW(hWnd, WM_DRAWCLIPBOARD, (WPARAM) GetClipboardOwner(), 0); TRACE("(%p): returning %p\n", hWnd, hwndPrev); return hwndPrev; @@ -438,7 +446,7 @@ if (hWndViewer) { if (WIN_GetFullHandle(hWnd) == hWndViewer) - SetClipboardViewer(WIN_GetFullHandle(hWndNext)); + CLIPBOARD_SetClipboardViewer(WIN_GetFullHandle(hWndNext)); else bRet = !SendMessageW(hWndViewer, WM_CHANGECBCHAIN, (WPARAM)hWnd, (LPARAM)hWndNext); } Modified: vendor/wine/dlls/user32/current/cursoricon.c URL:
http://svn.reactos.org/svn/reactos/vendor/wine/dlls/user32/current/cursoric…
============================================================================== --- vendor/wine/dlls/user32/current/cursoricon.c [iso-8859-1] (original) +++ vendor/wine/dlls/user32/current/cursoricon.c [iso-8859-1] Fri Sep 25 20:32:41 2009 @@ -1715,7 +1715,9 @@ /* Do the alpha blending render */ premultiply_alpha_channel(dibBits, xorBitmapBits, dibLength); hBitTemp = SelectObject( hMemDC, hXorBits ); - GdiAlphaBlend(hdc, x, y, ptr->nWidth, ptr->nHeight, hMemDC, + /* Destination width/height has to be "System Large" size */ + GdiAlphaBlend(hdc, x, y, GetSystemMetrics(SM_CXICON), + GetSystemMetrics(SM_CYICON), hMemDC, 0, 0, ptr->nWidth, ptr->nHeight, pixelblend); SelectObject( hMemDC, hBitTemp ); } @@ -1729,9 +1731,13 @@ if (hXorBits && hAndBits) { hBitTemp = SelectObject( hMemDC, hAndBits ); - BitBlt( hdc, x, y, ptr->nWidth, ptr->nHeight, hMemDC, 0, 0, SRCAND ); + StretchBlt( hdc, x, y, GetSystemMetrics(SM_CXICON), + GetSystemMetrics(SM_CYICON), hMemDC, 0, 0, + ptr->nWidth, ptr->nHeight, SRCAND ); SelectObject( hMemDC, hXorBits ); - BitBlt(hdc, x, y, ptr->nWidth, ptr->nHeight, hMemDC, 0, 0,SRCINVERT); + StretchBlt( hdc, x, y, GetSystemMetrics(SM_CXICON), + GetSystemMetrics(SM_CYICON), hMemDC, 0, 0, + ptr->nWidth, ptr->nHeight, SRCINVERT ); SelectObject( hMemDC, hBitTemp ); } } Modified: vendor/wine/dlls/user32/current/edit.c URL:
http://svn.reactos.org/svn/reactos/vendor/wine/dlls/user32/current/edit.c?r…
============================================================================== --- vendor/wine/dlls/user32/current/edit.c [iso-8859-1] (original) +++ vendor/wine/dlls/user32/current/edit.c [iso-8859-1] Fri Sep 25 20:32:41 2009 @@ -5011,6 +5011,9 @@ case EM_SETREADONLY16: case EM_SETREADONLY: + { + DWORD old_style = es->style; + if (wParam) { SetWindowLongW( hwnd, GWL_STYLE, GetWindowLongW( hwnd, GWL_STYLE ) | ES_READONLY ); @@ -5020,8 +5023,13 @@ GetWindowLongW( hwnd, GWL_STYLE ) & ~ES_READONLY ); es->style &= ~ES_READONLY; } - result = 1; - break; + + if (old_style ^ es->style) + InvalidateRect(es->hwndSelf, NULL, TRUE); + + result = 1; + break; + } case EM_SETWORDBREAKPROC16: EDIT_EM_SetWordBreakProc16(es, (EDITWORDBREAKPROC16)lParam); Modified: vendor/wine/dlls/user32/current/hook.c URL:
http://svn.reactos.org/svn/reactos/vendor/wine/dlls/user32/current/hook.c?r…
============================================================================== --- vendor/wine/dlls/user32/current/hook.c [iso-8859-1] (original) +++ vendor/wine/dlls/user32/current/hook.c [iso-8859-1] Fri Sep 25 20:32:41 2009 @@ -85,7 +85,7 @@ struct hook_info { INT id; - FARPROC proc; + void *proc; void *handle; DWORD pid, tid; BOOL prev_unicode, next_unicode; @@ -844,24 +844,25 @@ do { - if (info.proc) + WINEVENTPROC proc = info.proc; + if (proc) { TRACE( "calling WH_WINEVENT hook %p event %x hwnd %p %x %x module %s\n", - info.proc, event, hwnd, object_id, child_id, debugstr_w(info.module) ); - - if (!info.module[0] || (info.proc = get_hook_proc( info.proc, info.module )) != NULL) + proc, event, hwnd, object_id, child_id, debugstr_w(info.module) ); + + if (!info.module[0] || (proc = get_hook_proc( proc, info.module )) != NULL) { if (TRACE_ON(relay)) DPRINTF( "%04x:Call winevent hook proc %p (hhook=%p,event=%x,hwnd=%p,object_id=%x,child_id=%x,tid=%04x,time=%x)\n", - GetCurrentThreadId(), info.proc, info.handle, event, hwnd, object_id, + GetCurrentThreadId(), proc, info.handle, event, hwnd, object_id, child_id, GetCurrentThreadId(), GetCurrentTime()); - info.proc(info.handle, event, hwnd, object_id, child_id, - GetCurrentThreadId(), GetCurrentTime()); + proc( info.handle, event, hwnd, object_id, child_id, + GetCurrentThreadId(), GetCurrentTime()); if (TRACE_ON(relay)) DPRINTF( "%04x:Ret winevent hook proc %p (hhook=%p,event=%x,hwnd=%p,object_id=%x,child_id=%x,tid=%04x,time=%x)\n", - GetCurrentThreadId(), info.proc, info.handle, event, hwnd, object_id, + GetCurrentThreadId(), proc, info.handle, event, hwnd, object_id, child_id, GetCurrentThreadId(), GetCurrentTime()); } } Modified: vendor/wine/dlls/user32/current/nonclient.c URL:
http://svn.reactos.org/svn/reactos/vendor/wine/dlls/user32/current/nonclien…
============================================================================== --- vendor/wine/dlls/user32/current/nonclient.c [iso-8859-1] (original) +++ vendor/wine/dlls/user32/current/nonclient.c [iso-8859-1] Fri Sep 25 20:32:41 2009 @@ -1316,7 +1316,7 @@ * * Track a mouse button press on the Win95 close button. */ -static void NC_TrackCloseButton (HWND hwnd, WORD wParam) +static void NC_TrackCloseButton (HWND hwnd, WPARAM wParam, LPARAM lParam) { MSG msg; HDC hdc; @@ -1364,7 +1364,7 @@ ReleaseDC( hwnd, hdc ); if (!pressed) return; - SendMessageW( hwnd, WM_SYSCOMMAND, SC_CLOSE, MAKELONG(msg.pt.x,msg.pt.y) ); + SendMessageW( hwnd, WM_SYSCOMMAND, SC_CLOSE, lParam ); } @@ -1442,7 +1442,7 @@ break; case HTCLOSE: - NC_TrackCloseButton (hwnd, wParam); + NC_TrackCloseButton (hwnd, wParam, lParam); break; case HTLEFT: @@ -1600,7 +1600,9 @@ HMODULE hmodule = LoadLibraryA( "shell32.dll" ); if (hmodule) { - FARPROC aboutproc = GetProcAddress( hmodule, "ShellAboutA" ); + BOOL (WINAPI *aboutproc)(HWND, LPCSTR, LPCSTR, HICON); + + aboutproc = (void *)GetProcAddress( hmodule, "ShellAboutA" ); if (aboutproc) aboutproc( hwnd, PACKAGE_STRING, NULL, 0 ); FreeLibrary( hmodule ); } Modified: vendor/wine/dlls/user32/current/painting.c URL:
http://svn.reactos.org/svn/reactos/vendor/wine/dlls/user32/current/painting…
============================================================================== --- vendor/wine/dlls/user32/current/painting.c [iso-8859-1] (original) +++ vendor/wine/dlls/user32/current/painting.c [iso-8859-1] Fri Sep 25 20:32:41 2009 @@ -1404,10 +1404,11 @@ hwnd = WIN_GetFullHandle( hwnd ); GetClientRect(hwnd, &rc); - if (rect) IntersectRect(&rc, &rc, rect); if (clipRect) IntersectRect(&cliprc,&rc,clipRect); else cliprc = rc; + + if (rect) IntersectRect(&rc, &rc, rect); if( hrgnUpdate ) bOwnRgn = FALSE; else if( bUpdate ) hrgnUpdate = CreateRectRgn( 0, 0, 0, 0 ); Modified: vendor/wine/dlls/user32/current/resources/user32_Ja.rc URL:
http://svn.reactos.org/svn/reactos/vendor/wine/dlls/user32/current/resource…
============================================================================== --- vendor/wine/dlls/user32/current/resources/user32_Ja.rc [iso-8859-1] (original) +++ vendor/wine/dlls/user32/current/resources/user32_Ja.rc [iso-8859-1] Fri Sep 25 20:32:41 2009 @@ -53,7 +53,6 @@ MSGBOX DIALOG 100, 80, 216, 168 STYLE DS_MODALFRAME | DS_NOIDLEMSG | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU -FONT 9, "MS Shell Dlg" BEGIN ICON "", 1088, 8, 20, 16, 16, WS_CHILD | WS_VISIBLE LTEXT "", 100, 32, 4, 176, 48, WS_CHILD | WS_VISIBLE | WS_GROUP | SS_NOPREFIX Modified: vendor/wine/dlls/user32/current/tests/cursoricon.c URL:
http://svn.reactos.org/svn/reactos/vendor/wine/dlls/user32/current/tests/cu…
============================================================================== --- vendor/wine/dlls/user32/current/tests/cursoricon.c [iso-8859-1] (original) +++ vendor/wine/dlls/user32/current/tests/cursoricon.c [iso-8859-1] Fri Sep 25 20:32:41 2009 @@ -1039,6 +1039,8 @@ HICON hicon = create_test_icon(hdc, 1, 1, bpp, maskvalue, &color, sizeof(color)); if (!hicon) return; SetPixelV(hdc, 0, 0, background); + SetPixelV(hdc, GetSystemMetrics(SM_CXICON)-1, GetSystemMetrics(SM_CYICON)-1, background); + SetPixelV(hdc, GetSystemMetrics(SM_CXICON), GetSystemMetrics(SM_CYICON), background); DrawIcon(hdc, 0, 0, hicon); result = GetPixel(hdc, 0, 0); @@ -1047,6 +1049,21 @@ "Overlaying Mask %d on Color %06X with DrawIcon. " "Expected a close match to %06X (modern), or %06X (legacy). Got %06X from line %d\n", maskvalue, color, modern_expected, legacy_expected, result, line); + + result = GetPixel(hdc, GetSystemMetrics(SM_CXICON)-1, GetSystemMetrics(SM_CYICON)-1); + + ok (color_match(result, modern_expected) || /* Windows 2000 and up */ + broken(color_match(result, legacy_expected)), /* Windows NT 4.0, 9X and below */ + "Overlaying Mask %d on Color %06X with DrawIcon. " + "Expected a close match to %06X (modern), or %06X (legacy). Got %06X from line %d\n", + maskvalue, color, modern_expected, legacy_expected, result, line); + + result = GetPixel(hdc, GetSystemMetrics(SM_CXICON), GetSystemMetrics(SM_CYICON)); + + ok (color_match(result, background), + "Overlaying Mask %d on Color %06X with DrawIcon. " + "Expected unchanged background color %06X. Got %06X from line %d\n", + maskvalue, color, background, result, line); } static void test_DrawIcon(void) @@ -1070,8 +1087,8 @@ memset(&bitmapInfo, 0, sizeof(bitmapInfo)); bitmapInfo.bmiHeader.biSize = sizeof(BITMAPINFOHEADER); - bitmapInfo.bmiHeader.biWidth = 1; - bitmapInfo.bmiHeader.biHeight = 1; + bitmapInfo.bmiHeader.biWidth = GetSystemMetrics(SM_CXICON)+1; + bitmapInfo.bmiHeader.biHeight = GetSystemMetrics(SM_CYICON)+1; bitmapInfo.bmiHeader.biBitCount = 32; bitmapInfo.bmiHeader.biPlanes = 1; bitmapInfo.bmiHeader.biCompression = BI_RGB; Modified: vendor/wine/dlls/user32/current/tests/input.c URL:
http://svn.reactos.org/svn/reactos/vendor/wine/dlls/user32/current/tests/in…
============================================================================== --- vendor/wine/dlls/user32/current/tests/input.c [iso-8859-1] (original) +++ vendor/wine/dlls/user32/current/tests/input.c [iso-8859-1] Fri Sep 25 20:32:41 2009 @@ -892,6 +892,11 @@ HWND window; HHOOK hook; + if (GetKeyboardLayout(0) != (HKL)(ULONG_PTR)0x04090409) + { + skip("Skipping Input_blackbox test on non-US keyboard\n"); + return; + } window = CreateWindow("Static", NULL, WS_POPUP|WS_HSCROLL|WS_VSCROLL |WS_VISIBLE, 0, 0, 200, 60, NULL, NULL, NULL, NULL); Modified: vendor/wine/dlls/user32/current/tests/msg.c URL:
http://svn.reactos.org/svn/reactos/vendor/wine/dlls/user32/current/tests/ms…
============================================================================== --- vendor/wine/dlls/user32/current/tests/msg.c [iso-8859-1] (original) +++ vendor/wine/dlls/user32/current/tests/msg.c [iso-8859-1] Fri Sep 25 20:32:41 2009 @@ -11724,6 +11724,171 @@ DestroyWindow( hwnd); } +#define clear_clipboard(hwnd) clear_clipboard_(__LINE__, (hwnd)) +static void clear_clipboard_(int line, HWND hWnd) +{ + BOOL succ; + succ = OpenClipboard(hWnd); + ok_(__FILE__, line)(succ, "OpenClipboard failed, err=%u\n", GetLastError()); + succ = EmptyClipboard(); + ok_(__FILE__, line)(succ, "EmptyClipboard failed, err=%u\n", GetLastError()); + succ = CloseClipboard(); + ok_(__FILE__, line)(succ, "CloseClipboard failed, err=%u\n", GetLastError()); +} + +#define expect_HWND(expected, got) expect_HWND_(__LINE__, (expected), (got)) +static void expect_HWND_(int line, HWND expected, HWND got) +{ + ok_(__FILE__, line)(got==expected, "Expected %p, got %p\n", expected, got); +} + +static WNDPROC pOldViewerProc; + +static LRESULT CALLBACK recursive_viewer_proc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) +{ + static BOOL recursion_guard; + + if (message == WM_DRAWCLIPBOARD && !recursion_guard) + { + recursion_guard = TRUE; + clear_clipboard(hWnd); + recursion_guard = FALSE; + } + return CallWindowProcA(pOldViewerProc, hWnd, message, wParam, lParam); +} + +static void test_clipboard_viewers(void) +{ + static struct message wm_change_cb_chain[] = + { + { WM_CHANGECBCHAIN, sent|wparam|lparam, 0, 0 }, + { 0 } + }; + static const struct message wm_clipboard_destroyed[] = + { + { WM_DESTROYCLIPBOARD, sent|wparam|lparam, 0, 0 }, + { 0 } + }; + static struct message wm_clipboard_changed[] = + { + { WM_DRAWCLIPBOARD, sent|wparam|lparam, 0, 0 }, + { 0 } + }; + static struct message wm_clipboard_changed_and_owned[] = + { + { WM_DESTROYCLIPBOARD, sent|wparam|lparam, 0, 0 }, + { WM_DRAWCLIPBOARD, sent|wparam|lparam, 0, 0 }, + { 0 } + }; + + HINSTANCE hInst = GetModuleHandleA(NULL); + HWND hWnd1, hWnd2, hWnd3; + HWND hOrigViewer; + HWND hRet; + + hWnd1 = CreateWindowExA(0, "TestWindowClass", "Clipboard viewer test wnd 1", + WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX | WS_MAXIMIZEBOX, + CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, + GetDesktopWindow(), NULL, hInst, NULL); + hWnd2 = CreateWindowExA(0, "SimpleWindowClass", "Clipboard viewer test wnd 2", + WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX | WS_MAXIMIZEBOX, + CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, + GetDesktopWindow(), NULL, hInst, NULL); + hWnd3 = CreateWindowExA(0, "SimpleWindowClass", "Clipboard viewer test wnd 3", + WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX | WS_MAXIMIZEBOX, + CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, + GetDesktopWindow(), NULL, hInst, NULL); + trace("clipbd viewers: hWnd1=%p, hWnd2=%p, hWnd3=%p\n", hWnd1, hWnd2, hWnd3); + assert(hWnd1 && hWnd2 && hWnd3); + + flush_sequence(); + + /* Test getting the clipboard viewer and setting the viewer to NULL. */ + hOrigViewer = GetClipboardViewer(); + hRet = SetClipboardViewer(NULL); + ok_sequence(WmEmptySeq, "set viewer to NULL", FALSE); + expect_HWND(hOrigViewer, hRet); + expect_HWND(NULL, GetClipboardViewer()); + + /* Test registering hWnd1 as a viewer. */ + hRet = SetClipboardViewer(hWnd1); + wm_clipboard_changed[0].wParam = (WPARAM) GetClipboardOwner(); + ok_sequence(wm_clipboard_changed, "set viewer NULL->1", FALSE); + expect_HWND(NULL, hRet); + expect_HWND(hWnd1, GetClipboardViewer()); + + /* Test that changing the clipboard actually refreshes the registered viewer. */ + clear_clipboard(hWnd1); + wm_clipboard_changed[0].wParam = (WPARAM) GetClipboardOwner(); + ok_sequence(wm_clipboard_changed, "clear clipbd (viewer=owner=1)", FALSE); + + /* Again, but with different owner. */ + clear_clipboard(hWnd2); + wm_clipboard_changed_and_owned[1].wParam = (WPARAM) GetClipboardOwner(); + ok_sequence(wm_clipboard_changed_and_owned, "clear clipbd (viewer=1, owner=2)", FALSE); + + /* Test re-registering same window. */ + hRet = SetClipboardViewer(hWnd1); + wm_clipboard_changed[0].wParam = (WPARAM) GetClipboardOwner(); + ok_sequence(wm_clipboard_changed, "set viewer 1->1", FALSE); + expect_HWND(hWnd1, hRet); + expect_HWND(hWnd1, GetClipboardViewer()); + + /* Test ChangeClipboardChain. */ + ChangeClipboardChain(hWnd2, hWnd3); + wm_change_cb_chain[0].wParam = (WPARAM) hWnd2; + wm_change_cb_chain[0].lParam = (LPARAM) hWnd3; + ok_sequence(wm_change_cb_chain, "change chain (viewer=1, remove=2, next=3)", FALSE); + expect_HWND(hWnd1, GetClipboardViewer()); + + ChangeClipboardChain(hWnd2, NULL); + wm_change_cb_chain[0].wParam = (WPARAM) hWnd2; + wm_change_cb_chain[0].lParam = 0; + ok_sequence(wm_change_cb_chain, "change chain (viewer=1, remove=2, next=NULL)", FALSE); + expect_HWND(hWnd1, GetClipboardViewer()); + + ChangeClipboardChain(NULL, hWnd2); + ok_sequence(WmEmptySeq, "change chain (viewer=1, remove=NULL, next=2)", TRUE); + expect_HWND(hWnd1, GetClipboardViewer()); + + /* Actually change clipboard viewer with ChangeClipboardChain. */ + ChangeClipboardChain(hWnd1, hWnd2); + ok_sequence(WmEmptySeq, "change chain (viewer=remove=1, next=2)", FALSE); + expect_HWND(hWnd2, GetClipboardViewer()); + + /* Test that no refresh messages are sent when viewer has unregistered. */ + clear_clipboard(hWnd2); + ok_sequence(WmEmptySeq, "clear clipd (viewer=2, owner=1)", FALSE); + + /* Register hWnd1 again. */ + ChangeClipboardChain(hWnd2, hWnd1); + ok_sequence(WmEmptySeq, "change chain (viewer=remove=2, next=1)", FALSE); + expect_HWND(hWnd1, GetClipboardViewer()); + + /* Subclass hWnd1 so that when it receives a WM_DRAWCLIPBOARD message, it + * changes the clipboard. When this happens, the system shouldn't send + * another WM_DRAWCLIPBOARD (as this could cause an infinite loop). + */ + pOldViewerProc = (WNDPROC) SetWindowLongPtrA(hWnd1, GWLP_WNDPROC, (LONG_PTR) recursive_viewer_proc); + clear_clipboard(hWnd2); + /* The clipboard owner is changed in recursive_viewer_proc: */ + wm_clipboard_changed[0].wParam = (WPARAM) hWnd2; + ok_sequence(wm_clipboard_changed, "recursive clear clipbd (viewer=1, owner=2)", TRUE); + + /* Test unregistering. */ + ChangeClipboardChain(hWnd1, NULL); + ok_sequence(WmEmptySeq, "change chain (viewer=remove=1, next=NULL)", FALSE); + expect_HWND(NULL, GetClipboardViewer()); + + clear_clipboard(hWnd1); + ok_sequence(wm_clipboard_destroyed, "clear clipbd (no viewer, owner=1)", FALSE); + + DestroyWindow(hWnd1); + DestroyWindow(hWnd2); + DestroyWindow(hWnd3); + SetClipboardViewer(hOrigViewer); +} + static void test_PostMessage(void) { static const struct @@ -11787,7 +11952,7 @@ START_TEST(msg) { BOOL ret; - FARPROC pIsWinEventHookInstalled = 0;/*GetProcAddress(user32, "IsWinEventHookInstalled");*/ + BOOL (WINAPI *pIsWinEventHookInstalled)(DWORD)= 0;/*GetProcAddress(user32, "IsWinEventHookInstalled");*/ init_procs(); @@ -11867,6 +12032,7 @@ test_menu_messages(); test_paintingloop(); test_defwinproc(); + test_clipboard_viewers(); /* keep it the last test, under Windows it tends to break the tests * which rely on active/foreground windows being correct. */ Modified: vendor/wine/dlls/user32/current/tests/win.c URL:
http://svn.reactos.org/svn/reactos/vendor/wine/dlls/user32/current/tests/wi…
============================================================================== --- vendor/wine/dlls/user32/current/tests/win.c [iso-8859-1] (original) +++ vendor/wine/dlls/user32/current/tests/win.c [iso-8859-1] Fri Sep 25 20:32:41 2009 @@ -3216,6 +3216,57 @@ check_window_style(WS_CHILD, WS_EX_DLGMODALFRAME|WS_EX_STATICEDGE, WS_CHILD, WS_EX_STATICEDGE|WS_EX_WINDOWEDGE|WS_EX_DLGMODALFRAME); check_window_style(WS_CAPTION, WS_EX_STATICEDGE, WS_CLIPSIBLINGS|WS_CAPTION, WS_EX_STATICEDGE|WS_EX_WINDOWEDGE); check_window_style(0, WS_EX_APPWINDOW, WS_CLIPSIBLINGS|WS_CAPTION, WS_EX_APPWINDOW|WS_EX_WINDOWEDGE); +} + +static void test_scrollwindow( HWND hwnd) +{ + HDC hdc; + RECT rc, rc2, rc3; + COLORREF colr; + + ShowWindow( hwnd, SW_SHOW); + UpdateWindow( hwnd); + flush_events( TRUE ); + GetClientRect( hwnd, &rc); + hdc = GetDC( hwnd); + /* test ScrollWindow(Ex) with no clip rectangle */ + /* paint the lower half of the window black */ + rc2 = rc; + rc2.top = ( rc2.top + rc2.bottom) / 2; + FillRect( hdc, &rc2, GetStockObject(BLACK_BRUSH)); + /* paint the upper half of the window white */ + rc2.bottom = rc2.top; + rc2.top =0; + FillRect( hdc, &rc2, GetStockObject(WHITE_BRUSH)); + /* scroll lower half up */ + rc2 = rc; + rc2.top = ( rc2.top + rc2.bottom) / 2; + ScrollWindowEx( hwnd, 0, - rc2.top, &rc2, NULL, NULL, NULL, SW_ERASE); + /* expected: black should have scrolled to the upper half */ + colr = GetPixel( hdc, (rc2.left+rc2.right)/ 2, rc2.bottom / 4 ); + ok ( colr == 0, "pixel should be black, color is %08x\n", colr); + /* Repeat that test of ScrollWindow(Ex) now with clip rectangle */ + /* paint the lower half of the window black */ + rc2 = rc; + rc2.top = ( rc2.top + rc2.bottom) / 2; + FillRect( hdc, &rc2, GetStockObject(BLACK_BRUSH)); + /* paint the upper half of the window white */ + rc2.bottom = rc2.top; + rc2.top =0; + FillRect( hdc, &rc2, GetStockObject(WHITE_BRUSH)); + /* scroll lower half up */ + rc2 = rc; + rc2.top = ( rc2.top + rc2.bottom) / 2; + rc3 = rc; + rc3.left = rc3.right / 4; + rc3.right -= rc3.right / 4; + ScrollWindowEx( hwnd, 0, - rc2.top, &rc2, &rc3, NULL, NULL, SW_ERASE); + /* expected: black should have scrolled to the upper half */ + colr = GetPixel( hdc, (rc2.left+rc2.right)/ 2, rc2.bottom / 4 ); + ok ( colr == 0, "pixel should be black, color is %08x\n", colr); + + /* clean up */ + ReleaseDC( hwnd, hdc); } static void test_scrollvalidate( HWND parent) @@ -5724,6 +5775,7 @@ test_mouse_input(hwndMain); test_validatergn(hwndMain); test_nccalcscroll( hwndMain); + test_scrollwindow( hwndMain); test_scrollvalidate( hwndMain); test_scrolldc( hwndMain); test_scroll(); Modified: vendor/wine/dlls/winex11.drv/current/bitmap.c URL:
http://svn.reactos.org/svn/reactos/vendor/wine/dlls/winex11.drv/current/bit…
============================================================================== --- vendor/wine/dlls/winex11.drv/current/bitmap.c [iso-8859-1] (original) +++ vendor/wine/dlls/winex11.drv/current/bitmap.c [iso-8859-1] Fri Sep 25 20:32:41 2009 @@ -102,6 +102,7 @@ physDev->bitmap = physBitmap; physDev->drawable = physBitmap->pixmap; + physDev->color_shifts = physBitmap->trueColor ? &physBitmap->pixmap_color_shifts : NULL; SetRect( &physDev->drawable_rect, 0, 0, bitmap.bmWidth, bitmap.bmHeight ); physDev->dc_rect = physDev->drawable_rect; @@ -110,10 +111,6 @@ if (physDev->depth != physBitmap->pixmap_depth) { physDev->depth = physBitmap->pixmap_depth; - if(physDev->depth == 1) - physDev->color_shifts = NULL; - else - physDev->color_shifts = &physBitmap->pixmap_color_shifts; wine_tsx11_lock(); XFreeGC( gdi_display, physDev->gc ); physDev->gc = XCreateGC( gdi_display, physDev->drawable, 0, NULL ); @@ -122,6 +119,7 @@ XFlush( gdi_display ); wine_tsx11_unlock(); } + return hbitmap; } @@ -165,11 +163,13 @@ if(bitmap.bmBitsPixel == 1) { physBitmap->pixmap_depth = 1; + physBitmap->trueColor = FALSE; } else { physBitmap->pixmap_depth = screen_depth; physBitmap->pixmap_color_shifts = X11DRV_PALETTE_default_shifts; + physBitmap->trueColor = (visual->class == TrueColor || visual->class == DirectColor); } physBitmap->pixmap = XCreatePixmap(gdi_display, root_window, bitmap.bmWidth, bitmap.bmHeight, physBitmap->pixmap_depth); Modified: vendor/wine/dlls/winex11.drv/current/brush.c URL:
http://svn.reactos.org/svn/reactos/vendor/wine/dlls/winex11.drv/current/bru…
============================================================================== --- vendor/wine/dlls/winex11.drv/current/brush.c [iso-8859-1] (original) +++ vendor/wine/dlls/winex11.drv/current/brush.c [iso-8859-1] Fri Sep 25 20:32:41 2009 @@ -215,25 +215,22 @@ if (!physBitmap || !GetObjectW( hbitmap, sizeof(bitmap), &bitmap )) return FALSE; - wine_tsx11_lock(); if ((physDev->depth == 1) && (physBitmap->pixmap_depth != 1)) { + wine_tsx11_lock(); /* Special case: a color pattern on a monochrome DC */ physDev->brush.pixmap = XCreatePixmap( gdi_display, root_window, bitmap.bmWidth, bitmap.bmHeight, 1); /* FIXME: should probably convert to monochrome instead */ XCopyPlane( gdi_display, physBitmap->pixmap, physDev->brush.pixmap, get_bitmap_gc(1), 0, 0, bitmap.bmWidth, bitmap.bmHeight, 0, 0, 1 ); + wine_tsx11_unlock(); } else { - physDev->brush.pixmap = XCreatePixmap( gdi_display, root_window, - bitmap.bmWidth, bitmap.bmHeight, - physBitmap->pixmap_depth ); - XCopyArea( gdi_display, physBitmap->pixmap, physDev->brush.pixmap, - get_bitmap_gc(physBitmap->pixmap_depth), 0, 0, bitmap.bmWidth, bitmap.bmHeight, 0, 0 ); - } - wine_tsx11_unlock(); + /* XRender is needed because of possible depth conversion */ + X11DRV_XRender_CopyBrush(physDev, physBitmap, bitmap.bmWidth, bitmap.bmHeight); + } if (physBitmap->pixmap_depth > 1) { Modified: vendor/wine/dlls/winex11.drv/current/dib.c URL:
http://svn.reactos.org/svn/reactos/vendor/wine/dlls/winex11.drv/current/dib…
============================================================================== --- vendor/wine/dlls/winex11.drv/current/dib.c [iso-8859-1] (original) +++ vendor/wine/dlls/winex11.drv/current/dib.c [iso-8859-1] Fri Sep 25 20:32:41 2009 @@ -4749,11 +4749,13 @@ if(dib.dsBm.bmBitsPixel == 1) { physBitmap->pixmap_depth = 1; + physBitmap->trueColor = FALSE; } else { physBitmap->pixmap_depth = screen_depth; physBitmap->pixmap_color_shifts = X11DRV_PALETTE_default_shifts; + physBitmap->trueColor = (visual->class == TrueColor || visual->class == DirectColor); } #ifdef HAVE_LIBXXSHM physBitmap->shminfo.shmid = -1; Modified: vendor/wine/dlls/winex11.drv/current/event.c URL:
http://svn.reactos.org/svn/reactos/vendor/wine/dlls/winex11.drv/current/eve…
============================================================================== --- vendor/wine/dlls/winex11.drv/current/event.c [iso-8859-1] (original) +++ vendor/wine/dlls/winex11.drv/current/event.c [iso-8859-1] Fri Sep 25 20:32:41 2009 @@ -511,6 +511,7 @@ if (IsWindowEnabled(hwnd)) { HMENU hSysMenu; + POINT pt; if (GetClassLongW(hwnd, GCL_STYLE) & CS_NOCLOSE) return; hSysMenu = GetSystemMenu(hwnd, FALSE); @@ -524,7 +525,7 @@ { LRESULT ma = SendMessageW( hwnd, WM_MOUSEACTIVATE, (WPARAM)GetAncestor( hwnd, GA_ROOT ), - MAKELONG(HTCLOSE,WM_LBUTTONDOWN) ); + MAKELPARAM( HTCLOSE, WM_NCLBUTTONDOWN ) ); switch(ma) { case MA_NOACTIVATEANDEAT: @@ -541,7 +542,10 @@ break; } } - PostMessageW( hwnd, WM_X11DRV_DELETE_WINDOW, 0, 0 ); + /* Simulate clicking the caption Close button */ + GetCursorPos( &pt ); + PostMessageW( hwnd, WM_NCLBUTTONDOWN, HTCLOSE, MAKELPARAM( pt.x, pt.y ) ); + PostMessageW( hwnd, WM_LBUTTONUP, HTCLOSE, MAKELPARAM( pt.x, pt.y ) ); } } else if (protocol == x11drv_atom(WM_TAKE_FOCUS)) Modified: vendor/wine/dlls/winex11.drv/current/palette.c URL:
http://svn.reactos.org/svn/reactos/vendor/wine/dlls/winex11.drv/current/pal…
============================================================================== --- vendor/wine/dlls/winex11.drv/current/palette.c [iso-8859-1] (original) +++ vendor/wine/dlls/winex11.drv/current/palette.c [iso-8859-1] Fri Sep 25 20:32:41 2009 @@ -101,7 +101,6 @@ static BOOL X11DRV_PALETTE_BuildPrivateMap( const PALETTEENTRY *sys_pal_template ); static BOOL X11DRV_PALETTE_BuildSharedMap( const PALETTEENTRY *sys_pal_template ); -static void X11DRV_PALETTE_ComputeShifts(unsigned long maskbits, ChannelShift *physical, ChannelShift *to_logical); static void X11DRV_PALETTE_FillDefaultColors( const PALETTEENTRY *sys_pal_template ); static void X11DRV_PALETTE_FormatSystemPalette(void); static BOOL X11DRV_PALETTE_CheckSysColor( const PALETTEENTRY *sys_pal_template, COLORREF c); @@ -223,9 +222,7 @@ X11DRV_PALETTE_PaletteXColormap = XCreateColormap(gdi_display, root_window, visual, AllocNone); X11DRV_PALETTE_PaletteFlags |= X11DRV_PALETTE_FIXED; - X11DRV_PALETTE_ComputeShifts(visual->red_mask, &X11DRV_PALETTE_default_shifts.physicalRed, &X11DRV_PALETTE_default_shifts.logicalRed); - X11DRV_PALETTE_ComputeShifts(visual->green_mask, &X11DRV_PALETTE_default_shifts.physicalGreen, &X11DRV_PALETTE_default_shifts.logicalGreen); - X11DRV_PALETTE_ComputeShifts(visual->blue_mask, &X11DRV_PALETTE_default_shifts.physicalBlue, &X11DRV_PALETTE_default_shifts.logicalBlue); + X11DRV_PALETTE_ComputeColorShifts(&X11DRV_PALETTE_default_shifts, visual->red_mask, visual->green_mask, visual->blue_mask); } XFree(depths); wine_tsx11_unlock(); @@ -281,11 +278,11 @@ } /*********************************************************************** - * X11DRV_PALETTE_ComputeShifts + * X11DRV_PALETTE_ComputeChannelShift * - * Calculate conversion parameters for direct mapped visuals - */ -static void X11DRV_PALETTE_ComputeShifts(unsigned long maskbits, ChannelShift *physical, ChannelShift *to_logical) + * Calculate conversion parameters for a given color mask + */ +static void X11DRV_PALETTE_ComputeChannelShift(unsigned long maskbits, ChannelShift *physical, ChannelShift *to_logical) { int i; @@ -324,6 +321,18 @@ to_logical->scale=physical->scale; to_logical->max=physical->max; } +} + +/*********************************************************************** + * X11DRV_PALETTE_ComputeColorShifts + * + * Calculate conversion parameters for a given color + */ +void X11DRV_PALETTE_ComputeColorShifts(ColorShifts *shifts, unsigned long redMask, unsigned long greenMask, unsigned long blueMask) +{ + X11DRV_PALETTE_ComputeChannelShift(redMask, &shifts->physicalRed, &shifts->logicalRed); + X11DRV_PALETTE_ComputeChannelShift(greenMask, &shifts->physicalGreen, &shifts->logicalGreen); + X11DRV_PALETTE_ComputeChannelShift(blueMask, &shifts->physicalBlue, &shifts->logicalBlue); } /*********************************************************************** @@ -782,10 +791,6 @@ COLORREF X11DRV_PALETTE_ToLogical(X11DRV_PDEVICE *physDev, int pixel) { XColor color; - ColorShifts *shifts = &X11DRV_PALETTE_default_shifts; - - if(physDev->color_shifts) - shifts = physDev->color_shifts; #if 0 /* truecolor visual */ @@ -797,6 +802,11 @@ if ( (X11DRV_PALETTE_PaletteFlags & X11DRV_PALETTE_FIXED) && !X11DRV_PALETTE_Graymax ) { + ColorShifts *shifts = &X11DRV_PALETTE_default_shifts; + + if(physDev->color_shifts) + shifts = physDev->color_shifts; + color.red = (pixel >> shifts->logicalRed.shift) & shifts->logicalRed.max; if (shifts->logicalRed.scale<8) color.red= color.red << (8-shifts->logicalRed.scale) | Modified: vendor/wine/dlls/winex11.drv/current/window.c URL:
http://svn.reactos.org/svn/reactos/vendor/wine/dlls/winex11.drv/current/win…
============================================================================== --- vendor/wine/dlls/winex11.drv/current/window.c [iso-8859-1] (original) +++ vendor/wine/dlls/winex11.drv/current/window.c [iso-8859-1] Fri Sep 25 20:32:41 2009 @@ -2308,8 +2308,6 @@ { case WM_X11DRV_ACQUIRE_SELECTION: return X11DRV_AcquireClipboard( hwnd ); - case WM_X11DRV_DELETE_WINDOW: - return SendMessageW( hwnd, WM_SYSCOMMAND, SC_CLOSE, 0 ); case WM_X11DRV_SET_WIN_FORMAT: return set_win_format( hwnd, (XID)wp ); case WM_X11DRV_SET_WIN_REGION: Modified: vendor/wine/dlls/winex11.drv/current/x11drv.h URL:
http://svn.reactos.org/svn/reactos/vendor/wine/dlls/winex11.drv/current/x11…
============================================================================== --- vendor/wine/dlls/winex11.drv/current/x11drv.h [iso-8859-1] (original) +++ vendor/wine/dlls/winex11.drv/current/x11drv.h [iso-8859-1] Fri Sep 25 20:32:41 2009 @@ -124,6 +124,7 @@ XImage *image; /* cached XImage */ int *colorMap; /* color map info */ int nColorMap; + BOOL trueColor; CRITICAL_SECTION lock; /* GDI access lock */ enum x11drv_shm_mode shm_mode; #ifdef HAVE_LIBXXSHM @@ -286,6 +287,7 @@ extern void X11DRV_XRender_Finalize(void); extern BOOL X11DRV_XRender_SelectFont(X11DRV_PDEVICE*, HFONT); extern void X11DRV_XRender_DeleteDC(X11DRV_PDEVICE*); +extern void X11DRV_XRender_CopyBrush(X11DRV_PDEVICE *physDev, X_PHYSBITMAP *physBitmap, int width, int height); extern BOOL X11DRV_XRender_ExtTextOut(X11DRV_PDEVICE *physDev, INT x, INT y, UINT flags, const RECT *lprect, LPCWSTR wstr, UINT count, const INT *lpDx); @@ -493,6 +495,7 @@ extern COLORREF X11DRV_PALETTE_ToLogical(X11DRV_PDEVICE *physDev, int pixel); extern int X11DRV_PALETTE_ToPhysical(X11DRV_PDEVICE *physDev, COLORREF color); extern int X11DRV_PALETTE_LookupPixel(COLORREF color); +extern void X11DRV_PALETTE_ComputeColorShifts(ColorShifts *shifts, unsigned long redMask, unsigned long greenMask, unsigned long blueMask); extern unsigned int depth_to_bpp( unsigned int depth ); @@ -700,7 +703,6 @@ enum x11drv_window_messages { WM_X11DRV_ACQUIRE_SELECTION = 0x80001000, - WM_X11DRV_DELETE_WINDOW, WM_X11DRV_SET_WIN_FORMAT, WM_X11DRV_SET_WIN_REGION, WM_X11DRV_RESIZE_DESKTOP Modified: vendor/wine/dlls/winex11.drv/current/xrender.c URL:
http://svn.reactos.org/svn/reactos/vendor/wine/dlls/winex11.drv/current/xre…
============================================================================== --- vendor/wine/dlls/winex11.drv/current/xrender.c [iso-8859-1] (original) +++ vendor/wine/dlls/winex11.drv/current/xrender.c [iso-8859-1] Fri Sep 25 20:32:41 2009 @@ -427,23 +427,41 @@ return NULL; } -static WineXRenderFormat *get_xrender_format_from_pdevice(X11DRV_PDEVICE *physDev) -{ - WXRFormat format; - - switch(physDev->depth) - { - case 1: - format = WXR_FORMAT_MONO; - break; - default: - /* For now fall back to the format of the default visual. - In the future we should check if we are using a DDB/DIB and what exact format we need. - */ - return default_format; - } - - return get_xrender_format(format); +static WineXRenderFormat *get_xrender_format_from_color_shifts(int depth, ColorShifts *shifts) +{ + int redMask, greenMask, blueMask; + unsigned int i; + + if(depth == 1) + return get_xrender_format(WXR_FORMAT_MONO); + + /* physDevs of a depth <=8, don't have color_shifts set and XRender can't handle those except for 1-bit */ + if(!shifts) + return default_format; + + redMask = shifts->physicalRed.max << shifts->physicalRed.shift; + greenMask = shifts->physicalGreen.max << shifts->physicalGreen.shift; + blueMask = shifts->physicalBlue.max << shifts->physicalBlue.shift; + + /* Try to locate a format which matches the specification of the dibsection. */ + for(i = 0; i < (sizeof(wxr_formats_template) / sizeof(wxr_formats_template[0])); i++) + { + if( depth == wxr_formats_template[i].depth && + redMask == (wxr_formats_template[i].redMask << wxr_formats_template[i].red) && + greenMask == (wxr_formats_template[i].greenMask << wxr_formats_template[i].green) && + blueMask == (wxr_formats_template[i].blueMask << wxr_formats_template[i].blue) ) + + { + /* When we reach this stage the format was found in our template table but this doesn't mean that + * the Xserver also supports this format (e.g. its depth might be too low). The call below verifies that. + */ + return get_xrender_format(wxr_formats_template[i].wxr_format); + } + } + + /* This should not happen because when we reach 'shifts' must have been set and we only allows shifts which are backed by X */ + ERR("No XRender format found!\n"); + return NULL; } static BOOL fontcmp(LFANDSIZE *p1, LFANDSIZE *p2) @@ -1381,7 +1399,7 @@ unsigned int idx; double cosEsc, sinEsc; LOGFONTW lf; - WineXRenderFormat *dst_format = get_xrender_format_from_pdevice(physDev); + WineXRenderFormat *dst_format = get_xrender_format_from_color_shifts(physDev->depth, physDev->color_shifts); Picture tile_pict = 0; /* Do we need to disable antialiasing because of palette mode? */ @@ -1787,7 +1805,7 @@ POINT pts[2]; BOOL top_down = FALSE; RGNDATA *rgndata; - WineXRenderFormat *dst_format = get_xrender_format_from_pdevice(devDst); + WineXRenderFormat *dst_format = get_xrender_format_from_color_shifts(devDst->depth, devDst->color_shifts); WineXRenderFormat *src_format; int repeat_src; @@ -1816,14 +1834,10 @@ heightSrc = pts[1].y - pts[0].y; if (!widthDst || !heightDst || !widthSrc || !heightSrc) return TRUE; - /* If the source is a 1x1 bitmap, tiling is equivalent to stretching, but - tiling is much faster. Therefore, we do no stretching in this case. */ - repeat_src = widthSrc == 1 && heightSrc == 1; - #ifndef HAVE_XRENDERSETPICTURETRANSFORM - if((widthDst != widthSrc || heightDst != heightSrc) && !repeat_src) + if(widthDst != widthSrc || heightDst != heightSrc) #else - if(!pXRenderSetPictureTransform && !repeat_src) + if(!pXRenderSetPictureTransform) #endif { FIXME("Unable to Stretch, XRenderSetPictureTransform is currently required\n"); @@ -1840,6 +1854,10 @@ } return FALSE; } + + /* If the source is a 1x1 bitmap, tiling is equivalent to stretching, but + tiling is much faster. Therefore, we do no stretching in this case. */ + repeat_src = dib.dsBmih.biWidth == 1 && abs(dib.dsBmih.biHeight) == 1; if (xSrc < 0 || ySrc < 0 || widthSrc < 0 || heightSrc < 0 || xSrc + widthSrc > dib.dsBmih.biWidth || ySrc + heightSrc > abs(dib.dsBmih.biHeight)) @@ -1948,7 +1966,10 @@ /* Make sure we ALWAYS set the transformation matrix even if we don't need to scale. The reason is * that later on we want to reuse pictures (it can bring a lot of extra performance) and each time * a different transformation matrix might have been used. */ - set_xrender_transformation(src_pict, widthSrc/(double)widthDst, heightSrc/(double)heightDst, 0, 0); + if (repeat_src) + set_xrender_transformation(src_pict, 1.0, 1.0, 0, 0); + else + set_xrender_transformation(src_pict, widthSrc/(double)widthDst, heightSrc/(double)heightDst, 0, 0); pXRenderComposite(gdi_display, PictOpOver, src_pict, 0, dst_pict, 0, 0, 0, 0, xDst + devDst->dc_rect.left, yDst + devDst->dc_rect.top, widthDst, heightDst); @@ -1966,6 +1987,40 @@ return TRUE; } +void X11DRV_XRender_CopyBrush(X11DRV_PDEVICE *physDev, X_PHYSBITMAP *physBitmap, int width, int height) +{ + /* At depths >1, the depth of physBitmap and physDev might not be the same e.g. the physbitmap might be a 16-bit DIB while the physdev uses 24-bit */ + int depth = physBitmap->pixmap_depth == 1 ? 1 : physDev->depth; + + wine_tsx11_lock(); + physDev->brush.pixmap = XCreatePixmap(gdi_display, root_window, width, height, depth); + + /* Use XCopyArea when the physBitmap and brush.pixmap have the same depth. */ + if(physBitmap->pixmap_depth == 1 || physDev->depth == physBitmap->pixmap_depth) + { + XCopyArea( gdi_display, physBitmap->pixmap, physDev->brush.pixmap, + get_bitmap_gc(physBitmap->pixmap_depth), 0, 0, width, height, 0, 0 ); + } + else /* We meed depth conversion */ + { + WineXRenderFormat *src_format = get_xrender_format_from_color_shifts(physBitmap->pixmap_depth, &physBitmap->pixmap_color_shifts); + WineXRenderFormat *dst_format = get_xrender_format_from_color_shifts(physDev->depth, physDev->color_shifts); + + Picture src_pict, dst_pict; + XRenderPictureAttributes pa; + pa.subwindow_mode = IncludeInferiors; + pa.repeat = RepeatNone; + + src_pict = pXRenderCreatePicture(gdi_display, physBitmap->pixmap, src_format->pict_format, CPSubwindowMode|CPRepeat, &pa); + dst_pict = pXRenderCreatePicture(gdi_display, physDev->brush.pixmap, dst_format->pict_format, CPSubwindowMode|CPRepeat, &pa); + + xrender_blit(src_pict, 0, dst_pict, 0, 0, 1.0, 1.0, width, height); + pXRenderFreePicture(gdi_display, src_pict); + pXRenderFreePicture(gdi_display, dst_pict); + } + wine_tsx11_unlock(); +} + BOOL X11DRV_XRender_GetSrcAreaStretch(X11DRV_PDEVICE *physDevSrc, X11DRV_PDEVICE *physDevDst, Pixmap pixmap, GC gc, INT widthSrc, INT heightSrc, @@ -1977,8 +2032,8 @@ int height = visRectDst->bottom - visRectDst->top; int x_src = physDevSrc->dc_rect.left + visRectSrc->left; int y_src = physDevSrc->dc_rect.top + visRectSrc->top; - WineXRenderFormat *src_format = get_xrender_format_from_pdevice(physDevSrc); - WineXRenderFormat *dst_format = get_xrender_format_from_pdevice(physDevDst); + WineXRenderFormat *src_format = get_xrender_format_from_color_shifts(physDevSrc->depth, physDevSrc->color_shifts); + WineXRenderFormat *dst_format = get_xrender_format_from_color_shifts(physDevDst->depth, physDevDst->color_shifts); Picture src_pict=0, dst_pict=0, mask_pict=0; double xscale = widthSrc/(double)widthDst; @@ -2107,6 +2162,16 @@ return FALSE; } +void X11DRV_XRender_CopyBrush(X11DRV_PDEVICE *physDev, X_PHYSBITMAP *physBitmap, int width, int height) +{ + wine_tsx11_lock(); + physDev->brush.pixmap = XCreatePixmap(gdi_display, root_window, width, height, physBitmap->pixmap_depth); + + XCopyArea( gdi_display, physBitmap->pixmap, physDev->brush.pixmap, + get_bitmap_gc(physBitmap->pixmap_depth), 0, 0, width, height, 0, 0 ); + wine_tsx11_unlock(); +} + BOOL X11DRV_XRender_GetSrcAreaStretch(X11DRV_PDEVICE *physDevSrc, X11DRV_PDEVICE *physDevDst, Pixmap pixmap, GC gc, INT widthSrc, INT heightSrc, Modified: vendor/wine/dlls/winex11.drv/current/xvidmode.c URL:
http://svn.reactos.org/svn/reactos/vendor/wine/dlls/winex11.drv/current/xvi…
============================================================================== --- vendor/wine/dlls/winex11.drv/current/xvidmode.c [iso-8859-1] (original) +++ vendor/wine/dlls/winex11.drv/current/xvidmode.c [iso-8859-1] Fri Sep 25 20:32:41 2009 @@ -29,6 +29,9 @@ #ifdef HAVE_X11_EXTENSIONS_XF86VMODE_H #include <X11/extensions/xf86vmode.h> +#endif +#ifdef HAVE_X11_EXTENSIONS_XF86VMPROTO_H +#include <X11/extensions/xf86vmproto.h> #endif #include "xvidmode.h"
15 years, 3 months
1
0
0
0
[fireball] 43148: - Update to Wine 1.1.29.
by fireball@svn.reactos.org
Author: fireball Date: Fri Sep 25 20:24:36 2009 New Revision: 43148 URL:
http://svn.reactos.org/svn/reactos?rev=43148&view=rev
Log: - Update to Wine 1.1.29. Modified: branches/arwinss/reactos/dll/win32/gdi32/ (props changed) branches/arwinss/reactos/dll/win32/gdi32/freetype.c branches/arwinss/reactos/dll/win32/gdi32/metafile.c branches/arwinss/reactos/dll/win32/gdi32/opengl.c branches/arwinss/reactos/dll/win32/user32/ (props changed) branches/arwinss/reactos/dll/win32/user32/button.c branches/arwinss/reactos/dll/win32/user32/defdlg.c branches/arwinss/reactos/dll/win32/user32/defwnd.c branches/arwinss/reactos/dll/win32/user32/dialog.c branches/arwinss/reactos/dll/win32/user32/edit.c branches/arwinss/reactos/dll/win32/user32/focus.c branches/arwinss/reactos/dll/win32/user32/hook.c branches/arwinss/reactos/dll/win32/user32/menu.c branches/arwinss/reactos/dll/win32/user32/message.c branches/arwinss/reactos/dll/win32/user32/resources/user32.rc branches/arwinss/reactos/dll/win32/user32/resources/user32_De.rc branches/arwinss/reactos/dll/win32/user32/resources/user32_Fr.rc branches/arwinss/reactos/dll/win32/user32/resources/user32_Pt.rc branches/arwinss/reactos/dll/win32/user32/resources/user32_Ru.rc branches/arwinss/reactos/dll/win32/user32/spy.c branches/arwinss/reactos/dll/win32/user32/win.c branches/arwinss/reactos/dll/win32/user32/winpos.c branches/arwinss/reactos/include/reactos/wine/server_protocol.h branches/arwinss/reactos/subsystems/win32/win32k/include/request.h (contents, props changed) Propchange: branches/arwinss/reactos/dll/win32/gdi32/ ------------------------------------------------------------------------------ --- svn:mergeinfo (added) +++ svn:mergeinfo Fri Sep 25 20:24:36 2009 @@ -1,0 +1,3 @@ +/branches/ros-amd64-bringup/reactos/dll/win32/gdi32:35746,35789,36614,36930,38148,38151,38265,38268,39333,39345,40991,41000,41027-41028,41050,41052,41082-41086,41549,43080 +/trunk/reactos/dll/win32/gdi32:42000-43126 +/vendor/wine/dlls/gdi32/current:43136 Modified: branches/arwinss/reactos/dll/win32/gdi32/freetype.c URL:
http://svn.reactos.org/svn/reactos/branches/arwinss/reactos/dll/win32/gdi32…
============================================================================== --- branches/arwinss/reactos/dll/win32/gdi32/freetype.c [iso-8859-1] (original) +++ branches/arwinss/reactos/dll/win32/gdi32/freetype.c [iso-8859-1] Fri Sep 25 20:24:36 2009 @@ -1737,7 +1737,7 @@ if(psub) { TRACE("%s: SystemLink entry for substituted font, ignoring\n", debugstr_w(value)); - continue; + goto next; } font_link = HeapAlloc(GetProcessHeap(), 0, sizeof(*font_link)); font_link->font_name = strdupW(value); @@ -1786,6 +1786,7 @@ } } list_add_tail(&system_links, &font_link->entry); + next: val_len = max_val + 1; data_len = max_data; } @@ -5661,7 +5662,19 @@ TM.tmAveCharWidth = 1; } TM.tmMaxCharWidth = (pFT_MulFix(ft_face->bbox.xMax - ft_face->bbox.xMin, x_scale) + 32) >> 6; - TM.tmWeight = (font->fake_bold || (ft_face->style_flags & FT_STYLE_FLAG_BOLD)) ? FW_BOLD : FW_REGULAR; + TM.tmWeight = FW_REGULAR; + if (font->fake_bold) + TM.tmWeight = FW_BOLD; + else + { + if (ft_face->style_flags & FT_STYLE_FLAG_BOLD) + { + if (pOS2->usWeightClass > FW_MEDIUM) + TM.tmWeight = pOS2->usWeightClass; + } + else if (pOS2->usWeightClass <= FW_MEDIUM) + TM.tmWeight = pOS2->usWeightClass; + } TM.tmOverhang = 0; TM.tmDigitizedAspectX = 300; TM.tmDigitizedAspectY = 300; @@ -5868,6 +5881,7 @@ child->font->scale_y = font->scale_y; hfontlist = HeapAlloc(GetProcessHeap(), 0, sizeof(*hfontlist)); hfontlist->hfont = CreateFontIndirectW(&font->font_desc.lf); + child->font->name = strdupW(child->face->family->FamilyName); list_add_head(&child->font->hfontlist, &hfontlist->entry); child->font->base_font = font; list_add_head(&child_font_list, &child->font->entry); Modified: branches/arwinss/reactos/dll/win32/gdi32/metafile.c URL:
http://svn.reactos.org/svn/reactos/branches/arwinss/reactos/dll/win32/gdi32…
============================================================================== --- branches/arwinss/reactos/dll/win32/gdi32/metafile.c [iso-8859-1] (original) +++ branches/arwinss/reactos/dll/win32/gdi32/metafile.c [iso-8859-1] Fri Sep 25 20:24:36 2009 @@ -1222,6 +1222,26 @@ return ret; } +/******************************************************************* + * muldiv + * + * Behaves somewhat differently to MulDiv when the answer is -ve + * and also rounds n.5 towards zero + */ +static INT muldiv(INT m1, INT m2, INT d) +{ + LONGLONG ret; + + ret = ((LONGLONG)m1 * m2 + d/2) / d; /* Always add d/2 even if ret will be -ve */ + + if((LONGLONG)m1 * m2 * 2 == (2 * ret - 1) * d) /* If the answer is exactly n.5 round towards zero */ + { + if(ret > 0) ret--; + else ret++; + } + return ret; +} + /****************************************************************** * set_window * @@ -1247,28 +1267,28 @@ case MM_TEXT: case MM_ISOTROPIC: case MM_ANISOTROPIC: - pt.y = MulDiv(header.rclFrame.top, vert_res, vert_size * 100); - pt.x = MulDiv(header.rclFrame.left, horz_res, horz_size * 100); + pt.y = muldiv(header.rclFrame.top, vert_res, vert_size * 100); + pt.x = muldiv(header.rclFrame.left, horz_res, horz_size * 100); break; case MM_LOMETRIC: - pt.y = MulDiv(-header.rclFrame.top, 1, 10) + 1; - pt.x = MulDiv( header.rclFrame.left, 1, 10); + pt.y = muldiv(-header.rclFrame.top, 1, 10) + 1; + pt.x = muldiv( header.rclFrame.left, 1, 10); break; case MM_HIMETRIC: pt.y = -header.rclFrame.top + 1; - pt.x = header.rclFrame.left; + pt.x = (header.rclFrame.left >= 0) ? header.rclFrame.left : header.rclFrame.left + 1; /* See the tests */ break; case MM_LOENGLISH: - pt.y = MulDiv(-header.rclFrame.top, 10, 254) + 1; - pt.x = MulDiv( header.rclFrame.left, 10, 254); + pt.y = muldiv(-header.rclFrame.top, 10, 254) + 1; + pt.x = muldiv( header.rclFrame.left, 10, 254); break; case MM_HIENGLISH: - pt.y = MulDiv(-header.rclFrame.top, 100, 254) + 1; - pt.x = MulDiv( header.rclFrame.left, 100, 254); + pt.y = muldiv(-header.rclFrame.top, 100, 254) + 1; + pt.x = muldiv( header.rclFrame.left, 100, 254); break; case MM_TWIPS: - pt.y = MulDiv(-header.rclFrame.top, 72 * 20, 2540) + 1; - pt.x = MulDiv( header.rclFrame.left, 72 * 20, 2540); + pt.y = muldiv(-header.rclFrame.top, 72 * 20, 2540) + 1; + pt.x = muldiv( header.rclFrame.left, 72 * 20, 2540); break; default: WARN("Unknown map mode %d\n", map_mode); @@ -1276,8 +1296,8 @@ } SetWindowOrgEx(hdc, pt.x, pt.y, NULL); - pt.x = MulDiv(header.rclFrame.right - header.rclFrame.left, horz_res, horz_size * 100); - pt.y = MulDiv(header.rclFrame.bottom - header.rclFrame.top, vert_res, vert_size * 100); + pt.x = muldiv(header.rclFrame.right - header.rclFrame.left, horz_res, horz_size * 100); + pt.y = muldiv(header.rclFrame.bottom - header.rclFrame.top, vert_res, vert_size * 100); SetWindowExtEx(hdc, pt.x, pt.y, NULL); return TRUE; } Modified: branches/arwinss/reactos/dll/win32/gdi32/opengl.c URL:
http://svn.reactos.org/svn/reactos/branches/arwinss/reactos/dll/win32/gdi32…
============================================================================== --- branches/arwinss/reactos/dll/win32/gdi32/opengl.c [iso-8859-1] (original) +++ branches/arwinss/reactos/dll/win32/gdi32/opengl.c [iso-8859-1] Fri Sep 25 20:24:36 2009 @@ -168,7 +168,7 @@ TRACE("(%p)\n", pbuffer); - if (!dc) return FALSE; + if (!dc) return 0; /* The display driver has to do the rest of the work because * we need access to lowlevel datatypes which we can't access here @@ -338,7 +338,7 @@ /* Retrieve the global hDC to get access to the driver. */ dc = OPENGL_GetDefaultDC(); - if (!dc) return FALSE; + if (!dc) return NULL; if (!dc->funcs->pwglGetProcAddress) FIXME(" :stub\n"); else ret = dc->funcs->pwglGetProcAddress(func); Propchange: branches/arwinss/reactos/dll/win32/user32/ ------------------------------------------------------------------------------ --- svn:mergeinfo (added) +++ svn:mergeinfo Fri Sep 25 20:24:36 2009 @@ -1,0 +1,3 @@ +/branches/ros-amd64-bringup/reactos/dll/win32/user32:35746,35789,36614,36930,38148,38151,38265,38268,39333,39345,40991,41000,41027-41028,41050,41052,41082-41086,41549,43080 +/trunk/reactos/dll/win32/user32:42000-43126 +/vendor/wine/dlls/user32/current:43136 Modified: branches/arwinss/reactos/dll/win32/user32/button.c URL:
http://svn.reactos.org/svn/reactos/branches/arwinss/reactos/dll/win32/user3…
============================================================================== --- branches/arwinss/reactos/dll/win32/user32/button.c [iso-8859-1] (original) +++ branches/arwinss/reactos/dll/win32/user32/button.c [iso-8859-1] Fri Sep 25 20:24:36 2009 @@ -836,6 +836,9 @@ hOldBrush = SelectObject(hDC,GetSysColorBrush(COLOR_BTNFACE)); oldBkMode = SetBkMode(hDC, TRANSPARENT); + /* completely skip the drawing if only focus has changed */ + if (action == ODA_FOCUS) goto draw_focus; + if (get_button_type(style) == BS_DEFPUSHBUTTON) { Rectangle(hDC, rc.left, rc.top, rc.right, rc.bottom); @@ -879,7 +882,9 @@ SetTextColor( hDC, oldTxtColor ); - if (state & BUTTON_HASFOCUS) +draw_focus: + if ((action == ODA_FOCUS) || + ((action == ODA_DRAWENTIRE) && (state & BUTTON_HASFOCUS))) { InflateRect( &focus_rect, -1, -1 ); IntersectRect(&focus_rect, &focus_rect, &rc); Modified: branches/arwinss/reactos/dll/win32/user32/defdlg.c URL:
http://svn.reactos.org/svn/reactos/branches/arwinss/reactos/dll/win32/user3…
============================================================================== --- branches/arwinss/reactos/dll/win32/user32/defdlg.c [iso-8859-1] (original) +++ branches/arwinss/reactos/dll/win32/user32/defdlg.c [iso-8859-1] Fri Sep 25 20:24:36 2009 @@ -345,7 +345,10 @@ wndPtr = WIN_GetPtr( hwnd ); if (!wndPtr || wndPtr == WND_OTHER_PROCESS || wndPtr == WND_DESKTOP) + { + SetLastError( ERROR_INVALID_WINDOW_HANDLE ); return NULL; + } dlgInfo = wndPtr->dlgInfo; @@ -383,7 +386,7 @@ BOOL result = FALSE; /* Perform DIALOGINFO initialization if not done */ - if(!(dlgInfo = DIALOG_get_info(hwnd32, TRUE))) return -1; + if(!(dlgInfo = DIALOG_get_info(hwnd32, TRUE))) return 0; SetWindowLongPtrW( hwnd32, DWLP_MSGRESULT, 0 ); @@ -435,7 +438,7 @@ BOOL result = FALSE; /* Perform DIALOGINFO initialization if not done */ - if(!(dlgInfo = DIALOG_get_info( hwnd, TRUE ))) return -1; + if(!(dlgInfo = DIALOG_get_info( hwnd, TRUE ))) return 0; SetWindowLongPtrW( hwnd, DWLP_MSGRESULT, 0 ); @@ -486,7 +489,7 @@ DLGPROC dlgproc; /* Perform DIALOGINFO initialization if not done */ - if(!(dlgInfo = DIALOG_get_info( hwnd, TRUE ))) return -1; + if(!(dlgInfo = DIALOG_get_info( hwnd, TRUE ))) return 0; SetWindowLongPtrW( hwnd, DWLP_MSGRESULT, 0 ); Modified: branches/arwinss/reactos/dll/win32/user32/defwnd.c URL:
http://svn.reactos.org/svn/reactos/branches/arwinss/reactos/dll/win32/user3…
============================================================================== --- branches/arwinss/reactos/dll/win32/user32/defwnd.c [iso-8859-1] (original) +++ branches/arwinss/reactos/dll/win32/user32/defwnd.c [iso-8859-1] Fri Sep 25 20:24:36 2009 @@ -66,11 +66,16 @@ if (!(winpos->flags & SWP_NOCLIENTSIZE) || (winpos->flags & SWP_STATECHANGED)) { - WPARAM wp = SIZE_RESTORED; - if (IsZoomed(hwnd)) wp = SIZE_MAXIMIZED; - else if (IsIconic(hwnd)) wp = SIZE_MINIMIZED; - - SendMessageW( hwnd, WM_SIZE, wp, MAKELONG(rect.right-rect.left, rect.bottom-rect.top) ); + if (IsIconic( hwnd )) + { + SendMessageW( hwnd, WM_SIZE, SIZE_MINIMIZED, 0 ); + } + else + { + WPARAM wp = IsZoomed( hwnd ) ? SIZE_MAXIMIZED : SIZE_RESTORED; + + SendMessageW( hwnd, WM_SIZE, wp, MAKELONG(rect.right-rect.left, rect.bottom-rect.top) ); + } } } @@ -216,7 +221,7 @@ * Client area */ if ( uFlags & PRF_CLIENT) - SendMessageW(hwnd, WM_PRINTCLIENT, (WPARAM)hdc, PRF_CLIENT); + SendMessageW(hwnd, WM_PRINTCLIENT, (WPARAM)hdc, uFlags); } Modified: branches/arwinss/reactos/dll/win32/user32/dialog.c URL:
http://svn.reactos.org/svn/reactos/branches/arwinss/reactos/dll/win32/user3…
============================================================================== --- branches/arwinss/reactos/dll/win32/user32/dialog.c [iso-8859-1] (original) +++ branches/arwinss/reactos/dll/win32/user32/dialog.c [iso-8859-1] Fri Sep 25 20:24:36 2009 @@ -673,7 +673,7 @@ dlgInfo->hMenu = hMenu; dlgInfo->xBaseUnit = xBaseUnit; dlgInfo->yBaseUnit = yBaseUnit; - dlgInfo->idResult = 0; + dlgInfo->idResult = IDOK; dlgInfo->flags = flags; dlgInfo->hDialogHeap = 0; @@ -808,7 +808,7 @@ if (!GetMessageW( &msg, 0, 0, 0 )) break; } - if (!IsWindow( hwnd )) return -1; + if (!IsWindow( hwnd )) return 0; if (!(dlgInfo->flags & DF_END) && !IsDialogMessageW( hwnd, &msg)) { TranslateMessage( &msg ); Modified: branches/arwinss/reactos/dll/win32/user32/edit.c URL:
http://svn.reactos.org/svn/reactos/branches/arwinss/reactos/dll/win32/user3…
============================================================================== --- branches/arwinss/reactos/dll/win32/user32/edit.c [iso-8859-1] (original) +++ branches/arwinss/reactos/dll/win32/user32/edit.c [iso-8859-1] Fri Sep 25 20:24:36 2009 @@ -83,6 +83,8 @@ #define EF_USE_SOFTBRK 0x0100 /* Enable soft breaks in text. */ #define EF_APP_HAS_HANDLE 0x0200 /* Set when an app sends EM_[G|S]ETHANDLE. We are in sole control of the text buffer if this is clear. */ +#define EF_DIALOGMODE 0x0400 /* Indicates that we are inside a dialog window */ + typedef enum { END_0 = 0, /* line ends with terminating '\0' character */ @@ -3101,22 +3103,9 @@ * controls without ES_WANTRETURN would attempt to detect whether it is inside * a dialog box or not. */ -static BOOL EDIT_IsInsideDialog(EDITSTATE *es) -{ - WND *pParent; - BOOL r = FALSE; - - if (es->hwndParent) - { - pParent = WIN_GetPtr(es->hwndParent); - if (pParent && pParent != WND_OTHER_PROCESS && pParent != WND_DESKTOP) - { - if (pParent->flags & WIN_ISDIALOG) - r = TRUE; - WIN_ReleasePtr(pParent); - } - } - return r; +static inline BOOL EDIT_IsInsideDialog(EDITSTATE *es) +{ + return (es->flags & EF_DIALOGMODE); } @@ -3568,32 +3557,32 @@ /* If the edit doesn't want the return send a message to the default object */ if(!(es->style & ES_MULTILINE) || !(es->style & ES_WANTRETURN)) { - HWND hwndParent; - DWORD dw; - - if (!EDIT_IsInsideDialog(es)) return 1; + DWORD dw; + + if (!EDIT_IsInsideDialog(es)) break; if (control) break; - hwndParent = GetParent(es->hwndSelf); - dw = SendMessageW( hwndParent, DM_GETDEFID, 0, 0 ); - if (HIWORD(dw) == DC_HASDEFID) - { - SendMessageW( hwndParent, WM_COMMAND, - MAKEWPARAM( LOWORD(dw), BN_CLICKED ), - (LPARAM)GetDlgItem( hwndParent, LOWORD(dw) ) ); - } - else - SendMessageW( hwndParent, WM_COMMAND, IDOK, (LPARAM)GetDlgItem( hwndParent, IDOK ) ); + dw = SendMessageW(es->hwndParent, DM_GETDEFID, 0, 0); + if (HIWORD(dw) == DC_HASDEFID) + { + HWND hwDefCtrl = GetDlgItem(es->hwndParent, LOWORD(dw)); + if (hwDefCtrl) + { + SendMessageW(es->hwndParent, WM_NEXTDLGCTL, (WPARAM)hwDefCtrl, (LPARAM)TRUE); + PostMessageW(hwDefCtrl, WM_KEYDOWN, VK_RETURN, 0); + } + } } break; case VK_ESCAPE: - if (!(es->style & ES_MULTILINE)) - SendMessageW(GetParent(es->hwndSelf), WM_COMMAND, IDCANCEL, (LPARAM)GetDlgItem( GetParent(es->hwndSelf), IDCANCEL ) ); + if ((es->style & ES_MULTILINE) && EDIT_IsInsideDialog(es)) + PostMessageW(es->hwndParent, WM_CLOSE, 0, 0); break; case VK_TAB: - SendMessageW(es->hwndParent, WM_NEXTDLGCTL, shift, 0); + if ((es->style & ES_MULTILINE) && EDIT_IsInsideDialog(es)) + SendMessageW(es->hwndParent, WM_NEXTDLGCTL, shift, 0); break; } - return 0; + return TRUE; } @@ -4946,27 +4935,21 @@ if (es->style & ES_MULTILINE) result |= DLGC_WANTALLKEYS; - if (lParam && (((LPMSG)lParam)->message == WM_KEYDOWN)) - { - int vk = (int)((LPMSG)lParam)->wParam; - - if (es->hwndListBox) - { - if (vk == VK_RETURN || vk == VK_ESCAPE) - if (SendMessageW(GetParent(hwnd), CB_GETDROPPEDSTATE, 0, 0)) - result |= DLGC_WANTMESSAGE; - } - else - { - switch (vk) - { - case VK_ESCAPE: - SendMessageW(GetParent(hwnd), WM_CLOSE, 0, 0); - break; - default: - break; - } - } + if (lParam) + { + es->flags|=EF_DIALOGMODE; + + if (((LPMSG)lParam)->message == WM_KEYDOWN) + { + int vk = (int)((LPMSG)lParam)->wParam; + + if (es->hwndListBox) + { + if (vk == VK_RETURN || vk == VK_ESCAPE) + if (SendMessageW(GetParent(hwnd), CB_GETDROPPEDSTATE, 0, 0)) + result |= DLGC_WANTMESSAGE; + } + } } break; Modified: branches/arwinss/reactos/dll/win32/user32/focus.c URL:
http://svn.reactos.org/svn/reactos/branches/arwinss/reactos/dll/win32/user3…
============================================================================== --- branches/arwinss/reactos/dll/win32/user32/focus.c [iso-8859-1] (original) +++ branches/arwinss/reactos/dll/win32/user32/focus.c [iso-8859-1] Fri Sep 25 20:24:36 2009 @@ -193,7 +193,7 @@ } SERVER_END_REQ; - if (ret) + if (ret && previous != hwnd) { if (send_msg_old) /* old window belongs to other thread */ SendNotifyMessageW( previous, WM_WINE_SETACTIVEWINDOW, 0, 0 ); Modified: branches/arwinss/reactos/dll/win32/user32/hook.c URL:
http://svn.reactos.org/svn/reactos/branches/arwinss/reactos/dll/win32/user3…
============================================================================== --- branches/arwinss/reactos/dll/win32/user32/hook.c [iso-8859-1] (original) +++ branches/arwinss/reactos/dll/win32/user32/hook.c [iso-8859-1] Fri Sep 25 20:24:36 2009 @@ -322,7 +322,7 @@ { TRACE( "loading %s\n", debugstr_w(module) ); /* FIXME: the library will never be freed */ - if (!(mod = LoadLibraryW(module))) return NULL; + if (!(mod = LoadLibraryExW(module, NULL, LOAD_WITH_ALTERED_SEARCH_PATH))) return NULL; } return (char *)mod + (ULONG_PTR)proc; } Modified: branches/arwinss/reactos/dll/win32/user32/menu.c URL:
http://svn.reactos.org/svn/reactos/branches/arwinss/reactos/dll/win32/user3…
============================================================================== --- branches/arwinss/reactos/dll/win32/user32/menu.c [iso-8859-1] (original) +++ branches/arwinss/reactos/dll/win32/user32/menu.c [iso-8859-1] Fri Sep 25 20:24:36 2009 @@ -113,7 +113,7 @@ DWORD dwContextHelpID; DWORD dwMenuData; /* application defined value */ HMENU hSysMenuOwner; /* Handle to the dummy sys menu holder */ - SIZE maxBmpSize; /* Maximum size of the bitmap items */ + WORD textOffset; /* Offset of text when items have both bitmaps and text */ } POPUPMENU, *LPPOPUPMENU; /* internal flags for menu tracking */ @@ -147,6 +147,11 @@ /* top and bottom margins for popup menus */ #define MENU_TOP_MARGIN 3 #define MENU_BOTTOM_MARGIN 2 + +/* maximum allowed depth of any branch in the menu tree. + * This value is slightly larger than in windows (25) to + * stay on the safe side. */ +#define MAXMENUDEPTH 30 /* (other menu->FocusedItem values give the position of the focused item) */ #define NO_SELECTED_ITEM 0xffff @@ -185,6 +190,8 @@ static LRESULT WINAPI PopupMenuWndProc( HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam ); DWORD WINAPI DrawMenuBarTemp(HWND hwnd, HDC hDC, LPRECT lprect, HMENU hMenu, HFONT hFont); + +static BOOL SetMenuItemInfo_common( MENUITEM *, const MENUITEMINFOW *, BOOL); /********************************************************************* * menu class descriptor @@ -1065,8 +1072,7 @@ /* Keep the size of the bitmap in callback mode to be able * to draw it correctly */ lpitem->bmpsize = size; - lppop->maxBmpSize.cx = max( lppop->maxBmpSize.cx, size.cx); - lppop->maxBmpSize.cy = max( lppop->maxBmpSize.cy, size.cy); + lppop->textOffset = max( lppop->textOffset, size.cx); lpitem->rect.right += size.cx + 2; itemheight = size.cy + 2; } @@ -1160,6 +1166,7 @@ MENUITEM *lpitem; HDC hdc; UINT start, i; + int textandbmp = FALSE; int orgX, orgY, maxX, maxTab, maxTabWidth, maxHeight; lppop->Width = lppop->Height = 0; @@ -1171,8 +1178,7 @@ start = 0; maxX = 2 + 1; - lppop->maxBmpSize.cx = 0; - lppop->maxBmpSize.cy = 0; + lppop->textOffset = 0; while (start < lppop->nItems) { @@ -1197,6 +1203,7 @@ maxTab = max( maxTab, lpitem->xTab ); maxTabWidth = max(maxTabWidth,lpitem->rect.right-lpitem->xTab); } + if( lpitem->text && lpitem->hbmpItem) textandbmp = TRUE; } /* Finish the column (set all items to the largest width found) */ @@ -1212,6 +1219,12 @@ } lppop->Width = maxX; + /* if none of the items have both text and bitmap then + * the text and bitmaps are all aligned on the left. If there is at + * least one item with both text and bitmap then bitmaps are + * on the left and texts left aligned with the right hand side + * of the bitmaps */ + if( !textandbmp) lppop->textOffset = 0; /* space for 3d border */ lppop->Height += MENU_BOTTOM_MARGIN; @@ -1258,8 +1271,7 @@ maxY = lprect->top+1; start = 0; helpPos = ~0U; - lppop->maxBmpSize.cx = 0; - lppop->maxBmpSize.cy = 0; + lppop->textOffset = 0; while (start < lppop->nItems) { lpitem = &lppop->items[start]; @@ -1652,7 +1664,7 @@ DT_LEFT | DT_VCENTER | DT_SINGLELINE; if( !(menu->dwStyle & MNS_CHECKORBMP)) - rect.left += menu->maxBmpSize.cx; + rect.left += menu->textOffset; if ( lpitem->fState & MFS_DEFAULT ) { @@ -1754,6 +1766,7 @@ if( (menu = MENU_GetMenu( hmenu ))) { + TRACE("hmenu %p Style %08x\n", hmenu, menu->dwStyle); /* draw menu items */ if( menu->nItems) { @@ -2049,92 +2062,6 @@ /********************************************************************** - * MENU_SetItemData - * - * Set an item's flags, id and text ptr. Called by InsertMenu() and - * ModifyMenu(). - */ -static BOOL MENU_SetItemData( MENUITEM *item, UINT flags, UINT_PTR id, - LPCWSTR str ) -{ - debug_print_menuitem("MENU_SetItemData from: ", item, ""); - TRACE("flags=%x str=%p\n", flags, str); - - if (IS_STRING_ITEM(flags)) - { - LPWSTR prevText = item->text; - if (!str) - { - flags |= MF_SEPARATOR; - item->text = NULL; - } - else - { - LPWSTR text; - /* Item beginning with a backspace is a help item */ - if (*str == '\b') - { - flags |= MF_HELP; - str++; - } - if (!(text = HeapAlloc( GetProcessHeap(), 0, (strlenW(str)+1) * sizeof(WCHAR) ))) - return FALSE; - strcpyW( text, str ); - item->text = text; - } - item->hbmpItem = NULL; - HeapFree( GetProcessHeap(), 0, prevText ); - } - else if(( flags & MFT_BITMAP)) { - item->hbmpItem = (HBITMAP)(LOWORD(str)); - /* setting bitmap clears text */ - HeapFree( GetProcessHeap(), 0, item->text ); - item->text = NULL; - } - - if (flags & MF_SEPARATOR) flags |= MF_GRAYED | MF_DISABLED; - - if (flags & MF_OWNERDRAW) - item->dwItemData = (DWORD_PTR)str; - else - item->dwItemData = 0; - - if ((item->fType & MF_POPUP) && (flags & MF_POPUP) && (item->hSubMenu != (HMENU)id) ) - DestroyMenu( item->hSubMenu ); /* ModifyMenu() spec */ - - if (flags & MF_POPUP) - { - POPUPMENU *menu = MENU_GetMenu((HMENU)id); - if (menu) menu->wFlags |= MF_POPUP; - else - { - item->wID = 0; - item->hSubMenu = 0; - item->fType = 0; - item->fState = 0; - return FALSE; - } - } - - item->wID = id; - if (flags & MF_POPUP) item->hSubMenu = (HMENU)id; - - if ((item->fType & MF_POPUP) && !(flags & MF_POPUP) ) - flags |= MF_POPUP; /* keep popup */ - - item->fType = flags & TYPE_MASK; - /* MFS_DEFAULT is not accepted. MF_HILITE is not listed as a valid flag - for ModifyMenu, but Windows accepts it */ - item->fState = flags & MENUITEMINFO_STATE_MASK & ~MFS_DEFAULT; - - /* Don't call SetRectEmpty here! */ - - debug_print_menuitem("MENU_SetItemData to : ", item, ""); - return TRUE; -} - - -/********************************************************************** * MENU_InsertItem * * Insert (allocate) a new item into a menu. @@ -2165,8 +2092,7 @@ * Note: XP treats only bitmap handles 1 - 6 as "magic" ones * regardless of their id. */ - while (pos > 0 && (menu->items[pos - 1].fType & MFT_BITMAP) && - (INT_PTR)menu->items[pos - 1].hbmpItem >= (INT_PTR)HBMMENU_SYSTEM && + while (pos > 0 && (INT_PTR)menu->items[pos - 1].hbmpItem >= (INT_PTR)HBMMENU_SYSTEM && (INT_PTR)menu->items[pos - 1].hbmpItem <= (INT_PTR)HBMMENU_MBAR_CLOSE_D) pos--; @@ -3547,6 +3473,14 @@ EndPaint( hwnd, &ps ); return 0; } + + case WM_PRINTCLIENT: + { + MENU_DrawPopupMenu( hwnd, (HDC)wParam, + (HMENU)GetWindowLongPtrW( hwnd, 0 ) ); + return 0; + } + case WM_ERASEBKGND: return 1; @@ -3828,6 +3762,49 @@ } +/********************************************************************** + * MENU_mnu2mnuii + * + * Uses flags, id and text ptr, passed by InsertMenu() and + * ModifyMenu() to setup a MenuItemInfo structure. + */ +static void MENU_mnu2mnuii( UINT flags, UINT_PTR id, LPCWSTR str, + LPMENUITEMINFOW pmii) +{ + ZeroMemory( pmii, sizeof( MENUITEMINFOW)); + pmii->cbSize = sizeof( MENUITEMINFOW); + pmii->fMask = MIIM_STATE | MIIM_ID | MIIM_FTYPE; + /* setting bitmap clears text and vice versa */ + if( IS_STRING_ITEM(flags)) { + pmii->fMask |= MIIM_STRING | MIIM_BITMAP; + if( !str) + flags |= MF_SEPARATOR; + /* Item beginning with a backspace is a help item */ + /* FIXME: wrong place, this is only true in win16 */ + else if( *str == '\b') { + flags |= MF_HELP; + str++; + } + pmii->dwTypeData = (LPWSTR)str; + } else if( flags & MFT_BITMAP){ + pmii->fMask |= MIIM_BITMAP | MIIM_STRING; + pmii->hbmpItem = (HBITMAP)(ULONG_PTR)(LOWORD(str)); + } + if( flags & MF_OWNERDRAW){ + pmii->fMask |= MIIM_DATA; + pmii->dwItemData = (ULONG_PTR) str; + } + if( flags & MF_POPUP) { + pmii->fMask |= MIIM_SUBMENU; + pmii->hSubMenu = (HMENU)id; + } + if( flags & MF_SEPARATOR) flags |= MF_GRAYED | MF_DISABLED; + pmii->fState = flags & MENUITEMINFO_STATE_MASK & ~MFS_DEFAULT; + pmii->fType = flags & MENUITEMINFO_TYPE_MASK; + pmii->wID = (UINT)id; +} + + /******************************************************************* * InsertMenuW (USER32.@) */ @@ -3835,6 +3812,7 @@ UINT_PTR id, LPCWSTR str ) { MENUITEM *item; + MENUITEMINFOW mii; if (IS_STRING_ITEM(flags) && str) TRACE("hMenu %p, pos %d, flags %08x, id %04lx, str %s\n", @@ -3843,8 +3821,8 @@ hMenu, pos, flags, id, str ); if (!(item = MENU_InsertItem( hMenu, pos, flags ))) return FALSE; - - if (!(MENU_SetItemData( item, flags, id, str ))) + MENU_mnu2mnuii( flags, id, str, &mii); + if (!(SetMenuItemInfo_common( item, &mii, TRUE))) { RemoveMenu( hMenu, pos, flags ); return FALSE; @@ -3956,6 +3934,7 @@ UINT_PTR id, LPCWSTR str ) { MENUITEM *item; + MENUITEMINFOW mii; if (IS_STRING_ITEM(flags)) TRACE("%p %d %04x %04lx %s\n", hMenu, pos, flags, id, debugstr_w(str) ); @@ -3964,7 +3943,8 @@ if (!(item = MENU_FindItem( &hMenu, &pos, flags ))) return FALSE; MENU_GetMenu(hMenu)->Height = 0; /* force size recalculate */ - return MENU_SetItemData( item, flags, id, str ); + MENU_mnu2mnuii( flags, id, str, &mii); + return SetMenuItemInfo_common( item, &mii, TRUE); } @@ -4671,7 +4651,38 @@ /********************************************************************** + * MENU_depth + * + * detect if there are loops in the menu tree (or the depth is too large) + */ +static int MENU_depth( POPUPMENU *pmenu, int depth) +{ + int i; + MENUITEM *item; + int subdepth; + + depth++; + if( depth > MAXMENUDEPTH) return depth; + item = pmenu->items; + subdepth = depth; + for( i = 0; i < pmenu->nItems && subdepth <= MAXMENUDEPTH; i++, item++){ + POPUPMENU *psubmenu = item->hSubMenu ? MENU_GetMenu( item->hSubMenu) : NULL; + if( psubmenu){ + int bdepth = MENU_depth( psubmenu, depth); + if( bdepth > subdepth) subdepth = bdepth; + } + if( subdepth > MAXMENUDEPTH) + TRACE("<- hmenu %p\n", item->hSubMenu); + } + return subdepth; +} + + +/********************************************************************** * SetMenuItemInfo_common + * + * Note: does not support the MIIM_TYPE flag. Use the MIIM_FTYPE, + * MIIM_BITMAP and MIIM_STRING flags instead. */ static BOOL SetMenuItemInfo_common(MENUITEM * menu, @@ -4682,30 +4693,7 @@ debug_print_menuitem("SetMenuItemInfo_common from: ", menu, ""); - if (lpmii->fMask & MIIM_TYPE ) { - if( lpmii->fMask & ( MIIM_STRING | MIIM_FTYPE | MIIM_BITMAP)) { - WARN("invalid combination of fMask bits used\n"); - /* this does not happen on Win9x/ME */ - SetLastError( ERROR_INVALID_PARAMETER); - return FALSE; - } - - /* Remove the old type bits and replace them with the new ones */ - menu->fType &= ~MENUITEMINFO_TYPE_MASK; - menu->fType |= lpmii->fType & MENUITEMINFO_TYPE_MASK; - - if (IS_STRING_ITEM(menu->fType)) { - HeapFree(GetProcessHeap(), 0, menu->text); - set_menu_item_text( menu, lpmii->dwTypeData, unicode ); - } else if( (menu->fType) & MFT_BITMAP) - menu->hbmpItem = (HBITMAP)(ULONG_PTR)(LOWORD(lpmii->dwTypeData)); - } - if (lpmii->fMask & MIIM_FTYPE ) { - if(( lpmii->fType & MFT_BITMAP)) { - SetLastError( ERROR_INVALID_PARAMETER); - return FALSE; - } menu->fType &= ~MENUITEMINFO_TYPE_MASK; menu->fType |= lpmii->fType & MENUITEMINFO_TYPE_MASK; } @@ -4716,11 +4704,9 @@ } if (lpmii->fMask & MIIM_STATE) - { /* Other menu items having MFS_DEFAULT are not converted to normal items */ menu->fState = lpmii->fState & MENUITEMINFO_STATE_MASK; - } if (lpmii->fMask & MIIM_ID) menu->wID = lpmii->wID; @@ -4730,10 +4716,14 @@ if (menu->hSubMenu) { POPUPMENU *subMenu = MENU_GetMenu(menu->hSubMenu); if (subMenu) { + if( MENU_depth( subMenu, 0) > MAXMENUDEPTH) { + ERR( "Loop detected in menu hierarchy or maximum menu depth exceeded!\n"); + menu->hSubMenu = 0; + return FALSE; + } subMenu->wFlags |= MF_POPUP; menu->fType |= MF_POPUP; - } - else { + } else { SetLastError( ERROR_INVALID_PARAMETER); return FALSE; } @@ -4761,27 +4751,63 @@ } /********************************************************************** + * MENU_NormalizeMenuItemInfoStruct + * + * Helper for SetMenuItemInfo and InsertMenuItemInfo: + * check, copy and extend the MENUITEMINFO struct from the version that the application + * supplied to the version used by wine source. */ +static BOOL MENU_NormalizeMenuItemInfoStruct( const MENUITEMINFOW *pmii_in, + MENUITEMINFOW *pmii_out ) +{ + /* do we recognize the size? */ + if( pmii_in->cbSize != sizeof( MENUITEMINFOW) && + pmii_in->cbSize != sizeof( MENUITEMINFOW) - sizeof( pmii_in->hbmpItem)) { + SetLastError( ERROR_INVALID_PARAMETER); + return FALSE; + } + /* copy the fields that we have */ + memcpy( pmii_out, pmii_in, pmii_in->cbSize); + /* if the hbmpItem member is missing then extend */ + if( pmii_in->cbSize != sizeof( MENUITEMINFOW)) { + pmii_out->cbSize = sizeof( MENUITEMINFOW); + pmii_out->hbmpItem = NULL; + } + /* test for invalid bit combinations */ + if( (pmii_out->fMask & MIIM_TYPE && + pmii_out->fMask & (MIIM_STRING | MIIM_FTYPE | MIIM_BITMAP)) || + (pmii_out->fMask & MIIM_FTYPE && pmii_out->fType & MFT_BITMAP)) { + WARN("invalid combination of fMask bits used\n"); + /* this does not happen on Win9x/ME */ + SetLastError( ERROR_INVALID_PARAMETER); + return FALSE; + } + /* convert old style (MIIM_TYPE) to the new */ + if( pmii_out->fMask & MIIM_TYPE){ + pmii_out->fMask |= MIIM_FTYPE; + if( IS_STRING_ITEM(pmii_out->fType)){ + pmii_out->fMask |= MIIM_STRING; + } else if( (pmii_out->fType) & MFT_BITMAP){ + pmii_out->fMask |= MIIM_BITMAP; + pmii_out->hbmpItem = (HBITMAP)(ULONG_PTR)(LOWORD(pmii_out->dwTypeData)); + } + } + return TRUE; +} + +/********************************************************************** * SetMenuItemInfoA (USER32.@) */ BOOL WINAPI SetMenuItemInfoA(HMENU hmenu, UINT item, BOOL bypos, const MENUITEMINFOA *lpmii) { - MENUITEMINFOA mii; + MENUITEMINFOW mii; TRACE("hmenu %p, item %u, by pos %d, info %p\n", hmenu, item, bypos, lpmii); - if( lpmii->cbSize != sizeof( mii) && - lpmii->cbSize != sizeof( mii) - sizeof ( mii.hbmpItem)) { - SetLastError( ERROR_INVALID_PARAMETER); - return FALSE; - } - memcpy( &mii, lpmii, lpmii->cbSize); - if( lpmii->cbSize != sizeof( mii)) { - mii.cbSize = sizeof( mii); - mii.hbmpItem = NULL; - } + if (!MENU_NormalizeMenuItemInfoStruct( (MENUITEMINFOW *)lpmii, &mii )) return FALSE; + return SetMenuItemInfo_common(MENU_FindItem(&hmenu, &item, bypos? MF_BYPOSITION : 0), - (const MENUITEMINFOW *)&mii, FALSE); + &mii, FALSE); } /********************************************************************** @@ -4794,16 +4820,7 @@ TRACE("hmenu %p, item %u, by pos %d, info %p\n", hmenu, item, bypos, lpmii); - if( lpmii->cbSize != sizeof( mii) && - lpmii->cbSize != sizeof( mii) - sizeof ( mii.hbmpItem)) { - SetLastError( ERROR_INVALID_PARAMETER); - return FALSE; - } - memcpy( &mii, lpmii, lpmii->cbSize); - if( lpmii->cbSize != sizeof( mii)) { - mii.cbSize = sizeof( mii); - mii.hbmpItem = NULL; - } + if (!MENU_NormalizeMenuItemInfoStruct( lpmii, &mii )) return FALSE; return SetMenuItemInfo_common(MENU_FindItem(&hmenu, &item, bypos? MF_BYPOSITION : 0), &mii, TRUE); } @@ -4906,23 +4923,14 @@ const MENUITEMINFOA *lpmii) { MENUITEM *item; - MENUITEMINFOA mii; + MENUITEMINFOW mii; TRACE("hmenu %p, item %04x, by pos %d, info %p\n", hMenu, uItem, bypos, lpmii); - if( lpmii->cbSize != sizeof( mii) && - lpmii->cbSize != sizeof( mii) - sizeof ( mii.hbmpItem)) { - SetLastError( ERROR_INVALID_PARAMETER); - return FALSE; - } - memcpy( &mii, lpmii, lpmii->cbSize); - if( lpmii->cbSize != sizeof( mii)) { - mii.cbSize = sizeof( mii); - mii.hbmpItem = NULL; - } + if (!MENU_NormalizeMenuItemInfoStruct( (MENUITEMINFOW *)lpmii, &mii )) return FALSE; item = MENU_InsertItem(hMenu, uItem, bypos ? MF_BYPOSITION : 0 ); - return SetMenuItemInfo_common(item, (const MENUITEMINFOW *)&mii, FALSE); + return SetMenuItemInfo_common(item, &mii, FALSE); } @@ -4937,16 +4945,7 @@ TRACE("hmenu %p, item %04x, by pos %d, info %p\n", hMenu, uItem, bypos, lpmii); - if( lpmii->cbSize != sizeof( mii) && - lpmii->cbSize != sizeof( mii) - sizeof ( mii.hbmpItem)) { - SetLastError( ERROR_INVALID_PARAMETER); - return FALSE; - } - memcpy( &mii, lpmii, lpmii->cbSize); - if( lpmii->cbSize != sizeof( mii)) { - mii.cbSize = sizeof( mii); - mii.hbmpItem = NULL; - } + if (!MENU_NormalizeMenuItemInfoStruct( lpmii, &mii )) return FALSE; item = MENU_InsertItem(hMenu, uItem, bypos ? MF_BYPOSITION : 0 ); return SetMenuItemInfo_common(item, &mii, TRUE); Modified: branches/arwinss/reactos/dll/win32/user32/message.c URL:
http://svn.reactos.org/svn/reactos/branches/arwinss/reactos/dll/win32/user3…
============================================================================== --- branches/arwinss/reactos/dll/win32/user32/message.c [iso-8859-1] (original) +++ branches/arwinss/reactos/dll/win32/user32/message.c [iso-8859-1] Fri Sep 25 20:24:36 2009 @@ -3016,12 +3016,23 @@ if (msg->message < WM_KEYFIRST || msg->message > WM_KEYLAST) return FALSE; if (msg->message != WM_KEYDOWN && msg->message != WM_SYSKEYDOWN) return TRUE; - TRACE_(key)("Translating key %s (%04lx), scancode %02x\n", - SPY_GetVKeyName(msg->wParam), msg->wParam, LOBYTE(HIWORD(msg->lParam))); + TRACE_(key)("Translating key %s (%04lx), scancode %04x\n", + SPY_GetVKeyName(msg->wParam), msg->wParam, HIWORD(msg->lParam)); + + switch (msg->wParam) + { + case VK_PACKET: + message = (msg->message == WM_KEYDOWN) ? WM_CHAR : WM_SYSCHAR; + TRACE_(key)("PostMessageW(%p,%s,%04x,%08x)\n", + msg->hwnd, SPY_GetMsgName(message, msg->hwnd), HIWORD(msg->lParam), LOWORD(msg->lParam)); + PostMessageW( msg->hwnd, message, HIWORD(msg->lParam), LOWORD(msg->lParam)); + return TRUE; #if 0 - if ( msg->wParam == VK_PROCESSKEY ) + case VK_PROCESSKEY: return ImmTranslateMessage(msg->hwnd, msg->message, msg->wParam, msg->lParam); #endif + } + GetKeyboardState( state ); /* FIXME : should handle ToUnicode yielding 2 */ switch (ToUnicode(msg->wParam, HIWORD(msg->lParam), state, wp, 2, 0)) Modified: branches/arwinss/reactos/dll/win32/user32/resources/user32.rc URL:
http://svn.reactos.org/svn/reactos/branches/arwinss/reactos/dll/win32/user3…
============================================================================== --- branches/arwinss/reactos/dll/win32/user32/resources/user32.rc [iso-8859-1] (original) +++ branches/arwinss/reactos/dll/win32/user32/resources/user32.rc [iso-8859-1] Fri Sep 25 20:24:36 2009 @@ -53,13 +53,13 @@ #include "resources/user32_Da.rc" #include "resources/user32_De.rc" #include "resources/user32_En.rc" -#include "resources/user32_Eo.rc" -#include "resources/user32_Es.rc" -#include "resources/user32_Fi.rc" +//#include "resources/user32_Eo.rc" +//#include "resources/user32_Es.rc" +//#include "resources/user32_Fi.rc" #include "resources/user32_Fr.rc" -#include "resources/user32_Hu.rc" -#include "resources/user32_It.rc" -#include "resources/user32_Ko.rc" +//#include "resources/user32_Hu.rc" +//#include "resources/user32_It.rc" +//#include "resources/user32_Ko.rc" #include "resources/user32_Lt.rc" #include "resources/user32_Nl.rc" //#include "resources/user32_No.rc" Modified: branches/arwinss/reactos/dll/win32/user32/resources/user32_De.rc URL:
http://svn.reactos.org/svn/reactos/branches/arwinss/reactos/dll/win32/user3…
============================================================================== --- branches/arwinss/reactos/dll/win32/user32/resources/user32_De.rc [iso-8859-1] (original) +++ branches/arwinss/reactos/dll/win32/user32/resources/user32_De.rc [iso-8859-1] Fri Sep 25 20:24:36 2009 @@ -19,31 +19,33 @@ #include "resources.h" +#pragma code_page(65001) + LANGUAGE LANG_GERMAN, SUBLANG_NEUTRAL SYSMENU MENU LOADONCALL MOVEABLE DISCARDABLE { MENUITEM "&Wiederherstellen", 61728 MENUITEM "&Verschieben", 61456 - MENUITEM "&Größe", 61440 + MENUITEM "&GröÃe", 61440 MENUITEM "Mi&nimieren", 61472 MENUITEM "Ma&ximieren", 61488 MENUITEM SEPARATOR - MENUITEM "&Schließen\tAlt-F4", 61536 + MENUITEM "&SchlieÃen\tAlt-F4", 61536 MENUITEM SEPARATOR - MENUITEM "&Über Wine...", 61761 + MENUITEM "&Ãber Wine...", 61761 } EDITMENU MENU LOADONCALL MOVEABLE DISCARDABLE { POPUP "" BEGIN - MENUITEM "&Rückgängig", EM_UNDO + MENUITEM "&Rückgängig", EM_UNDO MENUITEM SEPARATOR MENUITEM "&Ausschneiden", WM_CUT MENUITEM "&Kopieren", WM_COPY - MENUITEM "&Einfügen", WM_PASTE - MENUITEM "&Löschen", WM_CLEAR + MENUITEM "&Einfügen", WM_PASTE + MENUITEM "&Löschen", WM_CLEAR MENUITEM SEPARATOR MENUITEM "&Alles markieren", EM_SETSEL END @@ -54,21 +56,21 @@ BEGIN ICON "", 1088, 8, 20, 16, 16, WS_CHILD | WS_VISIBLE LTEXT "", 100, 32, 4, 176, 48, WS_CHILD | WS_VISIBLE | WS_GROUP | SS_NOPREFIX - PUSHBUTTON "&OK", 1, 16, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP - PUSHBUTTON "&Abbrechen", 2, 64, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP - PUSHBUTTON "Abbr&uch", 3, 112, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP - PUSHBUTTON "&Wiederholen", 4, 160, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP - PUSHBUTTON "&Ignorieren", 5, 208, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP - PUSHBUTTON "&Ja", 6, 256, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP - PUSHBUTTON "&Nein", 7, 304, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP - PUSHBUTTON "&Try Again", 10, 352, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP - PUSHBUTTON "&Continue", 11, 400, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP - PUSHBUTTON "Help", 9, 448, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP + PUSHBUTTON "&OK", 1, 16, 56, 60, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP + PUSHBUTTON "&Abbrechen", 2, 84, 56, 60, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP + PUSHBUTTON "Abbr&uch", 3, 152, 56, 60, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP + PUSHBUTTON "&Wiederholen", 4, 220, 56, 60, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP + PUSHBUTTON "&Ignorieren", 5, 288, 56, 60, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP + PUSHBUTTON "&Ja", 6, 356, 56, 60, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP + PUSHBUTTON "&Nein", 7, 424, 56, 60, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP + PUSHBUTTON "&Erneut versuchen", 10, 492, 56, 60, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP + PUSHBUTTON "&Fortsetzen", 11, 560, 56, 60, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP + PUSHBUTTON "Hilfe", 9, 628, 56, 60, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP END MDI_MOREWINDOWS DIALOG FIXED IMPURE 20, 20, 232, 122 STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "Fenster auswählen" +CAPTION "Fenster auswählen" FONT 8, "MS Shell Dlg" BEGIN LISTBOX MDI_IDC_LISTBOX, 5, 7, 222, 90, WS_VSCROLL | WS_HSCROLL /* defined in mdi.h */ Modified: branches/arwinss/reactos/dll/win32/user32/resources/user32_Fr.rc URL:
http://svn.reactos.org/svn/reactos/branches/arwinss/reactos/dll/win32/user3…
============================================================================== --- branches/arwinss/reactos/dll/win32/user32/resources/user32_Fr.rc [iso-8859-1] (original) +++ branches/arwinss/reactos/dll/win32/user32/resources/user32_Fr.rc [iso-8859-1] Fri Sep 25 20:24:36 2009 @@ -1,5 +1,5 @@ /* - * User + * User32 * French language support * * Copyright 1995 Alexandre Julliard @@ -21,19 +21,22 @@ #include "resources.h" +/* UTF-8 */ +#pragma code_page(65001) + LANGUAGE LANG_FRENCH, SUBLANG_NEUTRAL SYSMENU MENU LOADONCALL MOVEABLE DISCARDABLE { MENUITEM "&Restauration", 61728 - MENUITEM "&Déplacement", 61456 + MENUITEM "&Déplacement", 61456 MENUITEM "Di&mension", 61440 - MENUITEM "Réduct&ion", 61472 + MENUITEM "Réduct&ion", 61472 MENUITEM "&Agrandissement", 61488 MENUITEM SEPARATOR MENUITEM "&Fermeture\tAlt-F4", 61536 MENUITEM SEPARATOR - MENUITEM "À propos de &Wine...", 61761 + MENUITEM "à propos de &Wine...", 61761 } EDITMENU MENU LOADONCALL MOVEABLE DISCARDABLE @@ -42,12 +45,12 @@ BEGIN MENUITEM "&Annuler", EM_UNDO MENUITEM SEPARATOR - MENUITEM "Coupe&r", WM_CUT - MENUITEM "&Copier", WM_COPY + MENUITEM "&Couper", WM_CUT + MENUITEM "Co&pier", WM_COPY MENUITEM "C&oller", WM_PASTE MENUITEM "E&ffacer", WM_CLEAR MENUITEM SEPARATOR - MENUITEM "Tout &sélectionner", EM_SETSEL + MENUITEM "&Tout sélectionner", EM_SETSEL END } @@ -58,19 +61,19 @@ LTEXT "", 100, 32, 4, 176, 48, WS_CHILD | WS_VISIBLE | WS_GROUP | SS_NOPREFIX PUSHBUTTON "&Ok", 1, 16, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP PUSHBUTTON "&Annuler", 2, 64, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP - PUSHBUTTON "&Annuler", 3, 112, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP - PUSHBUTTON "&Répéter", 4, 160, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP + PUSHBUTTON "A&bandonner", 3, 112, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP + PUSHBUTTON "Ré&péter", 4, 160, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP PUSHBUTTON "&Ignorer", 5, 208, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP PUSHBUTTON "&Oui", 6, 256, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP PUSHBUTTON "&Non", 7, 304, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP - PUSHBUTTON "&Try Again", 10, 352, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP - PUSHBUTTON "&Continue", 11, 400, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP - PUSHBUTTON "Help", 9, 448, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP + PUSHBUTTON "&Réessayer", 10, 352, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP + PUSHBUTTON "&Continuer", 11, 400, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP + PUSHBUTTON "Aide", 9, 448, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP END MDI_MOREWINDOWS DIALOG FIXED IMPURE 20, 20, 232, 122 STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "Sélection de fenêtre" +CAPTION "Sélection de fenêtre" FONT 8, "MS Shell Dlg" BEGIN LISTBOX MDI_IDC_LISTBOX, 5, 7, 222, 90, WS_VSCROLL | WS_HSCROLL /* defined in mdi.h */ @@ -82,5 +85,5 @@ STRINGTABLE DISCARDABLE { IDS_ERROR "Erreur" - IDS_MDI_MOREWINDOWS "&Plus de fenêtres..." + IDS_MDI_MOREWINDOWS "&Plus de fenêtres..." } Modified: branches/arwinss/reactos/dll/win32/user32/resources/user32_Pt.rc URL:
http://svn.reactos.org/svn/reactos/branches/arwinss/reactos/dll/win32/user3…
============================================================================== --- branches/arwinss/reactos/dll/win32/user32/resources/user32_Pt.rc [iso-8859-1] (original) +++ branches/arwinss/reactos/dll/win32/user32/resources/user32_Pt.rc [iso-8859-1] Fri Sep 25 20:24:36 2009 @@ -1,6 +1,7 @@ /* * Copyright 1997 Ricardo R. Massaro - * Copyright 2006 Américo José Melo + * Copyright 2006 Américo José Melo + * Copyright 2009 Ricardo Filipe * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -18,6 +19,8 @@ */ #include "resources.h" + +#pragma code_page(65001) LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE_BRAZILIAN @@ -85,23 +88,23 @@ } -LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE_BRAZILIAN +LANGUAGE LANG_PORTUGUESE, SUBLANG_NEUTRAL MSGBOX DIALOG 100, 80, 216, 168 STYLE DS_MODALFRAME | DS_NOIDLEMSG | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU BEGIN ICON "", 1088, 8, 20, 16, 16, WS_CHILD | WS_VISIBLE LTEXT "", 100, 32, 4, 176, 48, WS_CHILD | WS_VISIBLE | WS_GROUP | SS_NOPREFIX - PUSHBUTTON "&Ok", 1, 16, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP + PUSHBUTTON "&OK", 1, 16, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP PUSHBUTTON "&Cancelar", 2, 64, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP PUSHBUTTON "&Abortar", 3, 112, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP PUSHBUTTON "&Repetir", 4, 160, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP PUSHBUTTON "&Ignorar", 5, 208, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP PUSHBUTTON "&Sim", 6, 256, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP - PUSHBUTTON "&Não", 7, 304, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP - PUSHBUTTON "&Try Again", 10, 352, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP - PUSHBUTTON "&Continue", 11, 400, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP - PUSHBUTTON "Help", 9, 448, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP + PUSHBUTTON "&Não", 7, 304, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP + PUSHBUTTON "&Tente Novamente", 10, 352, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP + PUSHBUTTON "&Continuar", 11, 400, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP + PUSHBUTTON "Ajuda", 9, 448, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP END @@ -130,7 +133,7 @@ END -LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE_BRAZILIAN +LANGUAGE LANG_PORTUGUESE, SUBLANG_NEUTRAL STRINGTABLE DISCARDABLE { Modified: branches/arwinss/reactos/dll/win32/user32/resources/user32_Ru.rc URL:
http://svn.reactos.org/svn/reactos/branches/arwinss/reactos/dll/win32/user3…
============================================================================== --- branches/arwinss/reactos/dll/win32/user32/resources/user32_Ru.rc [iso-8859-1] (original) +++ branches/arwinss/reactos/dll/win32/user32/resources/user32_Ru.rc [iso-8859-1] Fri Sep 25 20:24:36 2009 @@ -18,33 +18,36 @@ #include "resources.h" +/* UTF-8 */ +#pragma code_page(65001) + LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT SYSMENU MENU LOADONCALL MOVEABLE DISCARDABLE { - MENUITEM "&Âîññòàíîâèòü", 61728 - MENUITEM "&Ïåðåìåñòèòü", 61456 - MENUITEM "Ðàç&ìåð", 61440 - MENUITEM "&Ñâåðíóòü", 61472 - MENUITEM "&Ðàçâåðíóòü", 61488 + MENUITEM "&ÐоÑÑÑановиÑÑ", 61728 + MENUITEM "&ÐеÑемеÑÑиÑÑ", 61456 + MENUITEM "Раз&меÑ", 61440 + MENUITEM "&СвеÑнÑÑÑ", 61472 + MENUITEM "&РазвеÑнÑÑÑ", 61488 MENUITEM SEPARATOR - MENUITEM "&Çàêðûòü\tAlt-F4", 61536 + MENUITEM "&ÐакÑÑÑÑ\tAlt-F4", 61536 MENUITEM SEPARATOR - MENUITEM "&Î ïðîåêòå Wine...", 61761 + MENUITEM "&РпÑоекÑе Wine...", 61761 } EDITMENU MENU LOADONCALL MOVEABLE DISCARDABLE { POPUP "" BEGIN - MENUITEM "&Îòìåíèòü", EM_UNDO + MENUITEM "&ÐÑмениÑÑ", EM_UNDO MENUITEM SEPARATOR - MENUITEM "&Âûðåçàòü", WM_CUT - MENUITEM "&Êîïèðîâàòü", WM_COPY - MENUITEM "Âñò&àâèòü", WM_PASTE - MENUITEM "&Óäàëèòü", WM_CLEAR + MENUITEM "&ÐÑÑезаÑÑ", WM_CUT + MENUITEM "&ÐопиÑоваÑÑ", WM_COPY + MENUITEM "ÐÑÑ&авиÑÑ", WM_PASTE + MENUITEM "&УдалиÑÑ", WM_CLEAR MENUITEM SEPARATOR - MENUITEM "Âûäåëèòü â&ñå", EM_SETSEL + MENUITEM "ÐÑделиÑÑ Ð²&Ñе", EM_SETSEL END } @@ -54,15 +57,15 @@ ICON "", 1088, 8, 20, 16, 16, WS_CHILD | WS_VISIBLE LTEXT "", 100, 32, 4, 176, 48, WS_CHILD | WS_VISIBLE | WS_GROUP | SS_NOPREFIX PUSHBUTTON "&OK", 1, 16, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP - PUSHBUTTON "Î&òìåíà", 2, 64, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP - PUSHBUTTON "&Îòìåíèòü", 3, 112, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP - PUSHBUTTON "Ïî&âòîð", 4, 160, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP - PUSHBUTTON "&Ïðîïóñòèòü", 5, 208, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP - PUSHBUTTON "&Äà", 6, 256, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP - PUSHBUTTON "&Íåò", 7, 304, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP - PUSHBUTTON "Ïî&âòîðèòü", 10, 352, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP - PUSHBUTTON "Ï&ðîëîæèòü", 11, 400, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP - PUSHBUTTON "Ïîìîùü", 9, 448, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP + PUSHBUTTON "Ð&Ñмена", 2, 64, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP + PUSHBUTTON "&ÐÑмениÑÑ", 3, 112, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP + PUSHBUTTON "Ðо&вÑоÑ", 4, 160, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP + PUSHBUTTON "&ÐÑопÑÑÑиÑÑ", 5, 208, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP + PUSHBUTTON "&Ðа", 6, 256, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP + PUSHBUTTON "&ÐеÑ", 7, 304, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP + PUSHBUTTON "Ðо&вÑоÑиÑÑ", 10, 352, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP + PUSHBUTTON "Ð&ÑоложиÑÑ", 11, 400, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP + PUSHBUTTON "ÐомоÑÑ", 9, 448, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP END MDI_MOREWINDOWS DIALOG FIXED IMPURE 20, 20, 232, 122 @@ -72,12 +75,12 @@ BEGIN LISTBOX MDI_IDC_LISTBOX, 5, 7, 222, 90, WS_VSCROLL | WS_HSCROLL /* defined in mdi.h */ DEFPUSHBUTTON "OK", IDOK, 75, 100, 35, 14 - PUSHBUTTON "Îòìåíèòü", IDCANCEL, 120, 100, 35, 14 + PUSHBUTTON "ÐÑмениÑÑ", IDCANCEL, 120, 100, 35, 14 END STRINGTABLE DISCARDABLE { - IDS_ERROR "ÎØÈÁÊÀ" - IDS_MDI_MOREWINDOWS "&Åù¸ îêíà..." + IDS_ERROR "ÐШÐÐÐÐ" + IDS_MDI_MOREWINDOWS "&ÐÑÑ Ð¾ÐºÐ½Ð°..." } Modified: branches/arwinss/reactos/dll/win32/user32/spy.c URL:
http://svn.reactos.org/svn/reactos/branches/arwinss/reactos/dll/win32/user3…
============================================================================== --- branches/arwinss/reactos/dll/win32/user32/spy.c [iso-8859-1] (original) +++ branches/arwinss/reactos/dll/win32/user32/spy.c [iso-8859-1] Fri Sep 25 20:24:36 2009 @@ -731,7 +731,7 @@ }; -#define SPY_MAX_LVMMSGNUM 140 +#define SPY_MAX_LVMMSGNUM 182 static const char * const LVMMessageTypeNames[SPY_MAX_LVMMSGNUM + 1] = { "LVM_GETBKCOLOR", /* 1000 */ @@ -872,9 +872,51 @@ NULL, NULL, NULL, - NULL, "LVM_SETBKIMAGEW", - "LVM_GETBKIMAGEW" /* 0x108B */ + "LVM_GETBKIMAGEW", /* 0x108B */ + "LVM_SETSELECTEDCOLUMN", + "LVM_SETTILEWIDTH", + "LVM_SETVIEW", + "LVM_GETVIEW", + NULL, + "LVM_INSERTGROUP", + NULL, + "LVM_SETGROUPINFO", + NULL, + "LVM_GETGROUPINFO", + "LVM_REMOVEGROUP", + "LVM_MOVEGROUP", + NULL, + NULL, + "LVM_MOVEITEMTOGROUP", + "LVM_SETGROUPMETRICS", + "LVM_GETGROUPMETRICS", + "LVM_ENABLEGROUPVIEW", + "LVM_SORTGROUPS", + "LVM_INSERTGROUPSORTED", + "LVM_REMOVEALLGROUPS", + "LVM_HASGROUP", + "LVM_SETTILEVIEWINFO", + "LVM_GETTILEVIEWINFO", + "LVM_SETTILEINFO", + "LVM_GETTILEINFO", + "LVM_SETINSERTMARK", + "LVM_GETINSERTMARK", + "LVM_INSERTMARKHITTEST", + "LVM_GETINSERTMARKRECT", + "LVM_SETINSERTMARKCOLOR", + "LVM_GETINSERTMARKCOLOR", + NULL, + "LVM_SETINFOTIP", + "LVM_GETSELECTEDCOLUMN", + "LVM_ISGROUPVIEWENABLED", + "LVM_GETOUTLINECOLOR", + "LVM_SETOUTLINECOLOR", + NULL, + "LVM_CANCELEDITLABEL", + "LVM_MAPINDEXTOID", + "LVM_MAPIDTOINDEX", + "LVM_ISITEMVISIBLE" }; @@ -1328,7 +1370,7 @@ "VK_ICO_00", /* 0xE4 */ "VK_PROCESSKEY", /* 0xE5 */ NULL, /* 0xE6 */ - NULL, /* 0xE7 */ + "VK_PACKET", /* 0xE7 */ NULL, /* 0xE8 */ NULL, /* 0xE9 */ NULL, /* 0xEA */ Modified: branches/arwinss/reactos/dll/win32/user32/win.c URL:
http://svn.reactos.org/svn/reactos/branches/arwinss/reactos/dll/win32/user3…
============================================================================== --- branches/arwinss/reactos/dll/win32/user32/win.c [iso-8859-1] (original) +++ branches/arwinss/reactos/dll/win32/user32/win.c [iso-8859-1] Fri Sep 25 20:24:36 2009 @@ -1780,6 +1780,7 @@ static const WCHAR command_line[] = {'\\','e','x','p','l','o','r','e','r','.','e','x','e',' ','/','d','e','s','k','t','o','p',0}; STARTUPINFOW si; PROCESS_INFORMATION pi; + WCHAR systemdir[MAX_PATH]; WCHAR cmdline[MAX_PATH + sizeof(command_line)/sizeof(WCHAR)]; memset( &si, 0, sizeof(si) ); @@ -1789,10 +1790,11 @@ si.hStdOutput = 0; si.hStdError = GetStdHandle( STD_ERROR_HANDLE ); - GetSystemDirectoryW( cmdline, MAX_PATH ); + GetSystemDirectoryW( systemdir, MAX_PATH ); + lstrcpyW( cmdline, systemdir ); lstrcatW( cmdline, command_line ); if (CreateProcessW( NULL, cmdline, NULL, NULL, FALSE, DETACHED_PROCESS, - NULL, NULL, &si, &pi )) + NULL, systemdir, &si, &pi )) { TRACE( "started explorer pid %04x tid %04x\n", pi.dwProcessId, pi.dwThreadId ); WaitForInputIdle( pi.hProcess, 10000 ); Modified: branches/arwinss/reactos/dll/win32/user32/winpos.c URL:
http://svn.reactos.org/svn/reactos/branches/arwinss/reactos/dll/win32/user3…
============================================================================== --- branches/arwinss/reactos/dll/win32/user32/winpos.c [iso-8859-1] (original) +++ branches/arwinss/reactos/dll/win32/user32/winpos.c [iso-8859-1] Fri Sep 25 20:24:36 2009 @@ -86,9 +86,10 @@ /*********************************************************************** * SwitchToThisWindow (USER32.@) */ -void WINAPI SwitchToThisWindow( HWND hwnd, BOOL restore ) -{ - ShowWindow( hwnd, restore ? SW_RESTORE : SW_SHOWMINIMIZED ); +void WINAPI SwitchToThisWindow( HWND hwnd, BOOL alt_tab ) +{ + if (IsIconic( hwnd )) ShowWindow( hwnd, SW_RESTORE ); + else BringWindowToTop( hwnd ); } @@ -1078,14 +1079,18 @@ /* should happen only in CreateWindowEx() */ int wParam = SIZE_RESTORED; RECT client = wndPtr->rectClient; + LPARAM lparam = MAKELONG( client.right - client.left, client.bottom - client.top ); wndPtr->flags &= ~WIN_NEED_SIZE; if (wndPtr->dwStyle & WS_MAXIMIZE) wParam = SIZE_MAXIMIZED; - else if (wndPtr->dwStyle & WS_MINIMIZE) wParam = SIZE_MINIMIZED; + else if (wndPtr->dwStyle & WS_MINIMIZE) + { + wParam = SIZE_MINIMIZED; + lparam = 0; + } WIN_ReleasePtr( wndPtr ); - SendMessageW( hwnd, WM_SIZE, wParam, - MAKELONG( client.right - client.left, client.bottom - client.top )); + SendMessageW( hwnd, WM_SIZE, wParam, lparam ); SendMessageW( hwnd, WM_MOVE, 0, MAKELONG( client.left, client.top )); } else WIN_ReleasePtr( wndPtr ); Modified: branches/arwinss/reactos/include/reactos/wine/server_protocol.h URL:
http://svn.reactos.org/svn/reactos/branches/arwinss/reactos/include/reactos…
============================================================================== --- branches/arwinss/reactos/include/reactos/wine/server_protocol.h [iso-8859-1] (original) +++ branches/arwinss/reactos/include/reactos/wine/server_protocol.h [iso-8859-1] Fri Sep 25 20:24:36 2009 @@ -140,7 +140,7 @@ { struct { unsigned int eip, ebp, esp, eflags, cs, ss; } i386_regs; struct { unsigned __int64 rip, rbp, rsp; - unsigned int cs, ss, flags, mxcsr; } x86_64_regs; + unsigned int cs, ss, flags; } x86_64_regs; struct { unsigned __int64 fir; unsigned int psr; } alpha_regs; struct { unsigned int iar, msr, ctr, lr, dar, dsisr, trap; } powerpc_regs; @@ -206,6 +206,42 @@ typedef __int64 timeout_t; #define TIMEOUT_INFINITE (((timeout_t)0x7fffffff) << 32 | 0xffffffff) + + +typedef struct +{ + unsigned int debug_flags; + unsigned int console_flags; + obj_handle_t console; + obj_handle_t hstdin; + obj_handle_t hstdout; + obj_handle_t hstderr; + unsigned int x; + unsigned int y; + unsigned int xsize; + unsigned int ysize; + unsigned int xchars; + unsigned int ychars; + unsigned int attribute; + unsigned int flags; + unsigned int show; + data_size_t curdir_len; + data_size_t dllpath_len; + data_size_t imagepath_len; + data_size_t cmdline_len; + data_size_t title_len; + data_size_t desktop_len; + data_size_t shellinfo_len; + data_size_t runtime_len; + + + + + + + + +} startup_info_t; typedef struct @@ -532,14 +568,12 @@ unsigned int create_flags; int socket_fd; obj_handle_t exe_file; - obj_handle_t hstdin; - obj_handle_t hstdout; - obj_handle_t hstderr; unsigned int process_access; unsigned int process_attr; unsigned int thread_access; unsigned int thread_attr; - /* VARARG(info,startup_info); */ + data_size_t info_size; + /* VARARG(info,startup_info,info_size); */ /* VARARG(env,unicode_str); */ }; struct new_process_reply @@ -594,10 +628,8 @@ { struct reply_header __header; obj_handle_t exe_file; - obj_handle_t hstdin; - obj_handle_t hstdout; - obj_handle_t hstderr; - /* VARARG(info,startup_info); */ + data_size_t info_size; + /* VARARG(info,startup_info,info_size); */ /* VARARG(env,unicode_str); */ }; @@ -690,6 +722,8 @@ timeout_t end_time; int exit_code; int priority; + cpu_type_t cpu; + char __pad_60[4]; }; @@ -2854,6 +2888,9 @@ { struct request_header __header; obj_handle_t handle; + client_ptr_t iosb; + int only_thread; + char __pad_28[4]; }; struct cancel_async_reply { @@ -5307,6 +5344,6 @@ struct set_window_layered_info_reply set_window_layered_info_reply; }; -#define SERVER_PROTOCOL_VERSION 386 +#define SERVER_PROTOCOL_VERSION 390 #endif /* __WINE_WINE_SERVER_PROTOCOL_H */ Modified: branches/arwinss/reactos/subsystems/win32/win32k/include/request.h URL:
http://svn.reactos.org/svn/reactos/branches/arwinss/reactos/subsystems/win3…
============================================================================== --- branches/arwinss/reactos/subsystems/win32/win32k/include/request.h [iso-8859-1] (original) +++ branches/arwinss/reactos/subsystems/win32/win32k/include/request.h [iso-8859-1] Fri Sep 25 20:24:36 2009 @@ -589,13 +589,11 @@ C_ASSERT( FIELD_OFFSET(struct new_process_request, create_flags) == 16 ); C_ASSERT( FIELD_OFFSET(struct new_process_request, socket_fd) == 20 ); C_ASSERT( FIELD_OFFSET(struct new_process_request, exe_file) == 24 ); -C_ASSERT( FIELD_OFFSET(struct new_process_request, hstdin) == 28 ); -C_ASSERT( FIELD_OFFSET(struct new_process_request, hstdout) == 32 ); -C_ASSERT( FIELD_OFFSET(struct new_process_request, hstderr) == 36 ); -C_ASSERT( FIELD_OFFSET(struct new_process_request, process_access) == 40 ); -C_ASSERT( FIELD_OFFSET(struct new_process_request, process_attr) == 44 ); -C_ASSERT( FIELD_OFFSET(struct new_process_request, thread_access) == 48 ); -C_ASSERT( FIELD_OFFSET(struct new_process_request, thread_attr) == 52 ); +C_ASSERT( FIELD_OFFSET(struct new_process_request, process_access) == 28 ); +C_ASSERT( FIELD_OFFSET(struct new_process_request, process_attr) == 32 ); +C_ASSERT( FIELD_OFFSET(struct new_process_request, thread_access) == 36 ); +C_ASSERT( FIELD_OFFSET(struct new_process_request, thread_attr) == 40 ); +C_ASSERT( FIELD_OFFSET(struct new_process_request, info_size) == 44 ); C_ASSERT( FIELD_OFFSET(struct new_process_reply, info) == 8 ); C_ASSERT( FIELD_OFFSET(struct new_process_reply, pid) == 12 ); C_ASSERT( FIELD_OFFSET(struct new_process_reply, phandle) == 16 ); @@ -614,10 +612,8 @@ C_ASSERT( FIELD_OFFSET(struct new_thread_reply, handle) == 12 ); C_ASSERT( sizeof(struct new_thread_reply) == 16 ); C_ASSERT( FIELD_OFFSET(struct get_startup_info_reply, exe_file) == 8 ); -C_ASSERT( FIELD_OFFSET(struct get_startup_info_reply, hstdin) == 12 ); -C_ASSERT( FIELD_OFFSET(struct get_startup_info_reply, hstdout) == 16 ); -C_ASSERT( FIELD_OFFSET(struct get_startup_info_reply, hstderr) == 20 ); -C_ASSERT( sizeof(struct get_startup_info_reply) == 24 ); +C_ASSERT( FIELD_OFFSET(struct get_startup_info_reply, info_size) == 12 ); +C_ASSERT( sizeof(struct get_startup_info_reply) == 16 ); C_ASSERT( FIELD_OFFSET(struct init_process_done_request, gui) == 12 ); C_ASSERT( FIELD_OFFSET(struct init_process_done_request, module) == 16 ); C_ASSERT( FIELD_OFFSET(struct init_process_done_request, ldt_copy) == 24 ); @@ -656,7 +652,8 @@ C_ASSERT( FIELD_OFFSET(struct get_process_info_reply, end_time) == 40 ); C_ASSERT( FIELD_OFFSET(struct get_process_info_reply, exit_code) == 48 ); C_ASSERT( FIELD_OFFSET(struct get_process_info_reply, priority) == 52 ); -C_ASSERT( sizeof(struct get_process_info_reply) == 56 ); +C_ASSERT( FIELD_OFFSET(struct get_process_info_reply, cpu) == 56 ); +C_ASSERT( sizeof(struct get_process_info_reply) == 64 ); C_ASSERT( FIELD_OFFSET(struct set_process_info_request, handle) == 12 ); C_ASSERT( FIELD_OFFSET(struct set_process_info_request, mask) == 16 ); C_ASSERT( FIELD_OFFSET(struct set_process_info_request, priority) == 20 ); @@ -1312,7 +1309,9 @@ C_ASSERT( FIELD_OFFSET(struct register_async_request, count) == 56 ); C_ASSERT( sizeof(struct register_async_request) == 64 ); C_ASSERT( FIELD_OFFSET(struct cancel_async_request, handle) == 12 ); -C_ASSERT( sizeof(struct cancel_async_request) == 16 ); +C_ASSERT( FIELD_OFFSET(struct cancel_async_request, iosb) == 16 ); +C_ASSERT( FIELD_OFFSET(struct cancel_async_request, only_thread) == 24 ); +C_ASSERT( sizeof(struct cancel_async_request) == 32 ); C_ASSERT( FIELD_OFFSET(struct ioctl_request, code) == 12 ); C_ASSERT( FIELD_OFFSET(struct ioctl_request, async) == 16 ); C_ASSERT( FIELD_OFFSET(struct ioctl_request, blocking) == 56 ); Propchange: branches/arwinss/reactos/subsystems/win32/win32k/include/request.h ------------------------------------------------------------------------------ --- svn:mergeinfo (added) +++ svn:mergeinfo Fri Sep 25 20:24:36 2009 @@ -1,0 +1,3 @@ +/branches/ros-amd64-bringup/reactos/subsystems/win32/win32k/include/request.h:35746,35789,36614,36930,38148,38151,38265,38268,39333,39345,40991,41000,41027-41028,41050,41052,41082-41086,41549,43080 +/trunk/reactos/subsystems/win32/win32k/include/request.h:42000-43126 +/vendor/wine/server/current/request.h:43136
15 years, 3 months
1
0
0
0
[janderwald] 43147: [WDMAUD.DRV] - Forward mixer control requests to wdmaud driver [MMEBUDDY] - Handle MXDM_GETCONTROLDETAILS, MXDM_SETCONTROLDETAILS, MXDM_GETLINECONTROLS, MXDM_GETLINEINFO [WDMAUD_KERNEL] - Add stubs for mixer api
by janderwald@svn.reactos.org
Author: janderwald Date: Fri Sep 25 20:06:13 2009 New Revision: 43147 URL:
http://svn.reactos.org/svn/reactos?rev=43147&view=rev
Log: [WDMAUD.DRV] - Forward mixer control requests to wdmaud driver [MMEBUDDY] - Handle MXDM_GETCONTROLDETAILS, MXDM_SETCONTROLDETAILS, MXDM_GETLINECONTROLS, MXDM_GETLINEINFO [WDMAUD_KERNEL] - Add stubs for mixer api Modified: trunk/reactos/dll/win32/wdmaud.drv/wdmaud.c trunk/reactos/drivers/wdm/audio/legacy/wdmaud/control.c trunk/reactos/drivers/wdm/audio/legacy/wdmaud/interface.h trunk/reactos/drivers/wdm/audio/legacy/wdmaud/mixer.c trunk/reactos/include/reactos/libs/sound/mmebuddy.h trunk/reactos/lib/drivers/sound/mmebuddy/mixer/mxdMessage.c Modified: trunk/reactos/dll/win32/wdmaud.drv/wdmaud.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/wdmaud.drv/wdmau…
============================================================================== --- trunk/reactos/dll/win32/wdmaud.drv/wdmaud.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/wdmaud.drv/wdmaud.c [iso-8859-1] Fri Sep 25 20:06:13 2009 @@ -281,24 +281,7 @@ IN DWORD WaveFormatSize) { MMRESULT Result; - PSOUND_DEVICE SoundDevice; - PVOID Identifier; WDMAUD_DEVICE_INFO DeviceInfo; - MMDEVICE_TYPE DeviceType; - - Result = GetSoundDeviceFromInstance(Instance, &SoundDevice); - - if ( ! MMSUCCESS(Result) ) - { - return TranslateInternalMmResult(Result); - } - - Result = GetSoundDeviceIdentifier(SoundDevice, &Identifier); - - if ( ! MMSUCCESS(Result) ) - { - return TranslateInternalMmResult(Result); - } if (Instance->Handle != KernelHandle) { @@ -307,11 +290,8 @@ } - Result = GetSoundDeviceType(SoundDevice, &DeviceType); - SND_ASSERT( Result == MMSYSERR_NOERROR ); - ZeroMemory(&DeviceInfo, sizeof(WDMAUD_DEVICE_INFO)); - DeviceInfo.DeviceType = DeviceType; + DeviceInfo.DeviceType = MIXER_DEVICE_TYPE; DeviceInfo.DeviceIndex = DeviceId; Result = SyncOverlappedDeviceIoControl(KernelHandle, @@ -539,6 +519,82 @@ return MMSYSERR_NOERROR; } +MMRESULT +QueryMixerInfo( + IN struct _SOUND_DEVICE_INSTANCE* SoundDeviceInstance, + IN UINT uMsg, + IN LPVOID Parameter, + IN DWORD Flags) +{ + MMRESULT Result; + WDMAUD_DEVICE_INFO DeviceInfo; + HANDLE Handle; + DWORD IoControlCode; + LPMIXERLINEW MixLine; + LPMIXERLINECONTROLSW MixControls; + LPMIXERCONTROLDETAILS MixDetails; + + SND_TRACE(L"uMsg %x Flags %x\n", uMsg, Flags); + + Result = GetSoundDeviceInstanceHandle(SoundDeviceInstance, &Handle); + SND_ASSERT( Result == MMSYSERR_NOERROR ); + + ZeroMemory(&DeviceInfo, sizeof(WDMAUD_DEVICE_INFO)); + DeviceInfo.hDevice = Handle; + DeviceInfo.DeviceType = MIXER_DEVICE_TYPE; + DeviceInfo.Flags = Flags; + + MixLine = (LPMIXERLINEW)Parameter; + MixControls = (LPMIXERLINECONTROLSW)Parameter; + MixDetails = (LPMIXERCONTROLDETAILS)Parameter; + + switch(uMsg) + { + case MXDM_GETLINEINFO: + RtlCopyMemory(&DeviceInfo.u.MixLine, MixLine, sizeof(MIXERLINEW)); + IoControlCode = IOCTL_GETLINEINFO; + break; + case MXDM_GETLINECONTROLS: + RtlCopyMemory(&DeviceInfo.u.MixControls, MixControls, sizeof(MIXERLINECONTROLSW)); + IoControlCode = IOCTL_GETLINECONTROLS; + break; + case MXDM_SETCONTROLDETAILS: + RtlCopyMemory(&DeviceInfo.u.MixDetails, MixDetails, sizeof(MIXERCONTROLDETAILS)); + IoControlCode = IOCTL_SETCONTROLDETAILS; + break; + case MXDM_GETCONTROLDETAILS: + RtlCopyMemory(&DeviceInfo.u.MixDetails, MixDetails, sizeof(MIXERCONTROLDETAILS)); + IoControlCode = IOCTL_GETCONTROLDETAILS; + break; + default: + SND_ASSERT(0); + } + + Result = SyncOverlappedDeviceIoControl(KernelHandle, + IoControlCode, + (LPVOID) &DeviceInfo, + sizeof(WDMAUD_DEVICE_INFO), + (LPVOID) &DeviceInfo, + sizeof(WDMAUD_DEVICE_INFO), + NULL); + + if ( ! MMSUCCESS(Result) ) + { + return TranslateInternalMmResult(Result); + } + + switch(uMsg) + { + case MXDM_GETLINEINFO: + { + RtlCopyMemory(MixLine, &DeviceInfo.u.MixLine, sizeof(MIXERLINEW)); + break; + } + } + + return Result; +} + MMRESULT PopulateWdmDeviceList( @@ -582,6 +638,7 @@ if (DeviceType == MIXER_DEVICE_TYPE) { FuncTable.SetWaveFormat = SetWdmMixerDeviceFormat; + FuncTable.QueryMixerInfo = QueryMixerInfo; } else { Modified: trunk/reactos/drivers/wdm/audio/legacy/wdmaud/control.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/wdm/audio/legacy/w…
============================================================================== --- trunk/reactos/drivers/wdm/audio/legacy/wdmaud/control.c [iso-8859-1] (original) +++ trunk/reactos/drivers/wdm/audio/legacy/wdmaud/control.c [iso-8859-1] Fri Sep 25 20:06:13 2009 @@ -943,6 +943,15 @@ return WdmAudIoctlClose(DeviceObject, Irp, DeviceInfo, ClientInfo); case IOCTL_GETFRAMESIZE: return WdmAudFrameSize(DeviceObject, Irp, DeviceInfo, ClientInfo); + case IOCTL_GETLINEINFO: + return WdmAudGetLineInfo(DeviceObject, Irp, DeviceInfo, ClientInfo); + case IOCTL_GETLINECONTROLS: + return WdmAudGetLineControls(DeviceObject, Irp, DeviceInfo, ClientInfo); + case IOCTL_SETCONTROLDETAILS: + return WdmAudSetControlDetails(DeviceObject, Irp, DeviceInfo, ClientInfo); + case IOCTL_GETCONTROLDETAILS: + return WdmAudGetControlDetails(DeviceObject, Irp, DeviceInfo, ClientInfo); + case IOCTL_GETPOS: case IOCTL_GETDEVID: case IOCTL_GETVOLUME: Modified: trunk/reactos/drivers/wdm/audio/legacy/wdmaud/interface.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/wdm/audio/legacy/w…
============================================================================== --- trunk/reactos/drivers/wdm/audio/legacy/wdmaud/interface.h [iso-8859-1] (original) +++ trunk/reactos/drivers/wdm/audio/legacy/wdmaud/interface.h [iso-8859-1] Fri Sep 25 20:06:13 2009 @@ -31,6 +31,7 @@ HANDLE hDevice; ULONG DeviceCount; + ULONG Flags; union { @@ -242,5 +243,74 @@ METHOD_BUFFERED, \ FILE_CREATE_TREE_CONNECTION | FILE_ANY_ACCESS) +/// IOCTL_GETLINEINFO +/// +/// Description: This IOCTL retrieves information on a mixerline +/// +/// Arguments: InputBuffer is a pointer to a WDMAUD_DEVICE_INFO structure, +/// InputBufferSize is size of WDMAUD_DEVICE_INFO structure +/// Note: The hDevice member must be set +/// Result: The result is returned in MixLine +/// ReturnCode: STATUS_SUCCESS indicates success +/// Prequsites: opened device + +#define IOCTL_GETLINEINFO \ + CTL_CODE(FILE_DEVICE_SOUND, \ + 11, \ + METHOD_BUFFERED, \ + FILE_CREATE_TREE_CONNECTION | FILE_ANY_ACCESS) + + +/// IOCTL_GETLINECONTROLS +/// +/// Description: This IOCTL retrieves controls of a mixerline +/// +/// Arguments: InputBuffer is a pointer to a WDMAUD_DEVICE_INFO structure, +/// InputBufferSize is size of WDMAUD_DEVICE_INFO structure +/// Note: The hDevice member must be set +/// Result: The result is returned in MixControls +/// ReturnCode: STATUS_SUCCESS indicates success +/// Prequsites: opened device + +#define IOCTL_GETLINECONTROLS \ + CTL_CODE(FILE_DEVICE_SOUND, \ + 12, \ + METHOD_BUFFERED, \ + FILE_CREATE_TREE_CONNECTION | FILE_ANY_ACCESS) + + +/// IOCTL_SETCONTROLDETAILS +/// +/// Description: This IOCTL sets details of a control of a mixerline +/// +/// Arguments: InputBuffer is a pointer to a WDMAUD_DEVICE_INFO structure, +/// InputBufferSize is size of WDMAUD_DEVICE_INFO structure +/// Note: The hDevice member must be set +/// ReturnCode: STATUS_SUCCESS indicates success +/// Prequsites: opened device + +#define IOCTL_SETCONTROLDETAILS \ + CTL_CODE(FILE_DEVICE_SOUND, \ + 13, \ + METHOD_BUFFERED, \ + FILE_CREATE_TREE_CONNECTION | FILE_ANY_ACCESS) + + +/// IOCTL_GETCONTROLDETAILS +/// +/// Description: This IOCTL gets details of a control of a mixerline +/// +/// Arguments: InputBuffer is a pointer to a WDMAUD_DEVICE_INFO structure, +/// InputBufferSize is size of WDMAUD_DEVICE_INFO structure +/// Note: The hDevice member must be set +/// Result: The result is returned in MixDetails +/// ReturnCode: STATUS_SUCCESS indicates success +/// Prequsites: opened device + +#define IOCTL_GETCONTROLDETAILS \ + CTL_CODE(FILE_DEVICE_SOUND, \ + 14, \ + METHOD_BUFFERED, \ + FILE_CREATE_TREE_CONNECTION | FILE_ANY_ACCESS) #endif Modified: trunk/reactos/drivers/wdm/audio/legacy/wdmaud/mixer.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/wdm/audio/legacy/w…
============================================================================== --- trunk/reactos/drivers/wdm/audio/legacy/wdmaud/mixer.c [iso-8859-1] (original) +++ trunk/reactos/drivers/wdm/audio/legacy/wdmaud/mixer.c [iso-8859-1] Fri Sep 25 20:06:13 2009 @@ -188,6 +188,29 @@ Guid++; } return Count; +} + +ULONG +GetNodeTypeIndex( + PKSMULTIPLE_ITEM MultipleItem, + LPGUID NodeType) +{ + ULONG Index; + LPGUID Guid; + + Guid = (LPGUID)(MultipleItem+1); + + /* iterate through node type array */ + for(Index = 0; Index < MultipleItem->Count; Index++) + { + if (IsEqualGUIDAligned(NodeType, Guid)) + { + /* found matching guid */ + return Index; + } + Guid++; + } + return (ULONG)-1; } ULONG @@ -314,6 +337,7 @@ + NTSTATUS WdmAudMixerCapabilities( IN PDEVICE_OBJECT DeviceObject, @@ -410,3 +434,59 @@ return SetIrpIoStatus(Irp, STATUS_SUCCESS, sizeof(WDMAUD_DEVICE_INFO)); } +NTSTATUS +NTAPI +WdmAudGetLineInfo( + IN PDEVICE_OBJECT DeviceObject, + IN PIRP Irp, + IN PWDMAUD_DEVICE_INFO DeviceInfo, + IN PWDMAUD_CLIENT ClientInfo) +{ + UNIMPLEMENTED; + //DbgBreakPoint(); + return SetIrpIoStatus(Irp, STATUS_NOT_IMPLEMENTED, 0); + +} + +NTSTATUS +NTAPI +WdmAudGetLineControls( + IN PDEVICE_OBJECT DeviceObject, + IN PIRP Irp, + IN PWDMAUD_DEVICE_INFO DeviceInfo, + IN PWDMAUD_CLIENT ClientInfo) +{ + UNIMPLEMENTED; + //DbgBreakPoint(); + return SetIrpIoStatus(Irp, STATUS_NOT_IMPLEMENTED, 0); + +} + +NTSTATUS +NTAPI +WdmAudSetControlDetails( + IN PDEVICE_OBJECT DeviceObject, + IN PIRP Irp, + IN PWDMAUD_DEVICE_INFO DeviceInfo, + IN PWDMAUD_CLIENT ClientInfo) +{ + UNIMPLEMENTED; + //DbgBreakPoint(); + return SetIrpIoStatus(Irp, STATUS_NOT_IMPLEMENTED, 0); + +} + +NTSTATUS +NTAPI +WdmAudGetControlDetails( + IN PDEVICE_OBJECT DeviceObject, + IN PIRP Irp, + IN PWDMAUD_DEVICE_INFO DeviceInfo, + IN PWDMAUD_CLIENT ClientInfo) +{ + UNIMPLEMENTED; + //DbgBreakPoint(); + return SetIrpIoStatus(Irp, STATUS_NOT_IMPLEMENTED, 0); + +} + Modified: trunk/reactos/include/reactos/libs/sound/mmebuddy.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/include/reactos/libs/sound…
============================================================================== --- trunk/reactos/include/reactos/libs/sound/mmebuddy.h [iso-8859-1] (original) +++ trunk/reactos/include/reactos/libs/sound/mmebuddy.h [iso-8859-1] Fri Sep 25 20:06:13 2009 @@ -197,6 +197,11 @@ IN PSOUND_OVERLAPPED Overlap, IN LPOVERLAPPED_COMPLETION_ROUTINE CompletionRoutine); +typedef MMRESULT (*MMMIXERQUERY_FUNC) ( + IN struct _SOUND_DEVICE_INSTANCE* SoundDeviceInstance, + IN UINT uMsg, + IN LPVOID Parameter, + IN DWORD Flags); typedef MMRESULT (*MMWAVEQUERYFORMATSUPPORT_FUNC)( @@ -248,6 +253,8 @@ MMWAVEQUERYFORMATSUPPORT_FUNC QueryWaveFormatSupport; MMWAVESETFORMAT_FUNC SetWaveFormat; + MMMIXERQUERY_FUNC QueryMixerInfo; + WAVE_COMMIT_FUNC CommitWaveBuffer; MMGETPOS_FUNC GetPos; Modified: trunk/reactos/lib/drivers/sound/mmebuddy/mixer/mxdMessage.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/lib/drivers/sound/mmebuddy…
============================================================================== --- trunk/reactos/lib/drivers/sound/mmebuddy/mixer/mxdMessage.c [iso-8859-1] (original) +++ trunk/reactos/lib/drivers/sound/mmebuddy/mixer/mxdMessage.c [iso-8859-1] Fri Sep 25 20:06:13 2009 @@ -17,6 +17,39 @@ #include <sndtypes.h> #undef NDEBUG #include <mmebuddy.h> + +MMRESULT +MmeGetLineInfo( + IN DWORD Message, + IN DWORD PrivateHandle, + IN DWORD Parameter1, + IN DWORD Parameter2) +{ + MMRESULT Result; + PSOUND_DEVICE_INSTANCE SoundDeviceInstance; + PSOUND_DEVICE SoundDevice; + PMMFUNCTION_TABLE FunctionTable; + + SND_TRACE(L"Getting mixer info %u\n", Message); + + VALIDATE_MMSYS_PARAMETER( PrivateHandle ); + SoundDeviceInstance = (PSOUND_DEVICE_INSTANCE) PrivateHandle; + + Result = GetSoundDeviceFromInstance(SoundDeviceInstance, &SoundDevice); + if ( ! MMSUCCESS(Result) ) + return TranslateInternalMmResult(Result); + + Result = GetSoundDeviceFunctionTable(SoundDevice, &FunctionTable); + if ( ! MMSUCCESS(Result) ) + return TranslateInternalMmResult(Result); + + if ( ! FunctionTable->QueryMixerInfo ) + return MMSYSERR_NOTSUPPORTED; + + Result = FunctionTable->QueryMixerInfo(SoundDeviceInstance, Message, (LPVOID)Parameter1, Parameter2); + + return Result; +} MMRESULT @@ -172,21 +205,41 @@ case MXDM_GETCONTROLDETAILS : { + Result = MmeGetLineInfo(Message, + PrivateHandle, + Parameter1, + Parameter2); + break; } case MXDM_SETCONTROLDETAILS : { + Result = MmeGetLineInfo(Message, + PrivateHandle, + Parameter1, + Parameter2); + break; } case MXDM_GETLINECONTROLS : { + Result = MmeGetLineInfo(Message, + PrivateHandle, + Parameter1, + Parameter2); + break; } case MXDM_GETLINEINFO : { + Result = MmeGetLineInfo(Message, + PrivateHandle, + Parameter1, + Parameter2); + break; } }
15 years, 3 months
1
0
0
0
← Newer
1
...
7
8
9
10
11
12
13
...
27
Older →
Jump to page:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
Results per page:
10
25
50
100
200