Index: background.c =================================================================== --- background.c (revision 65408) +++ background.c (working copy) @@ -62,7 +62,110 @@ GLOBAL_DATA g_GlobalData; +struct GdiplusStartupInput gdipStartup; +ULONG_PTR gdipToken; + +HRESULT GdipGetEncoderClsid(WCHAR* MimeType, CLSID* pClsid) +{ + UINT num; + UINT size; + UINT i; + ImageCodecInfo* CodecInfo; + + + GdipGetImageEncodersSize(&num, &size); + if(!size) + { + return E_FAIL; + } + + CodecInfo = HeapAlloc(GetProcessHeap(), 0, size); + if(!CodecInfo) + { + return E_FAIL; + } + + if (GdipGetImageEncoders(num, size, CodecInfo) != Ok) + { + HeapFree(GetProcessHeap(), 0, CodecInfo); + return E_FAIL; + } + + for(i = 0; i < num; i++) + { + if(_wcsicmp(CodecInfo[i].MimeType, MimeType) == 0 ) + { + *pClsid = CodecInfo[i].Clsid; + HeapFree(GetProcessHeap(), 0, CodecInfo); + return S_OK; + } + } + + HeapFree(GetProcessHeap(), 0, CodecInfo); + + return E_FAIL; +} + + +LPWSTR +GdipGetSupportedFileExtensions(VOID) +{ + ImageCodecInfo *codecInfo; + UINT num; + UINT size; + UINT j; + LPWSTR lpBuffer = NULL; + + + GdipGetImageDecodersSize(&num, &size); + if (!size) + { + return NULL; + } + + codecInfo = HeapAlloc(GetProcessHeap(), 0, size); + if (!codecInfo) + { + return NULL; + } + + if (GdipGetImageDecoders(num, size, codecInfo) != Ok) + { + HeapFree(GetProcessHeap(), 0, codecInfo); + return NULL; + } + + size = 0; + for (j = 0; j < num; ++j) + { + size = size + wcslen(codecInfo[j].FilenameExtension) + 1; + } + + size = (size + 1) * sizeof(WCHAR); + + lpBuffer = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, size); + if (!lpBuffer) + { + HeapFree(GetProcessHeap(), 0, codecInfo); + return NULL; + } + + for (j = 0; j < num; ++j) + { + StringCbCatW(lpBuffer, size, codecInfo[j].FilenameExtension); + if (j < (num - 1)) + { + StringCbCatW(lpBuffer, size, L";"); + } + } + + HeapFree(GetProcessHeap(), 0, codecInfo); + + return lpBuffer; +} + + /* Add the images in the C:\ReactOS directory and the current wallpaper if any */ static VOID AddListViewItems(HWND hwndDlg, PDATA pData) @@ -70,7 +173,7 @@ WIN32_FIND_DATA fd; HANDLE hFind; TCHAR szSearchPath[MAX_PATH]; - TCHAR szFileTypes[MAX_PATH]; + LPTSTR szFileTypes = NULL; LV_ITEM listItem; LV_COLUMN dummy; RECT clientRect; @@ -202,7 +305,11 @@ /* Add all the images in the C:\ReactOS directory. */ - LoadString(hApplet, IDS_SUPPORTED_EXT, szFileTypes, sizeof(szFileTypes) / sizeof(TCHAR)); + szFileTypes = GdipGetSupportedFileExtensions(); + if (!szFileTypes) + { + return; + } token = _tcstok(szFileTypes, separators); while (token != NULL) @@ -211,10 +318,15 @@ hr = StringCbCat(szSearchPath, sizeof(szSearchPath), TEXT("\\")); if (FAILED(hr)) - return; + { + HeapFree(GetProcessHeap(), 0, szFileTypes); + } + hr = StringCbCat(szSearchPath, sizeof(szSearchPath), token); if (FAILED(hr)) - return; + { + HeapFree(GetProcessHeap(), 0, szFileTypes); + } hFind = FindFirstFile(szSearchPath, &fd); while (hFind != INVALID_HANDLE_VALUE) @@ -227,6 +339,7 @@ if (FAILED(hr)) { FindClose(hFind); + HeapFree(GetProcessHeap(), 0, szFileTypes); return; } hr = StringCbCat(filename, sizeof(filename), fd.cFileName); @@ -233,6 +346,7 @@ if (FAILED(hr)) { FindClose(hFind); + HeapFree(GetProcessHeap(), 0, szFileTypes); return; } @@ -262,6 +376,7 @@ if (FAILED(hr)) { FindClose(hFind); + HeapFree(GetProcessHeap(), 0, szFileTypes); return; } p = _tcsrchr(backgroundItem->szDisplayName, _T('.')); @@ -271,6 +386,7 @@ if (FAILED(hr)) { FindClose(hFind); + HeapFree(GetProcessHeap(), 0, szFileTypes); return; } @@ -294,6 +410,8 @@ token = _tcstok(NULL, separators); FindClose(hFind); } + + HeapFree(GetProcessHeap(), 0, szFileTypes); } @@ -466,7 +584,8 @@ OPENFILENAME ofn; TCHAR filename[MAX_PATH]; TCHAR fileTitle[256]; - TCHAR filter[MAX_PATH]; + LPTSTR filter; + LPTSTR extensions; BackgroundItem *backgroundItem = NULL; SHFILEINFO sfi; LV_ITEM listItem; @@ -473,6 +592,10 @@ HWND hwndBackgroundList; TCHAR *p; HRESULT hr; + TCHAR filterdesc[MAX_PATH]; + TCHAR *c; + UINT sizeRemain; + DWORD buffersize; hwndBackgroundList = GetDlgItem(hwndDlg, IDC_BACKGROUND_LIST); @@ -482,8 +605,45 @@ ofn.hwndOwner = hwndDlg; ofn.lpstrFile = filename; - LoadString(hApplet, IDS_BACKGROUND_COMDLG_FILTER, filter, sizeof(filter) / sizeof(TCHAR)); + LoadString(hApplet, IDS_BACKGROUND_COMDLG_FILTER, filterdesc, sizeof(filterdesc) / sizeof(TCHAR)); + extensions = GdipGetSupportedFileExtensions(); + if (!extensions) + { + return; + } + + buffersize = (((wcslen(extensions) + 1) * 2) * sizeof(TCHAR)) + sizeof(filterdesc) + 6; + + filter = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, buffersize); + if (!filter) + { + HeapFree(GetProcessHeap(), 0, extensions); + return; + } + + sizeRemain = buffersize; + c = filter; + + if (FAILED(StringCbPrintfEx(c, sizeRemain, &c, &sizeRemain, 0, L"%ls (%ls)", filterdesc, extensions))) + { + HeapFree(GetProcessHeap(), 0, extensions); + HeapFree(GetProcessHeap(), 0, filter); + return; + } + + c++; + sizeRemain -= sizeof(*c); + + if (FAILED(StringCbPrintfEx(c, sizeRemain, &c, &sizeRemain, 0, L"%ls", extensions))) + { + HeapFree(GetProcessHeap(), 0, extensions); + HeapFree(GetProcessHeap(), 0, filter); + return; + } + + HeapFree(GetProcessHeap(), 0, extensions); + /* Set lpstrFile[0] to '\0' so that GetOpenFileName does not * use the contents of szFile to initialize itself */ ofn.lpstrFile[0] = TEXT('\0'); @@ -499,10 +659,18 @@ { /* Check if there is already a entry that holds this filename */ if (CheckListViewFilenameExists(hwndBackgroundList, ofn.lpstrFileTitle) == TRUE) + { + HeapFree(GetProcessHeap(), 0, filter); + HeapFree(GetProcessHeap(), 0, extensions); return; + } if (pData->listViewItemCount > (MAX_BACKGROUNDS - 1)) + { + HeapFree(GetProcessHeap(), 0, filter); + HeapFree(GetProcessHeap(), 0, extensions); return; + } SHGetFileInfo(filename, 0, @@ -516,13 +684,22 @@ hr = StringCbCopy(backgroundItem->szDisplayName, sizeof(backgroundItem->szDisplayName), sfi.szDisplayName); if (FAILED(hr)) + { + HeapFree(GetProcessHeap(), 0, filter); + HeapFree(GetProcessHeap(), 0, extensions); return; + } + p = _tcsrchr(backgroundItem->szDisplayName, _T('.')); if (p) *p = (TCHAR)0; hr = StringCbCopy(backgroundItem->szFilename, sizeof(backgroundItem->szFilename), filename); if (FAILED(hr)) + { + HeapFree(GetProcessHeap(), 0, filter); + HeapFree(GetProcessHeap(), 0, extensions); return; + } ZeroMemory(&listItem, sizeof(LV_ITEM)); listItem.mask = LVIF_TEXT | LVIF_PARAM | LVIF_STATE | LVIF_IMAGE; @@ -541,6 +718,8 @@ pData->listViewItemCount++; } + + HeapFree(GetProcessHeap(), 0, filter); } @@ -725,7 +904,23 @@ SetWallpaper(PDATA pData) { HKEY regKey; + TCHAR szWallpaper[MAX_PATH]; + GpImage *image; + CLSID encoderClsid; + size_t length = 0; + GpStatus status; + + if (FAILED(SHGetFolderPath(NULL, CSIDL_LOCAL_APPDATA | CSIDL_FLAG_CREATE, NULL, 0, szWallpaper))) + { + return; + } + + if (FAILED(StringCbCat(szWallpaper, MAX_PATH, TEXT("\\Wallpaper1.bmp")))) + { + return; + } + RegOpenKeyEx(HKEY_CURRENT_USER, TEXT("Control Panel\\Desktop"), 0, KEY_ALL_ACCESS, ®Key); if (pData->placementSelection == PLACEMENT_TILE) @@ -746,19 +941,50 @@ RegSetValueEx(regKey, TEXT("WallpaperStyle"), 0, REG_SZ, (BYTE *)TEXT("2"), sizeof(TCHAR) * 2); } - RegCloseKey(regKey); - if (pData->backgroundItems[pData->backgroundSelection].bWallpaper == TRUE) { - SystemParametersInfo(SPI_SETDESKWALLPAPER, - 0, - pData->backgroundItems[pData->backgroundSelection].szFilename, - SPIF_UPDATEINIFILE); + GdipLoadImageFromFile(pData->backgroundItems[pData->backgroundSelection].szFilename, &image); + if (!image) + { + RegCloseKey(regKey); + return; + } + + if (FAILED(GdipGetEncoderClsid(L"image/bmp", &encoderClsid))) + { + GdipDisposeImage(image); + RegCloseKey(regKey); + return; + } + + status = GdipSaveImageToFile(image, szWallpaper, &encoderClsid, NULL); + + GdipDisposeImage(image); + + if (status != Ok) + { + RegCloseKey(regKey); + return; + } + + if (SUCCEEDED(StringCchLength(pData->backgroundItems[pData->backgroundSelection].szFilename, MAX_PATH, &length))) + { + RegSetValueEx(regKey, TEXT("ConvertedWallpaper"), 0, REG_SZ, (BYTE*)pData->backgroundItems[pData->backgroundSelection].szFilename, (length + 1) * sizeof(TCHAR)); + } + + if (SUCCEEDED(StringCchLength(szWallpaper, MAX_PATH, &length))) + { + RegSetValueEx(regKey, TEXT("OriginalWallpaper"), 0, REG_SZ, (BYTE *)szWallpaper, (length + 1) * sizeof(TCHAR)); + } + + SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, szWallpaper, SPIF_UPDATEINIFILE); } else { SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, (void*) TEXT(""), SPIF_UPDATEINIFILE); } + + RegCloseKey(regKey); } @@ -805,6 +1031,11 @@ switch (uMsg) { case WM_INITDIALOG: + gdipStartup.GdiplusVersion = 1; + gdipStartup.DebugEventCallback = NULL; + gdipStartup.SuppressBackgroundThread = FALSE; + gdipStartup.SuppressExternalCodecs = FALSE; + GdiplusStartup(&gdipToken, &gdipStartup, NULL); pData = (DATA*) HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(DATA)); SetWindowLongPtr(hwndDlg, DWLP_USER, (LONG_PTR)pData); InitBackgroundDialog(hwndDlg, pData); @@ -887,6 +1118,7 @@ DeleteObject(pData->hBitmap); HeapFree(GetProcessHeap(), 0, pData); + GdiplusShutdown(gdipToken); break; } Index: CMakeLists.txt =================================================================== --- CMakeLists.txt (revision 65408) +++ CMakeLists.txt (working copy) @@ -30,6 +30,6 @@ set_module_type(desk cpl UNICODE) target_link_libraries(desk uuid) -add_importlibs(desk user32 advapi32 gdi32 comctl32 comdlg32 ole32 setupapi shell32 shlwapi uxtheme msvcrt kernel32 ntdll) +add_importlibs(desk user32 advapi32 gdi32 comctl32 comdlg32 ole32 setupapi shell32 shlwapi uxtheme gdiplus msvcrt kernel32 ntdll) add_pch(desk desk.h SOURCE) add_cd_file(TARGET desk DESTINATION reactos/system32 FOR all) Index: desk.h =================================================================== --- desk.h (revision 65408) +++ desk.h (working copy) @@ -23,6 +23,7 @@ #include #include #include +#include #include "appearance.h" #include "preview.h" @@ -41,11 +42,10 @@ typedef struct _DIBITMAP { - BITMAPFILEHEADER *header; BITMAPINFO *info; BYTE *bits; - int width; - int height; + UINT width; + UINT height; } DIBITMAP, *PDIBITMAP; extern HINSTANCE hApplet; Index: dibitmap.c =================================================================== --- dibitmap.c (revision 65408) +++ dibitmap.c (working copy) @@ -12,70 +12,83 @@ PDIBITMAP DibLoadImage(LPTSTR lpFilename) { - BOOL bSuccess; - DWORD dwFileSize, dwHighSize, dwBytesRead; - HANDLE hFile; PDIBITMAP lpBitmap; + GpBitmap *bitmap; + BitmapData lock; - hFile = CreateFile(lpFilename, - GENERIC_READ, - FILE_SHARE_READ, - NULL, - OPEN_EXISTING, - FILE_FLAG_SEQUENTIAL_SCAN, - NULL); - if (hFile == INVALID_HANDLE_VALUE) - return NULL; - dwFileSize = GetFileSize(hFile, &dwHighSize); - - if (dwHighSize) + GdipCreateBitmapFromFile(lpFilename, &bitmap); + if (!bitmap) { - CloseHandle(hFile); return NULL; } lpBitmap = HeapAlloc(GetProcessHeap(), 0, sizeof(DIBITMAP)); - if (lpBitmap == NULL) + if (!lpBitmap) { - CloseHandle(hFile); + GdipDisposeImage((GpImage*)bitmap); return NULL; } - lpBitmap->header = HeapAlloc(GetProcessHeap(), 0, dwFileSize); - if (lpBitmap->header == NULL) + lpBitmap->info = HeapAlloc(GetProcessHeap(), 0, sizeof(BITMAPINFO)); + if (!lpBitmap->info) { + GdipDisposeImage((GpImage*)bitmap); HeapFree(GetProcessHeap(), 0, lpBitmap); - CloseHandle(hFile); return NULL; } - bSuccess = ReadFile(hFile, lpBitmap->header, dwFileSize, &dwBytesRead, NULL); - CloseHandle(hFile); + if (GdipGetImageWidth((GpImage*)bitmap, &lpBitmap->width) != Ok) + { + GdipDisposeImage((GpImage*)bitmap); + HeapFree(GetProcessHeap(), 0, lpBitmap->info); + HeapFree(GetProcessHeap(), 0, lpBitmap); + return NULL; + } - if (!bSuccess || - (dwBytesRead != dwFileSize) || - (lpBitmap->header->bfType != * (WORD *) "BM") || - (lpBitmap->header->bfSize != dwFileSize)) + if (GdipGetImageHeight((GpImage*)bitmap, &lpBitmap->height) != Ok) { - HeapFree(GetProcessHeap(), 0, lpBitmap->header); + GdipDisposeImage((GpImage*)bitmap); + HeapFree(GetProcessHeap(), 0, lpBitmap->info); HeapFree(GetProcessHeap(), 0, lpBitmap); return NULL; } - lpBitmap->info = (BITMAPINFO *)(lpBitmap->header + 1); - lpBitmap->bits = (BYTE *)lpBitmap->header + lpBitmap->header->bfOffBits; + lpBitmap->bits = HeapAlloc(GetProcessHeap(), 0, lpBitmap->width * lpBitmap->height * 4); + if (!lpBitmap->bits) + { + GdipDisposeImage((GpImage*)bitmap); + HeapFree(GetProcessHeap(), 0, lpBitmap->info); + HeapFree(GetProcessHeap(), 0, lpBitmap); + return NULL; + } - /* Get the DIB width and height */ - if (lpBitmap->info->bmiHeader.biSize == sizeof(BITMAPCOREHEADER)) + ZeroMemory(lpBitmap->info, sizeof(BITMAPINFO)); + lpBitmap->info->bmiHeader.biSize = sizeof(BITMAPINFOHEADER); + lpBitmap->info->bmiHeader.biWidth = lpBitmap->width; + lpBitmap->info->bmiHeader.biHeight = -lpBitmap->height; + lpBitmap->info->bmiHeader.biPlanes = 1; + lpBitmap->info->bmiHeader.biBitCount = 32; + lpBitmap->info->bmiHeader.biCompression = BI_RGB; + lpBitmap->info->bmiHeader.biSizeImage = lpBitmap->width * lpBitmap->height * 4; + + lock.Stride = lpBitmap->width * 4; + lock.Scan0 = lpBitmap->bits; + + if (GdipBitmapLockBits(bitmap, NULL, ImageLockModeRead | ImageLockModeUserInputBuf, PixelFormat32bppPARGB, &lock) != Ok) { - lpBitmap->width = ((BITMAPCOREHEADER *)lpBitmap->info)->bcWidth; - lpBitmap->height = ((BITMAPCOREHEADER *)lpBitmap->info)->bcHeight; + GdipDisposeImage((GpImage*)bitmap); + HeapFree(GetProcessHeap(), 0, lpBitmap->bits); + HeapFree(GetProcessHeap(), 0, lpBitmap->info); + HeapFree(GetProcessHeap(), 0, lpBitmap); + return NULL; } - else + + GdipBitmapUnlockBits(bitmap, &lock); + + if (bitmap) { - lpBitmap->width = lpBitmap->info->bmiHeader.biWidth; - lpBitmap->height = abs(lpBitmap->info->bmiHeader.biHeight); + GdipDisposeImage((GpImage*)bitmap); } return lpBitmap; @@ -88,10 +101,14 @@ if (lpBitmap == NULL) return; - /* Free the header */ - if (lpBitmap->header != NULL) - HeapFree(GetProcessHeap(), 0, lpBitmap->header); + /* Free the image data */ + if (lpBitmap->bits != NULL) + HeapFree(GetProcessHeap(), 0, lpBitmap->bits); + /* Free the bitmap info */ + if (lpBitmap->info != NULL) + HeapFree(GetProcessHeap(), 0, lpBitmap->info); + /* Free the bitmap structure */ if (lpBitmap != NULL) HeapFree(GetProcessHeap(), 0, lpBitmap); Index: lang/bg-BG.rc =================================================================== --- lang/bg-BG.rc (revision 65408) +++ lang/bg-BG.rc (working copy) @@ -210,8 +210,7 @@ STRINGTABLE BEGIN - IDS_BACKGROUND_COMDLG_FILTER "Изображения (*.bmp;*.dib)\0*.bmp;*.dib\0" - IDS_SUPPORTED_EXT "*.bmp;*.dib" + IDS_BACKGROUND_COMDLG_FILTER "Изображения" END STRINGTABLE Index: lang/cs-CZ.rc =================================================================== --- lang/cs-CZ.rc (revision 65408) +++ lang/cs-CZ.rc (working copy) @@ -216,8 +216,7 @@ STRINGTABLE BEGIN - IDS_BACKGROUND_COMDLG_FILTER "Obrázky (*.bmp;*.dib)\0*.bmp;*.dib\0" - IDS_SUPPORTED_EXT "*.bmp;*.dib" + IDS_BACKGROUND_COMDLG_FILTER "Obrázky" END STRINGTABLE Index: lang/de-DE.rc =================================================================== --- lang/de-DE.rc (revision 65408) +++ lang/de-DE.rc (working copy) @@ -210,8 +210,7 @@ STRINGTABLE BEGIN - IDS_BACKGROUND_COMDLG_FILTER "Bilddateien (*.bmp;*.dib)\0*.bmp;*.dib\0" - IDS_SUPPORTED_EXT "*.bmp;*.dib" + IDS_BACKGROUND_COMDLG_FILTER "Bilddateien" END STRINGTABLE Index: lang/el-GR.rc =================================================================== --- lang/el-GR.rc (revision 65408) +++ lang/el-GR.rc (working copy) @@ -210,8 +210,7 @@ STRINGTABLE BEGIN - IDS_BACKGROUND_COMDLG_FILTER "Εικόνες (*.bmp;*.dib)\0*.bmp;*.dib\0" - IDS_SUPPORTED_EXT "*.bmp;*.dib" + IDS_BACKGROUND_COMDLG_FILTER "Εικόνες" END STRINGTABLE Index: lang/en-US.rc =================================================================== --- lang/en-US.rc (revision 65408) +++ lang/en-US.rc (working copy) @@ -210,8 +210,7 @@ STRINGTABLE BEGIN - IDS_BACKGROUND_COMDLG_FILTER "Pictures (*.bmp;*.dib)\0*.bmp;*.dib\0" - IDS_SUPPORTED_EXT "*.bmp;*.dib" + IDS_BACKGROUND_COMDLG_FILTER "Pictures" END STRINGTABLE Index: lang/es-ES.rc =================================================================== --- lang/es-ES.rc (revision 65408) +++ lang/es-ES.rc (working copy) @@ -212,8 +212,7 @@ STRINGTABLE BEGIN - IDS_BACKGROUND_COMDLG_FILTER "Imágenes (*.bmp;*.dib)\0*.bmp;*.dib\0" - IDS_SUPPORTED_EXT "*.bmp;*.dib" + IDS_BACKGROUND_COMDLG_FILTER "Imágenes" END STRINGTABLE Index: lang/fr-FR.rc =================================================================== --- lang/fr-FR.rc (revision 65408) +++ lang/fr-FR.rc (working copy) @@ -212,8 +212,7 @@ STRINGTABLE BEGIN - IDS_BACKGROUND_COMDLG_FILTER "Images (*.bmp;*.dib)\0*.bmp;*.dib\0" - IDS_SUPPORTED_EXT "*.bmp;*.dib" + IDS_BACKGROUND_COMDLG_FILTER "Images" END STRINGTABLE Index: lang/he-IL.rc =================================================================== --- lang/he-IL.rc (revision 65408) +++ lang/he-IL.rc (working copy) @@ -210,8 +210,7 @@ STRINGTABLE BEGIN - IDS_BACKGROUND_COMDLG_FILTER "תמונות (*.bmp;*.dib)\0*.bmp;*.dib\0" - IDS_SUPPORTED_EXT "*.bmp;*.dib" + IDS_BACKGROUND_COMDLG_FILTER "תמונות" END STRINGTABLE Index: lang/hu-HU.rc =================================================================== --- lang/hu-HU.rc (revision 65408) +++ lang/hu-HU.rc (working copy) @@ -212,8 +212,7 @@ STRINGTABLE BEGIN - IDS_BACKGROUND_COMDLG_FILTER "Képek (*.bmp;*.dib)\0*.bmp;*.dib\0" - IDS_SUPPORTED_EXT "*.bmp;*.dib" + IDS_BACKGROUND_COMDLG_FILTER "Képek" END STRINGTABLE Index: lang/id-ID.rc =================================================================== --- lang/id-ID.rc (revision 65408) +++ lang/id-ID.rc (working copy) @@ -210,8 +210,7 @@ STRINGTABLE BEGIN - IDS_BACKGROUND_COMDLG_FILTER "Gambar (*.bmp;*.dib)\0*.bmp;*.dib\0" - IDS_SUPPORTED_EXT "*.bmp;*.dib" + IDS_BACKGROUND_COMDLG_FILTER "Gambar" END STRINGTABLE Index: lang/it-IT.rc =================================================================== --- lang/it-IT.rc (revision 65408) +++ lang/it-IT.rc (working copy) @@ -210,8 +210,7 @@ STRINGTABLE BEGIN - IDS_BACKGROUND_COMDLG_FILTER "Immagini (*.bmp;*.dib)\0*.bmp;*.dib\0" - IDS_SUPPORTED_EXT "*.bmp;*.dib" + IDS_BACKGROUND_COMDLG_FILTER "Immagini" END STRINGTABLE Index: lang/ja-JP.rc =================================================================== --- lang/ja-JP.rc (revision 65408) +++ lang/ja-JP.rc (working copy) @@ -210,8 +210,7 @@ STRINGTABLE BEGIN - IDS_BACKGROUND_COMDLG_FILTER "画像 (*.bmp;*.dib)\0*.bmp;*.dib\0" - IDS_SUPPORTED_EXT "*.bmp;*.dib" + IDS_BACKGROUND_COMDLG_FILTER "画像" END STRINGTABLE Index: lang/nl-NL.rc =================================================================== --- lang/nl-NL.rc (revision 65408) +++ lang/nl-NL.rc (working copy) @@ -210,8 +210,7 @@ STRINGTABLE BEGIN - IDS_BACKGROUND_COMDLG_FILTER "Pictures (*.bmp;*.dib)\0*.bmp;*.dib\0" - IDS_SUPPORTED_EXT "*.bmp;*.dib" + IDS_BACKGROUND_COMDLG_FILTER "Pictures" END STRINGTABLE Index: lang/no-NO.rc =================================================================== --- lang/no-NO.rc (revision 65408) +++ lang/no-NO.rc (working copy) @@ -210,8 +210,7 @@ STRINGTABLE BEGIN - IDS_BACKGROUND_COMDLG_FILTER "Bilder (*.bmp;*.dib)\0*.bmp;*.dib\0" - IDS_SUPPORTED_EXT "*.bmp;*.dib" + IDS_BACKGROUND_COMDLG_FILTER "Bilder" END STRINGTABLE Index: lang/pl-PL.rc =================================================================== --- lang/pl-PL.rc (revision 65408) +++ lang/pl-PL.rc (working copy) @@ -219,8 +219,7 @@ STRINGTABLE BEGIN - IDS_BACKGROUND_COMDLG_FILTER "Pliki tła (*.bmp;*.dib)\0*.bmp;*.dib\0" - IDS_SUPPORTED_EXT "*.bmp;*.dib" + IDS_BACKGROUND_COMDLG_FILTER "Pliki tła" END STRINGTABLE Index: lang/ro-RO.rc =================================================================== --- lang/ro-RO.rc (revision 65408) +++ lang/ro-RO.rc (working copy) @@ -215,8 +215,7 @@ STRINGTABLE BEGIN - IDS_BACKGROUND_COMDLG_FILTER "Imagini (*.bmp;*.dib)\0*.bmp;*.dib\0" - IDS_SUPPORTED_EXT "*.bmp;*.dib" + IDS_BACKGROUND_COMDLG_FILTER "Imagini" END STRINGTABLE Index: lang/ru-RU.rc =================================================================== --- lang/ru-RU.rc (revision 65408) +++ lang/ru-RU.rc (working copy) @@ -210,8 +210,7 @@ STRINGTABLE BEGIN - IDS_BACKGROUND_COMDLG_FILTER "Изображения (*.bmp;*.dib)\000*.bmp;*.dib" - IDS_SUPPORTED_EXT "*.bmp;*.dib" + IDS_BACKGROUND_COMDLG_FILTER "Изображения" END STRINGTABLE Index: lang/sk-SK.rc =================================================================== --- lang/sk-SK.rc (revision 65408) +++ lang/sk-SK.rc (working copy) @@ -212,8 +212,7 @@ STRINGTABLE BEGIN - IDS_BACKGROUND_COMDLG_FILTER "Obrázky (*.bmp;*.dib)\0*.bmp;*.dib\0" - IDS_SUPPORTED_EXT "*.bmp;*.dib" + IDS_BACKGROUND_COMDLG_FILTER "Obrázky" END STRINGTABLE Index: lang/sq-AL.rc =================================================================== --- lang/sq-AL.rc (revision 65408) +++ lang/sq-AL.rc (working copy) @@ -214,8 +214,7 @@ STRINGTABLE BEGIN - IDS_BACKGROUND_COMDLG_FILTER "Pictures (*.bmp;*.dib)\0*.bmp;*.dib\0" - IDS_SUPPORTED_EXT "*.bmp;*.dib" + IDS_BACKGROUND_COMDLG_FILTER "Pictures" END STRINGTABLE Index: lang/sv-SE.rc =================================================================== --- lang/sv-SE.rc (revision 65408) +++ lang/sv-SE.rc (working copy) @@ -212,8 +212,7 @@ STRINGTABLE BEGIN - IDS_BACKGROUND_COMDLG_FILTER "Pictures (*.bmp;*.dib)\0*.bmp;*.dib\0" - IDS_SUPPORTED_EXT "*.bmp;*.dib" + IDS_BACKGROUND_COMDLG_FILTER "Pictures" END STRINGTABLE Index: lang/tr-TR.rc =================================================================== --- lang/tr-TR.rc (revision 65408) +++ lang/tr-TR.rc (working copy) @@ -212,8 +212,7 @@ STRINGTABLE BEGIN - IDS_BACKGROUND_COMDLG_FILTER "Resimler (*.bmp, *.dib)\0*.bmp;*.dib\0" - IDS_SUPPORTED_EXT "*.bmp;*.dib" + IDS_BACKGROUND_COMDLG_FILTER "Resimler" END STRINGTABLE Index: lang/uk-UA.rc =================================================================== --- lang/uk-UA.rc (revision 65408) +++ lang/uk-UA.rc (working copy) @@ -218,8 +218,7 @@ STRINGTABLE BEGIN - IDS_BACKGROUND_COMDLG_FILTER "Малюнки (*.bmp;*.dib)\0*.bmp;*.dib\0" - IDS_SUPPORTED_EXT "*.bmp;*.dib" + IDS_BACKGROUND_COMDLG_FILTER "Малюнки" END STRINGTABLE Index: lang/zh-CN.rc =================================================================== --- lang/zh-CN.rc (revision 65408) +++ lang/zh-CN.rc (working copy) @@ -217,8 +217,7 @@ STRINGTABLE BEGIN - IDS_BACKGROUND_COMDLG_FILTER "位图 (*.bmp;*.dib)\0*.bmp;*.dib\0" - IDS_SUPPORTED_EXT "*.bmp;*.dib" + IDS_BACKGROUND_COMDLG_FILTER "位图" END STRINGTABLE Index: resource.h =================================================================== --- resource.h (revision 65408) +++ resource.h (working copy) @@ -33,7 +33,6 @@ #define IDC_COLOR_BUTTON 1004 #define IDC_PLACEMENT_COMBO 1005 #define IDS_BACKGROUND_COMDLG_FILTER 1006 -#define IDS_SUPPORTED_EXT 1007 /* Screensaver Page */ #define IDC_SCREENS_PREVIEW 1010