Vytis Girdžijauskas (cman AT cman DOT us)
[reactos.git] / reactos / dll / cpl / desk / background.c
index e839a34..5ba5036 100644 (file)
@@ -63,6 +63,7 @@ AddListViewItems(HWND hwndDlg, PGLOBAL_DATA pGlobalData)
     HIMAGELIST himl;
     TCHAR wallpaperFilename[MAX_PATH];
     DWORD bufferSize = sizeof(wallpaperFilename);
+    TCHAR buffer[MAX_PATH];
     DWORD varType = REG_SZ;
     LONG result;
     UINT i = 0;
@@ -110,6 +111,12 @@ AddListViewItems(HWND hwndDlg, PGLOBAL_DATA pGlobalData)
     result = RegQueryValueEx(regKey, TEXT("Wallpaper"), 0, &varType, (LPBYTE)wallpaperFilename, &bufferSize);
     if ((result == ERROR_SUCCESS) && (_tcslen(wallpaperFilename) > 0))
     {
+        /* Allow environment variables in file name */
+        if (ExpandEnvironmentStrings(wallpaperFilename, buffer, MAX_PATH))
+        {
+            _tcscpy(wallpaperFilename, buffer);
+        }
+        
         himl = (HIMAGELIST)SHGetFileInfo(wallpaperFilename,
                                          0,
                                          &sfi,
@@ -397,6 +404,7 @@ OnBrowseButton(HWND hwndDlg, PGLOBAL_DATA pGlobalData)
     SHFILEINFO sfi;
     LV_ITEM listItem;
     HWND hwndBackgroundList;
+    TCHAR *p;
 
     hwndBackgroundList = GetDlgItem(hwndDlg, IDC_BACKGROUND_LIST);
 
@@ -439,17 +447,21 @@ OnBrowseButton(HWND hwndDlg, PGLOBAL_DATA pGlobalData)
         backgroundItem->bWallpaper = TRUE;
 
         _tcscpy(backgroundItem->szDisplayName, sfi.szDisplayName);
+        p = _tcsrchr(backgroundItem->szDisplayName, _T('.'));
+        if (p)
+            *p = (TCHAR)0;
         _tcscpy(backgroundItem->szFilename, filename);
 
         ZeroMemory(&listItem, sizeof(LV_ITEM));
         listItem.mask       = LVIF_TEXT | LVIF_PARAM | LVIF_STATE | LVIF_IMAGE;
-        listItem.state      = 0;
+        listItem.state      = LVIS_SELECTED;
         listItem.pszText    = backgroundItem->szDisplayName;
         listItem.iImage     = sfi.iIcon;
         listItem.iItem      = pGlobalData->listViewItemCount;
         listItem.lParam     = pGlobalData->listViewItemCount;
 
         (void)ListView_InsertItem(hwndBackgroundList, &listItem);
+        SendMessage(hwndBackgroundList, WM_VSCROLL, SB_BOTTOM, 0);
 
         pGlobalData->listViewItemCount++;
     }