@@ -187,6 +187,28 @@ static wchar_t *escape_label(const char *in)
187
187
return out ;
188
188
}
189
189
190
+ static HICON load_default_icon ()
191
+ {
192
+ HINSTANCE hInstance = GetModuleHandle (NULL );
193
+ if (!hInstance ) {
194
+ return LoadIcon (NULL , IDI_APPLICATION );
195
+ }
196
+
197
+ const char * hint = SDL_GetHint (SDL_HINT_WINDOWS_INTRESOURCE_ICON_SMALL );
198
+ if (hint && * hint ) {
199
+ HICON icon = LoadIcon (hInstance , MAKEINTRESOURCE (SDL_atoi (hint )));
200
+ return icon ? icon : LoadIcon (NULL , IDI_APPLICATION );
201
+ }
202
+
203
+ hint = SDL_GetHint (SDL_HINT_WINDOWS_INTRESOURCE_ICON );
204
+ if (hint && * hint ) {
205
+ HICON icon = LoadIcon (hInstance , MAKEINTRESOURCE (SDL_atoi (hint )));
206
+ return icon ? icon : LoadIcon (NULL , IDI_APPLICATION );
207
+ }
208
+
209
+ return LoadIcon (NULL , IDI_APPLICATION );
210
+ }
211
+
190
212
SDL_Tray * SDL_CreateTray (SDL_Surface * icon , const char * tooltip )
191
213
{
192
214
SDL_Tray * tray = (SDL_Tray * )SDL_malloc (sizeof (* tray ));
@@ -216,12 +238,12 @@ SDL_Tray *SDL_CreateTray(SDL_Surface *icon, const char *tooltip)
216
238
tray -> nid .hIcon = CreateIconFromSurface (icon );
217
239
218
240
if (!tray -> nid .hIcon ) {
219
- tray -> nid .hIcon = LoadIcon ( NULL , IDI_APPLICATION );
241
+ tray -> nid .hIcon = load_default_icon ( );
220
242
}
221
243
222
244
tray -> icon = tray -> nid .hIcon ;
223
245
} else {
224
- tray -> nid .hIcon = LoadIcon ( NULL , IDI_APPLICATION );
246
+ tray -> nid .hIcon = load_default_icon ( );
225
247
tray -> icon = tray -> nid .hIcon ;
226
248
}
227
249
@@ -245,12 +267,12 @@ void SDL_SetTrayIcon(SDL_Tray *tray, SDL_Surface *icon)
245
267
tray -> nid .hIcon = CreateIconFromSurface (icon );
246
268
247
269
if (!tray -> nid .hIcon ) {
248
- tray -> nid .hIcon = LoadIcon ( NULL , IDI_APPLICATION );
270
+ tray -> nid .hIcon = load_default_icon ( );
249
271
}
250
272
251
273
tray -> icon = tray -> nid .hIcon ;
252
274
} else {
253
- tray -> nid .hIcon = LoadIcon ( NULL , IDI_APPLICATION );
275
+ tray -> nid .hIcon = load_default_icon ( );
254
276
tray -> icon = tray -> nid .hIcon ;
255
277
}
256
278
0 commit comments