Mercurial > molko
comparison libmlk-core/mlk/core/event.c @ 614:281608524dd1
misc: implement dark/light theming
author | David Demelier <markand@malikania.fr> |
---|---|
date | Sun, 20 Aug 2023 14:45:10 +0200 |
parents | f76cada0bbb2 |
children | 3930234ab1f5 |
comparison
equal
deleted
inserted
replaced
613:f76cada0bbb2 | 614:281608524dd1 |
---|---|
285 break; | 285 break; |
286 } | 286 } |
287 } | 287 } |
288 } | 288 } |
289 | 289 |
290 static void | |
291 convert_theme(union mlk_event *ev) | |
292 { | |
293 ev->type = MLK_EVENT_THEME; | |
294 | |
295 switch (SDL_GetSystemTheme()) { | |
296 case SDL_SYSTEM_THEME_DARK: | |
297 ev->theme.theme = MLK_WINDOW_THEME_DARK; | |
298 break; | |
299 default: | |
300 ev->theme.theme = MLK_WINDOW_THEME_LIGHT; | |
301 break; | |
302 } | |
303 | |
304 mlk_window.theme_effective = ev->theme.theme; | |
305 } | |
306 | |
290 int | 307 int |
291 mlk_event_poll(union mlk_event *ev) | 308 mlk_event_poll(union mlk_event *ev) |
292 { | 309 { |
293 SDL_Event event; | 310 SDL_Event event; |
294 | 311 |
319 convert_pad(&event, ev); | 336 convert_pad(&event, ev); |
320 return 1; | 337 return 1; |
321 case SDL_EVENT_GAMEPAD_AXIS_MOTION: | 338 case SDL_EVENT_GAMEPAD_AXIS_MOTION: |
322 convert_axis(&event, ev); | 339 convert_axis(&event, ev); |
323 return 1; | 340 return 1; |
341 case SDL_EVENT_SYSTEM_THEME_CHANGED: | |
342 /* | |
343 * We only report the event if the user preferrence is | |
344 * set to auto because we don't need it otherwise. | |
345 */ | |
346 if (mlk_window.theme_user == MLK_WINDOW_THEME_AUTO) { | |
347 convert_theme(ev); | |
348 return 1; | |
349 } | |
350 break; | |
324 default: | 351 default: |
325 continue; | 352 break; |
326 } | 353 } |
327 } | 354 } |
328 | 355 |
329 return 0; | 356 return 0; |
330 } | 357 } |