mirror of
https://github.com/libretro/scummvm.git
synced 2025-01-22 10:17:22 +00:00
BACKENDS: Add special Win32 path to set SDL window icon
We bypass SDL_WM_SetIcon and setup the window icon using the embedded icon, with the default path as a fallback. This allows us to use an antialised icon with alpha transparency (which the default included icon doesn't have) on Windows XP and later
This commit is contained in:
parent
f065b612a6
commit
7983b1cce3
@ -34,6 +34,8 @@
|
||||
#undef ARRAYSIZE // winnt.h defines ARRAYSIZE, but we want our own one...
|
||||
#include <shellapi.h>
|
||||
|
||||
#include <SDL_syswm.h> // For setting the icon
|
||||
|
||||
#include "backends/platform/sdl/win32/win32.h"
|
||||
#include "backends/fs/windows/windows-fs-factory.h"
|
||||
#include "backends/taskbar/win32/win32-taskbar.h"
|
||||
@ -137,6 +139,28 @@ bool OSystem_Win32::displayLogFile() {
|
||||
return false;
|
||||
}
|
||||
|
||||
void OSystem_Win32::setupIcon() {
|
||||
HMODULE handle = GetModuleHandle(NULL);
|
||||
HICON ico = LoadIcon(handle, MAKEINTRESOURCE(1001 /* IDI_ICON */));
|
||||
if (ico) {
|
||||
SDL_SysWMinfo wminfo;
|
||||
SDL_VERSION(&wminfo.version);
|
||||
if (SDL_GetWMInfo(&wminfo)) {
|
||||
// Replace the handle to the icon associated with the window class by our custom icon
|
||||
SetClassLongPtr(wminfo.window, GCLP_HICON, (ULONG_PTR)ico);
|
||||
|
||||
// Since there wasn't any default icon, we can't use the return value from SetClassLong
|
||||
// to check for errors (it would be 0 in both cases: error or no previous value for the
|
||||
// icon handle). Instead we check for the last-error code value.
|
||||
if (GetLastError() == ERROR_SUCCESS)
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// If no icon has been set, fallback to default path
|
||||
OSystem_SDL::setupIcon();
|
||||
}
|
||||
|
||||
Common::String OSystem_Win32::getDefaultConfigFileName() {
|
||||
char configFile[MAXPATHLEN];
|
||||
|
||||
|
@ -46,6 +46,7 @@ protected:
|
||||
*/
|
||||
Common::String _logFilePath;
|
||||
|
||||
virtual void setupIcon();
|
||||
virtual Common::String getDefaultConfigFileName();
|
||||
virtual Common::WriteStream *createLogFile();
|
||||
};
|
||||
|
@ -5,6 +5,7 @@
|
||||
#endif
|
||||
|
||||
#define FILE 256
|
||||
#define IDI_ICON 1001
|
||||
|
||||
IDI_ICON ICON DISCARDABLE "icons/scummvm.ico"
|
||||
|
||||
|
@ -5,6 +5,7 @@
|
||||
#endif
|
||||
|
||||
#define FILE 256
|
||||
#define IDI_ICON 1001
|
||||
|
||||
IDI_ICON ICON DISCARDABLE "icons/scummvm.ico"
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user