Commit a38d84d8 authored by Huw D M Davies's avatar Huw D M Davies Committed by Alexandre Julliard

GetSystemPaletteEntries returns palette size if entries==NULL.

Use this instead of COLOR_GetSystemPaletteSize.
parent 1ff1f7d1
...@@ -14,7 +14,6 @@ ...@@ -14,7 +14,6 @@
#include "global.h" #include "global.h"
#include "sysmetrics.h" #include "sysmetrics.h"
#include "cursoricon.h" #include "cursoricon.h"
#include "color.h"
#include "debug.h" #include "debug.h"
#include "x11drv.h" #include "x11drv.h"
...@@ -464,15 +463,12 @@ HANDLE32 WINAPI LoadImage32W( HINSTANCE32 hinst, LPCWSTR name, UINT32 type, ...@@ -464,15 +463,12 @@ HANDLE32 WINAPI LoadImage32W( HINSTANCE32 hinst, LPCWSTR name, UINT32 type,
{ {
if (HIWORD(name)) { if (HIWORD(name)) {
TRACE(resource,"(0x%04x,%p,%d,%d,%d,0x%08x)\n", TRACE(resource,"(0x%04x,%p,%d,%d,%d,0x%08x)\n",
hinst,name,type,desiredx,desiredy,loadflags hinst,name,type,desiredx,desiredy,loadflags);
);
} else { } else {
TRACE(resource,"(0x%04x,%p,%d,%d,%d,0x%08x)\n", TRACE(resource,"(0x%04x,%p,%d,%d,%d,0x%08x)\n",
hinst,name,type,desiredx,desiredy,loadflags hinst,name,type,desiredx,desiredy,loadflags);
);
} }
if (loadflags & LR_DEFAULTSIZE) if (loadflags & LR_DEFAULTSIZE) {
{
if (type == IMAGE_ICON) { if (type == IMAGE_ICON) {
if (!desiredx) desiredx = SYSMETRICS_CXICON; if (!desiredx) desiredx = SYSMETRICS_CXICON;
if (!desiredy) desiredy = SYSMETRICS_CYICON; if (!desiredy) desiredy = SYSMETRICS_CYICON;
...@@ -485,12 +481,20 @@ HANDLE32 WINAPI LoadImage32W( HINSTANCE32 hinst, LPCWSTR name, UINT32 type, ...@@ -485,12 +481,20 @@ HANDLE32 WINAPI LoadImage32W( HINSTANCE32 hinst, LPCWSTR name, UINT32 type,
switch (type) { switch (type) {
case IMAGE_BITMAP: case IMAGE_BITMAP:
return BITMAP_LoadBitmap32W(hinst, name, loadflags); return BITMAP_LoadBitmap32W(hinst, name, loadflags);
case IMAGE_ICON: case IMAGE_ICON:
{
HDC32 hdc = GetDC32(0);
UINT32 palEnts = GetSystemPaletteEntries32(hdc, 0, 0, NULL);
ReleaseDC32(0, hdc);
return CURSORICON_Load32(hinst, name, desiredx, desiredy, return CURSORICON_Load32(hinst, name, desiredx, desiredy,
MIN(16, COLOR_GetSystemPaletteSize()), FALSE, loadflags); MIN(16, palEnts), FALSE, loadflags);
}
case IMAGE_CURSOR: case IMAGE_CURSOR:
return CURSORICON_Load32(hinst, name, desiredx, desiredy, 1, TRUE, return CURSORICON_Load32(hinst, name, desiredx, desiredy,
loadflags); 1, TRUE, loadflags);
} }
return 0; return 0;
} }
......
...@@ -833,6 +833,10 @@ HCURSOR16 WINAPI LoadCursor16( HINSTANCE16 hInstance, SEGPTR name ) ...@@ -833,6 +833,10 @@ HCURSOR16 WINAPI LoadCursor16( HINSTANCE16 hInstance, SEGPTR name )
*/ */
HICON16 WINAPI LoadIcon16( HINSTANCE16 hInstance, SEGPTR name ) HICON16 WINAPI LoadIcon16( HINSTANCE16 hInstance, SEGPTR name )
{ {
HDC32 hdc = GetDC32(0);
UINT32 palEnts = GetSystemPaletteEntries32(hdc, 0, 0, NULL);
ReleaseDC32(0, hdc);
if (HIWORD(name)) if (HIWORD(name))
TRACE(icon, "%04x '%s'\n", TRACE(icon, "%04x '%s'\n",
hInstance, (char *)PTR_SEG_TO_LIN( name ) ); hInstance, (char *)PTR_SEG_TO_LIN( name ) );
...@@ -842,7 +846,7 @@ HICON16 WINAPI LoadIcon16( HINSTANCE16 hInstance, SEGPTR name ) ...@@ -842,7 +846,7 @@ HICON16 WINAPI LoadIcon16( HINSTANCE16 hInstance, SEGPTR name )
return CURSORICON_Load16( hInstance, name, return CURSORICON_Load16( hInstance, name,
SYSMETRICS_CXICON, SYSMETRICS_CYICON, SYSMETRICS_CXICON, SYSMETRICS_CYICON,
MIN( 16, COLOR_GetSystemPaletteSize() ), FALSE, 0); MIN(16, palEnts), FALSE, 0);
} }
...@@ -1294,7 +1298,11 @@ INT16 WINAPI LookupIconIdFromDirectoryEx16( LPBYTE xdir, BOOL16 bIcon, ...@@ -1294,7 +1298,11 @@ INT16 WINAPI LookupIconIdFromDirectoryEx16( LPBYTE xdir, BOOL16 bIcon,
UINT16 retVal = 0; UINT16 retVal = 0;
if( dir && !dir->idReserved && (dir->idType & 3) ) if( dir && !dir->idReserved && (dir->idType & 3) )
{ {
int colors = (cFlag & LR_MONOCHROME) ? 2 : COLOR_GetSystemPaletteSize(); HDC32 hdc = GetDC32(0);
UINT32 palEnts = GetSystemPaletteEntries32(hdc, 0, 0, NULL);
int colors = (cFlag & LR_MONOCHROME) ? 2 : palEnts;
ReleaseDC32(0, hdc);
if( bIcon ) if( bIcon )
{ {
ICONDIRENTRY* entry; ICONDIRENTRY* entry;
...@@ -1484,9 +1492,13 @@ HCURSOR32 WINAPI LoadCursorFromFile32A (LPCSTR name) ...@@ -1484,9 +1492,13 @@ HCURSOR32 WINAPI LoadCursorFromFile32A (LPCSTR name)
*/ */
HICON32 WINAPI LoadIcon32W(HINSTANCE32 hInstance, LPCWSTR name) HICON32 WINAPI LoadIcon32W(HINSTANCE32 hInstance, LPCWSTR name)
{ {
HDC32 hdc = GetDC32(0);
UINT32 palEnts = GetSystemPaletteEntries32(hdc, 0, 0, NULL);
ReleaseDC32(0, hdc);
return CURSORICON_Load32( hInstance, name, return CURSORICON_Load32( hInstance, name,
SYSMETRICS_CXICON, SYSMETRICS_CYICON, SYSMETRICS_CXICON, SYSMETRICS_CYICON,
MIN( 16, COLOR_GetSystemPaletteSize() ), FALSE, 0); MIN( 16, palEnts ), FALSE, 0);
} }
/*********************************************************************** /***********************************************************************
......
...@@ -11,7 +11,6 @@ ...@@ -11,7 +11,6 @@
#include "bitmap.h" #include "bitmap.h"
#include "callback.h" #include "callback.h"
#include "palette.h" #include "palette.h"
#include "color.h"
#include "global.h" #include "global.h"
#include "debug.h" #include "debug.h"
#include "x11drv.h" #include "x11drv.h"
......
...@@ -421,6 +421,7 @@ UINT32 WINAPI GetSystemPaletteEntries32( ...@@ -421,6 +421,7 @@ UINT32 WINAPI GetSystemPaletteEntries32(
TRACE(palette, "hdc=%04x,start=%i,count=%i\n", hdc,start,count); TRACE(palette, "hdc=%04x,start=%i,count=%i\n", hdc,start,count);
if (!(dc = (DC *) GDI_GetObjPtr( hdc, DC_MAGIC ))) return 0; if (!(dc = (DC *) GDI_GetObjPtr( hdc, DC_MAGIC ))) return 0;
if (!entries) return COLOR_GetSystemPaletteSize();
if (start >= dc->w.devCaps->sizePalette) if (start >= dc->w.devCaps->sizePalette)
{ {
GDI_HEAP_UNLOCK( hdc ); GDI_HEAP_UNLOCK( hdc );
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment