SDL3pp
A slim C++ wrapper for SDL3
Loading...
Searching...
No Matches
SDL3pp_tray.h
1#ifndef SDL3PP_TRAY_H_
2#define SDL3PP_TRAY_H_
3
4#include <SDL3/SDL_tray.h>
5#include "SDL3pp_stdinc.h"
6#include "SDL3pp_surface.h"
7
8namespace SDL {
9
21// Forward decl
22struct Tray;
23
25using TrayRaw = SDL_Tray*;
26
27// Forward decl
28struct TrayRef;
29
32{
34
37 : value(value)
38 {
39 }
40
42 constexpr TrayParam(std::nullptr_t _ = nullptr)
43 : value(nullptr)
44 {
45 }
46
48 constexpr explicit operator bool() const { return !!value; }
49
51 constexpr auto operator<=>(const TrayParam& other) const = default;
52
54 constexpr operator TrayRaw() const { return value; }
55};
56
58struct TrayMenu;
59
61using TrayMenuRaw = SDL_TrayMenu*;
62
63// Forward decl
64struct TrayMenu;
65
66// Forward decl
67struct TrayEntry;
68
70using TrayEntryRaw = SDL_TrayEntry*;
71
72// Forward decl
73struct TrayEntryScoped;
74
77{
79
82 : value(value)
83 {
84 }
85
87 constexpr TrayEntryParam(std::nullptr_t _ = nullptr)
88 : value(nullptr)
89 {
90 }
91
93 constexpr explicit operator bool() const { return !!value; }
94
96 constexpr auto operator<=>(const TrayEntryParam& other) const = default;
97
99 constexpr operator TrayEntryRaw() const { return value; }
100};
101
114
116 SDL_TRAYENTRY_BUTTON;
117
119 SDL_TRAYENTRY_CHECKBOX;
120
122 SDL_TRAYENTRY_SUBMENU;
123
125 SDL_TRAYENTRY_DISABLED;
126
128constexpr TrayEntryFlags TRAYENTRY_CHECKED = SDL_TRAYENTRY_CHECKED;
129
141using TrayCallback = void(SDLCALL*)(void* userdata, TrayEntryRaw entry);
142
155
163class Tray
164{
165 TrayRaw m_resource = nullptr;
166
167public:
169 constexpr Tray(std::nullptr_t = nullptr) noexcept
170 : m_resource(0)
171 {
172 }
173
181 constexpr explicit Tray(const TrayRaw resource) noexcept
182 : m_resource(resource)
183 {
184 }
185
187 constexpr Tray(const Tray& other) = delete;
188
190 constexpr Tray(Tray&& other) noexcept
191 : Tray(other.release())
192 {
193 }
194
195 constexpr Tray(const TrayRef& other) = delete;
196
197 constexpr Tray(TrayRef&& other) = delete;
198
223 : m_resource(SDL_CreateTray(icon, tooltip))
224 {
225 }
226
228 ~Tray() { SDL_DestroyTray(m_resource); }
229
231 constexpr Tray& operator=(Tray&& other) noexcept
232 {
233 std::swap(m_resource, other.m_resource);
234 return *this;
235 }
236
237protected:
239 constexpr Tray& operator=(const Tray& other) noexcept = default;
240
241public:
243 constexpr TrayRaw get() const noexcept { return m_resource; }
244
246 constexpr TrayRaw release() noexcept
247 {
248 auto r = m_resource;
249 m_resource = nullptr;
250 return r;
251 }
252
254 constexpr auto operator<=>(const Tray& other) const noexcept = default;
255
257 constexpr explicit operator bool() const noexcept { return !!m_resource; }
258
260 constexpr operator TrayParam() const noexcept { return {m_resource}; }
261
274 void Destroy();
275
288 void SetIcon(SurfaceParam icon);
289
302 void SetTooltip(StringParam tooltip);
303
326
348 TrayMenu GetMenu() const;
349};
350
352struct TrayRef : Tray
353{
354 using Tray::Tray;
355
363 TrayRef(TrayParam resource) noexcept
364 : Tray(resource.value)
365 {
366 }
367
375 TrayRef(TrayRaw resource) noexcept
376 : Tray(resource)
377 {
378 }
379
381 TrayRef(const TrayRef& other) noexcept
382 : Tray(other.get())
383 {
384 }
385
388};
389
396{
397 TrayMenuRaw m_trayMenu;
398
399public:
405 constexpr TrayMenu(TrayMenuRaw trayMenu = {}) noexcept
406 : m_trayMenu(trayMenu)
407 {
408 }
409
415 constexpr operator TrayMenuRaw() const noexcept { return m_trayMenu; }
416
432 std::span<TrayEntry> GetEntries();
433
459 TrayEntry InsertEntry(int pos, StringParam label, TrayEntryFlags flags);
460
486
505
523 TrayParam GetParentTray() const;
524};
525
534{
535 TrayEntryRaw m_resource = nullptr;
536
537public:
539 constexpr TrayEntry(std::nullptr_t = nullptr) noexcept
540 : m_resource(0)
541 {
542 }
543
549 constexpr TrayEntry(const TrayEntryRaw resource) noexcept
550 : m_resource(resource)
551 {
552 }
553
555 constexpr TrayEntry(const TrayEntry& other) = default;
556
558 constexpr TrayEntry(TrayEntry&& other) noexcept
559 : TrayEntry(other.release())
560 {
561 }
562
565
567 constexpr TrayEntry& operator=(TrayEntry&& other) noexcept
568 {
569 std::swap(m_resource, other.m_resource);
570 return *this;
571 }
572
574 constexpr TrayEntry& operator=(const TrayEntry& other) noexcept = default;
575
577 constexpr TrayEntryRaw get() const noexcept { return m_resource; }
578
580 constexpr TrayEntryRaw release() noexcept
581 {
582 auto r = m_resource;
583 m_resource = nullptr;
584 return r;
585 }
586
588 constexpr auto operator<=>(const TrayEntry& other) const noexcept = default;
589
591 constexpr explicit operator bool() const noexcept { return !!m_resource; }
592
594 constexpr operator TrayEntryParam() const noexcept { return {m_resource}; }
595
607 void Remove();
608
631
654
674 void SetLabel(StringParam label);
675
692 const char* GetLabel() const;
693
710 void SetChecked(bool checked);
711
728 bool GetChecked() const;
729
744 void SetEnabled(bool enabled);
745
760 bool GetEnabled() const;
761
775 void SetCallback(TrayCB callback);
776
792 void SetCallback(TrayCallback callback, void* userdata);
793
802 void Click();
803
817};
818
821{
823
824 constexpr TrayEntryScoped(const TrayEntry& other) = delete;
825
827 constexpr TrayEntryScoped(TrayEntry&& other) noexcept
828 : TrayEntry(other.release())
829 {
830 }
831
834};
835
860{
861 return Tray(icon, std::move(tooltip));
862}
863
877inline void SetTrayIcon(TrayParam tray, SurfaceParam icon)
878{
879 SDL_SetTrayIcon(tray, icon);
880}
881
883{
884 SDL::SetTrayIcon(m_resource, icon);
885}
886
900inline void SetTrayTooltip(TrayParam tray, StringParam tooltip)
901{
902 SDL_SetTrayTooltip(tray, tooltip);
903}
904
905inline void Tray::SetTooltip(StringParam tooltip)
906{
907 SDL::SetTrayTooltip(m_resource, std::move(tooltip));
908}
909
933{
934 return SDL_CreateTrayMenu(tray);
935}
936
937inline TrayMenu Tray::CreateMenu() { return SDL::CreateTrayMenu(m_resource); }
938
962{
963 return SDL_CreateTraySubmenu(entry);
964}
965
967{
968 return SDL::CreateTraySubmenu(m_resource);
969}
970
993inline TrayMenu GetTrayMenu(TrayParam tray) { return SDL_GetTrayMenu(tray); }
994
995inline TrayMenu Tray::GetMenu() const { return SDL::GetTrayMenu(m_resource); }
996
1020{
1021 return SDL_GetTraySubmenu(entry);
1022}
1023
1025{
1026 return SDL::GetTraySubmenu(m_resource);
1027}
1028
1045inline std::span<TrayEntry> GetTrayEntries(TrayMenu menu)
1046{
1047 int count;
1048 auto entries = SDL_GetTrayEntries(menu, &count);
1049 return std::span<TrayEntry>{reinterpret_cast<TrayEntry*>(entries),
1050 size_t(count)};
1051}
1052
1053inline std::span<TrayEntry> TrayMenu::GetEntries()
1054{
1055 return SDL::GetTrayEntries(m_trayMenu);
1056}
1057
1071inline void RemoveTrayEntry(TrayEntryRaw entry) { SDL_RemoveTrayEntry(entry); }
1072
1074
1102 int pos,
1103 StringParam label,
1104 TrayEntryFlags flags)
1105{
1106 return SDL_InsertTrayEntryAt(menu, pos, label, flags);
1107}
1108
1110 StringParam label,
1111 TrayEntryFlags flags)
1112{
1113 return SDL::InsertTrayEntryAt(m_trayMenu, pos, std::move(label), flags);
1114}
1115
1137{
1138 SDL_SetTrayEntryLabel(entry, label);
1139}
1140
1142{
1143 SDL::SetTrayEntryLabel(m_resource, std::move(label));
1144}
1145
1163inline const char* GetTrayEntryLabel(TrayEntryParam entry)
1164{
1165 return SDL_GetTrayEntryLabel(entry);
1166}
1167
1168inline const char* TrayEntry::GetLabel() const
1169{
1170 return SDL::GetTrayEntryLabel(m_resource);
1171}
1172
1190inline void SetTrayEntryChecked(TrayEntryParam entry, bool checked)
1191{
1192 SDL_SetTrayEntryChecked(entry, checked);
1193}
1194
1195inline void TrayEntry::SetChecked(bool checked)
1196{
1197 SDL::SetTrayEntryChecked(m_resource, checked);
1198}
1199
1218{
1219 return SDL_GetTrayEntryChecked(entry);
1220}
1221
1222inline bool TrayEntry::GetChecked() const
1223{
1224 return SDL::GetTrayEntryChecked(m_resource);
1225}
1226
1242inline void SetTrayEntryEnabled(TrayEntryParam entry, bool enabled)
1243{
1244 SDL_SetTrayEntryEnabled(entry, enabled);
1245}
1246
1247inline void TrayEntry::SetEnabled(bool enabled)
1248{
1249 SDL::SetTrayEntryEnabled(m_resource, enabled);
1250}
1251
1268{
1269 return SDL_GetTrayEntryEnabled(entry);
1270}
1271
1272inline bool TrayEntry::GetEnabled() const
1273{
1274 return SDL::GetTrayEntryEnabled(m_resource);
1275}
1276
1294 TrayCallback callback,
1295 void* userdata)
1296{
1297 SDL_SetTrayEntryCallback(entry, callback, userdata);
1298}
1299
1300inline void TrayEntry::SetCallback(TrayCallback callback, void* userdata)
1301{
1302 SDL::SetTrayEntryCallback(m_resource, callback, userdata);
1303}
1304
1315inline void ClickTrayEntry(TrayEntryParam entry) { SDL_ClickTrayEntry(entry); }
1316
1317inline void TrayEntry::Click() { SDL::ClickTrayEntry(m_resource); }
1318
1333inline void DestroyTray(TrayRaw tray) { SDL_DestroyTray(tray); }
1334
1335inline void Tray::Destroy() { DestroyTray(release()); }
1336
1351{
1352 return SDL_GetTrayEntryParent(entry);
1353}
1354
1356{
1357 return SDL::GetTrayEntryParent(m_resource);
1358}
1359
1379{
1380 return SDL_GetTrayMenuParentEntry(menu);
1381}
1382
1384{
1385 return SDL::GetTrayMenuParentEntry(m_trayMenu);
1386}
1387
1407{
1408 return SDL_GetTrayMenuParentTray(menu);
1409}
1410
1412{
1413 return SDL::GetTrayMenuParentTray(m_trayMenu);
1414}
1415
1426inline void UpdateTrays() { SDL_UpdateTrays(); }
1427
1429
1431{
1432 return InsertEntry(-1, std::move(label), flags);
1433}
1434
1435inline void TrayEntry::SetCallback(TrayCB callback)
1436{
1437 SetCallback(callback.wrapper, callback.data);
1438}
1439
1440} // namespace SDL
1441
1442#endif /* SDL3PP_TRAY_H_ */
Helpers to use C++ strings parameters.
Definition: SDL3pp_strings.h:43
An opaque handle representing an entry on a system tray object.
Definition: SDL3pp_tray.h:534
constexpr TrayEntry & operator=(TrayEntry &&other) noexcept
Assignment operator.
Definition: SDL3pp_tray.h:567
constexpr TrayEntry & operator=(const TrayEntry &other) noexcept=default
Assignment operator.
constexpr TrayEntry(TrayEntry &&other) noexcept
Move constructor.
Definition: SDL3pp_tray.h:558
constexpr TrayEntry(const TrayEntry &other)=default
Copy constructor.
void SetCallback(TrayCB callback)
Sets a callback to be invoked when the entry is selected.
Definition: SDL3pp_tray.h:1435
constexpr TrayEntryRaw get() const noexcept
Retrieves underlying TrayEntryRaw.
Definition: SDL3pp_tray.h:577
constexpr TrayEntry(std::nullptr_t=nullptr) noexcept
Default ctor.
Definition: SDL3pp_tray.h:539
constexpr TrayEntry(const TrayEntryRaw resource) noexcept
Constructs from TrayEntryParam.
Definition: SDL3pp_tray.h:549
constexpr TrayEntryRaw release() noexcept
Retrieves underlying TrayEntryRaw and clear this.
Definition: SDL3pp_tray.h:580
~TrayEntry()
Destructor.
Definition: SDL3pp_tray.h:564
constexpr auto operator<=>(const TrayEntry &other) const noexcept=default
Comparison.
An opaque handle representing a menu/submenu on a system tray object.
Definition: SDL3pp_tray.h:396
TrayEntry AppendEntry(StringParam label, TrayEntryFlags flags)
Appends a tray entry.
Definition: SDL3pp_tray.h:1430
constexpr TrayMenu(TrayMenuRaw trayMenu={}) noexcept
Wraps TrayMenu.
Definition: SDL3pp_tray.h:405
An opaque handle representing a toplevel system tray object.
Definition: SDL3pp_tray.h:164
constexpr TrayRaw get() const noexcept
Retrieves underlying TrayRaw.
Definition: SDL3pp_tray.h:243
~Tray()
Destructor.
Definition: SDL3pp_tray.h:228
constexpr Tray & operator=(const Tray &other) noexcept=default
Assignment operator.
constexpr Tray(std::nullptr_t=nullptr) noexcept
Default ctor.
Definition: SDL3pp_tray.h:169
constexpr Tray & operator=(Tray &&other) noexcept
Assignment operator.
Definition: SDL3pp_tray.h:231
constexpr auto operator<=>(const Tray &other) const noexcept=default
Comparison.
Tray(SurfaceParam icon, StringParam tooltip)
Create an icon to be placed in the operating system's tray, or equivalent.
Definition: SDL3pp_tray.h:222
constexpr Tray(Tray &&other) noexcept
Move constructor.
Definition: SDL3pp_tray.h:190
constexpr TrayRaw release() noexcept
Retrieves underlying TrayRaw and clear this.
Definition: SDL3pp_tray.h:246
constexpr Tray(const Tray &other)=delete
Copy constructor.
constexpr Tray(const TrayRaw resource) noexcept
Constructs from TrayParam.
Definition: SDL3pp_tray.h:181
::Uint32 Uint32
An unsigned 32-bit integer type.
Definition: SDL3pp_stdinc.h:341
void(SDLCALL *)(void *userdata, TrayEntryRaw entry) TrayCallback
A callback that is invoked when a tray entry is selected.
Definition: SDL3pp_tray.h:141
TrayMenu CreateSubmenu()
Create a submenu for a system tray entry.
Definition: SDL3pp_tray.h:966
TrayEntry InsertEntry(int pos, StringParam label, TrayEntryFlags flags)
Insert a tray entry at a given position.
Definition: SDL3pp_tray.h:1109
SDL_TrayMenu * TrayMenuRaw
Alias to raw representation for TrayMenu.
Definition: SDL3pp_tray.h:61
void SetTooltip(StringParam tooltip)
Updates the system tray icon's tooltip.
Definition: SDL3pp_tray.h:905
void SetTrayEntryEnabled(TrayEntryParam entry, bool enabled)
Sets whether or not an entry is enabled.
Definition: SDL3pp_tray.h:1242
void UpdateTrays()
Update the trays.
Definition: SDL3pp_tray.h:1426
bool GetTrayEntryEnabled(TrayEntryParam entry)
Gets whether or not an entry is enabled.
Definition: SDL3pp_tray.h:1267
TrayEntry InsertTrayEntryAt(TrayMenu menu, int pos, StringParam label, TrayEntryFlags flags)
Insert a tray entry at a given position.
Definition: SDL3pp_tray.h:1101
TrayEntryParam GetParentEntry() const
Gets the entry for which the menu is a submenu, if the current menu is a submenu.
Definition: SDL3pp_tray.h:1383
TrayMenu GetMenu() const
Gets a previously created tray menu.
Definition: SDL3pp_tray.h:995
void DestroyTray(TrayRaw tray)
Destroys a tray object.
Definition: SDL3pp_tray.h:1333
constexpr TrayEntryFlags TRAYENTRY_BUTTON
Make the entry a simple button. Required.
Definition: SDL3pp_tray.h:115
void SetIcon(SurfaceParam icon)
Updates the system tray icon's icon.
Definition: SDL3pp_tray.h:882
void SetChecked(bool checked)
Sets whether or not an entry is checked.
Definition: SDL3pp_tray.h:1195
constexpr TrayEntryFlags TRAYENTRY_DISABLED
Make the entry disabled. Optional.
Definition: SDL3pp_tray.h:124
TrayParam GetTrayMenuParentTray(TrayMenuRaw menu)
Gets the tray for which this menu is the first-level menu, if the current menu isn't a submenu.
Definition: SDL3pp_tray.h:1406
TrayMenu CreateMenu()
Create a menu for a system tray.
Definition: SDL3pp_tray.h:937
void SetTrayEntryCallback(TrayEntryParam entry, TrayCallback callback, void *userdata)
Sets a callback to be invoked when the entry is selected.
Definition: SDL3pp_tray.h:1293
TrayMenu GetParent()
Gets the menu containing a certain tray entry.
Definition: SDL3pp_tray.h:1355
void SetTrayEntryLabel(TrayEntryParam entry, StringParam label)
Sets the label of an entry.
Definition: SDL3pp_tray.h:1136
TrayMenu GetTrayEntryParent(TrayEntryParam entry)
Gets the menu containing a certain tray entry.
Definition: SDL3pp_tray.h:1350
void Click()
Simulate a click on a tray entry.
Definition: SDL3pp_tray.h:1317
std::span< TrayEntry > GetTrayEntries(TrayMenu menu)
Returns a list of entries in the menu, in order.
Definition: SDL3pp_tray.h:1045
void SetTrayIcon(TrayParam tray, SurfaceParam icon)
Updates the system tray icon's icon.
Definition: SDL3pp_tray.h:877
TrayMenu GetTraySubmenu(TrayEntryParam entry)
Gets a previously created tray entry submenu.
Definition: SDL3pp_tray.h:1019
void Destroy()
Destroys a tray object.
Definition: SDL3pp_tray.h:1335
void SetEnabled(bool enabled)
Sets whether or not an entry is enabled.
Definition: SDL3pp_tray.h:1247
TrayMenu CreateTrayMenu(TrayParam tray)
Create a menu for a system tray.
Definition: SDL3pp_tray.h:932
void RemoveTrayEntry(TrayEntryRaw entry)
Removes a tray entry.
Definition: SDL3pp_tray.h:1071
void ClickTrayEntry(TrayEntryParam entry)
Simulate a click on a tray entry.
Definition: SDL3pp_tray.h:1315
Tray CreateTray(SurfaceParam icon, StringParam tooltip)
Create an icon to be placed in the operating system's tray, or equivalent.
Definition: SDL3pp_tray.h:859
TrayEntryParam GetTrayMenuParentEntry(TrayMenuRaw menu)
Gets the entry for which the menu is a submenu, if the current menu is a submenu.
Definition: SDL3pp_tray.h:1378
bool GetTrayEntryChecked(TrayEntryParam entry)
Gets whether or not an entry is checked.
Definition: SDL3pp_tray.h:1217
const char * GetTrayEntryLabel(TrayEntryParam entry)
Gets the label of an entry.
Definition: SDL3pp_tray.h:1163
TrayMenu GetSubmenu()
Gets a previously created tray entry submenu.
Definition: SDL3pp_tray.h:1024
const char * GetLabel() const
Gets the label of an entry.
Definition: SDL3pp_tray.h:1168
bool GetChecked() const
Gets whether or not an entry is checked.
Definition: SDL3pp_tray.h:1222
SDL_TrayEntry * TrayEntryRaw
Alias to raw representation for TrayEntry.
Definition: SDL3pp_tray.h:70
std::span< TrayEntry > GetEntries()
Returns a list of entries in the menu, in order.
Definition: SDL3pp_tray.h:1053
bool GetEnabled() const
Gets whether or not an entry is enabled.
Definition: SDL3pp_tray.h:1272
void SetTrayTooltip(TrayParam tray, StringParam tooltip)
Updates the system tray icon's tooltip.
Definition: SDL3pp_tray.h:900
TrayParam GetParentTray() const
Gets the tray for which this menu is the first-level menu, if the current menu isn't a submenu.
Definition: SDL3pp_tray.h:1411
constexpr TrayEntryFlags TRAYENTRY_CHECKED
Make the entry checked. This is valid only for checkboxes. Optional.
Definition: SDL3pp_tray.h:128
void Remove()
Removes a tray entry.
Definition: SDL3pp_tray.h:1073
Uint32 TrayEntryFlags
Flags that control the creation of system tray entries.
Definition: SDL3pp_tray.h:113
TrayMenu GetTrayMenu(TrayParam tray)
Gets a previously created tray menu.
Definition: SDL3pp_tray.h:993
TrayMenu CreateTraySubmenu(TrayEntryParam entry)
Create a submenu for a system tray entry.
Definition: SDL3pp_tray.h:961
void SetTrayEntryChecked(TrayEntryParam entry, bool checked)
Sets whether or not an entry is checked.
Definition: SDL3pp_tray.h:1190
constexpr TrayEntryFlags TRAYENTRY_SUBMENU
Prepare the entry to have a submenu. Required.
Definition: SDL3pp_tray.h:121
constexpr TrayEntryFlags TRAYENTRY_CHECKBOX
Make the entry a checkbox. Required.
Definition: SDL3pp_tray.h:118
void SetLabel(StringParam label)
Sets the label of an entry.
Definition: SDL3pp_tray.h:1141
SDL_Tray * TrayRaw
Alias to raw representation for Tray.
Definition: SDL3pp_tray.h:25
Main include header for the SDL3pp library.
Definition: SDL3pp_callbackWrapper.h:169
Safely wrap Surface for non owning parameters.
Definition: SDL3pp_surface.h:46
Safely wrap TrayEntry for non owning parameters.
Definition: SDL3pp_tray.h:77
constexpr TrayEntryParam(TrayEntryRaw value)
Constructs from TrayEntryRaw.
Definition: SDL3pp_tray.h:81
constexpr auto operator<=>(const TrayEntryParam &other) const =default
Comparison.
constexpr TrayEntryParam(std::nullptr_t _=nullptr)
Constructs null/invalid.
Definition: SDL3pp_tray.h:87
TrayEntryRaw value
parameter's TrayEntryRaw
Definition: SDL3pp_tray.h:78
RAII owning version TrayEntry.
Definition: SDL3pp_tray.h:821
~TrayEntryScoped()
Destructor.
Definition: SDL3pp_tray.h:833
constexpr TrayEntryScoped(TrayEntry &&other) noexcept
Move constructor.
Definition: SDL3pp_tray.h:827
Safely wrap Tray for non owning parameters.
Definition: SDL3pp_tray.h:32
TrayRaw value
parameter's TrayRaw
Definition: SDL3pp_tray.h:33
constexpr auto operator<=>(const TrayParam &other) const =default
Comparison.
constexpr TrayParam(std::nullptr_t _=nullptr)
Constructs null/invalid.
Definition: SDL3pp_tray.h:42
constexpr TrayParam(TrayRaw value)
Constructs from TrayRaw.
Definition: SDL3pp_tray.h:36
Semi-safe reference for Tray.
Definition: SDL3pp_tray.h:353
TrayRef(const TrayRef &other) noexcept
Copy constructor.
Definition: SDL3pp_tray.h:381
TrayRef(TrayParam resource) noexcept
Constructs from TrayParam.
Definition: SDL3pp_tray.h:363
TrayRef(TrayRaw resource) noexcept
Constructs from TrayParam.
Definition: SDL3pp_tray.h:375
~TrayRef()
Destructor.
Definition: SDL3pp_tray.h:387