From d395c3096752ef2b297189d1c016bc9c1d6b07e5 Mon Sep 17 00:00:00 2001 From: Egor Ananyin Date: Sat, 31 Dec 2022 18:08:14 +0300 Subject: [PATCH] [MSPAINT] Don't allow to set image as wallpaper if it has the wrong format (#4924) CORE-18661 Our Paint allows user to try to set a .ico file as a wallpaper, which isn't possible. Different Windows versions have different behaviour, so it was decided that the simplest fix would be to just grey out "Set as wallpaper" buttons as in 2K3 (See the Jira ticket). --- base/applications/mspaint/winproc.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/base/applications/mspaint/winproc.cpp b/base/applications/mspaint/winproc.cpp index 74e27a67661..640e596215b 100644 --- a/base/applications/mspaint/winproc.cpp +++ b/base/applications/mspaint/winproc.cpp @@ -280,14 +280,18 @@ LRESULT CMainWindow::OnInitMenuPopup(UINT nMsg, WPARAM wParam, LPARAM lParam, BO BOOL trueSelection = (::IsWindowVisible(selectionWindow) && ((toolsModel.GetActiveTool() == TOOL_FREESEL) || (toolsModel.GetActiveTool() == TOOL_RECTSEL))); + BOOL isBMP; switch (lParam) { case 0: /* File menu */ if ((HMENU)wParam != GetSubMenu(menu, 0)) break; - EnableMenuItem(menu, IDM_FILEASWALLPAPERPLANE, ENABLED_IF(isAFile)); - EnableMenuItem(menu, IDM_FILEASWALLPAPERCENTERED, ENABLED_IF(isAFile)); - EnableMenuItem(menu, IDM_FILEASWALLPAPERSTRETCHED, ENABLED_IF(isAFile)); + + isBMP = _wcsicmp(PathFindExtensionW(filepathname), L".bmp") == 0; + EnableMenuItem(menu, IDM_FILEASWALLPAPERPLANE, ENABLED_IF(isAFile && isBMP)); + EnableMenuItem(menu, IDM_FILEASWALLPAPERCENTERED, ENABLED_IF(isAFile && isBMP)); + EnableMenuItem(menu, IDM_FILEASWALLPAPERSTRETCHED, ENABLED_IF(isAFile && isBMP)); + RemoveMenu(menu, IDM_FILE1, MF_BYCOMMAND); RemoveMenu(menu, IDM_FILE2, MF_BYCOMMAND); RemoveMenu(menu, IDM_FILE3, MF_BYCOMMAND);