mirror of https://github.com/libsdl-org/SDL.git
Make SDL_GetTrayEntires() NULL-terminated
This commit is contained in:
parent
a58bc3eaf4
commit
7673b84f52
|
|
@ -228,9 +228,9 @@ extern SDL_DECLSPEC SDL_TrayMenu *SDLCALL SDL_GetTraySubmenu(SDL_TrayEntry *entr
|
|||
* \param menu The menu to get entries from.
|
||||
* \param size An optional pointer to obtain the number of entries in the
|
||||
* menu.
|
||||
* \returns the entries within the given menu. The pointer becomes invalid
|
||||
* when any function that inserts or deletes entries in the menu is
|
||||
* called.
|
||||
* \returns a NULL-terminated list of entries within the given menu. The pointer
|
||||
* becomes invalid when any function that inserts or deletes entries in
|
||||
* the menu is called.
|
||||
*
|
||||
* \since This function is available since SDL 3.2.0.
|
||||
*
|
||||
|
|
|
|||
|
|
@ -309,11 +309,12 @@ void SDL_RemoveTrayEntry(SDL_TrayEntry *entry)
|
|||
}
|
||||
|
||||
menu->nEntries--;
|
||||
SDL_TrayEntry **new_entries = (SDL_TrayEntry **)SDL_realloc(menu->entries, menu->nEntries * sizeof(*new_entries));
|
||||
SDL_TrayEntry **new_entries = (SDL_TrayEntry **)SDL_realloc(menu->entries, (menu->nEntries + 1) * sizeof(*new_entries));
|
||||
|
||||
/* Not sure why shrinking would fail, but even if it does, we can live with a "too big" array */
|
||||
if (new_entries) {
|
||||
menu->entries = new_entries;
|
||||
menu->entries[menu->nEntries] = NULL;
|
||||
}
|
||||
|
||||
[menu->nsmenu removeItem:entry->nsitem];
|
||||
|
|
@ -337,7 +338,7 @@ SDL_TrayEntry *SDL_InsertTrayEntryAt(SDL_TrayMenu *menu, int pos, const char *la
|
|||
return NULL;
|
||||
}
|
||||
|
||||
SDL_TrayEntry **new_entries = (SDL_TrayEntry **)SDL_realloc(menu->entries, (menu->nEntries + 1) * sizeof(*new_entries));
|
||||
SDL_TrayEntry **new_entries = (SDL_TrayEntry **)SDL_realloc(menu->entries, (menu->nEntries + 2) * sizeof(*new_entries));
|
||||
if (!new_entries) {
|
||||
SDL_free(entry);
|
||||
return NULL;
|
||||
|
|
@ -351,6 +352,7 @@ SDL_TrayEntry *SDL_InsertTrayEntryAt(SDL_TrayMenu *menu, int pos, const char *la
|
|||
}
|
||||
|
||||
new_entries[pos] = entry;
|
||||
new_entries[menu->nEntries] = NULL;
|
||||
|
||||
NSMenuItem *nsitem;
|
||||
if (label == NULL) {
|
||||
|
|
|
|||
|
|
@ -518,11 +518,12 @@ void SDL_RemoveTrayEntry(SDL_TrayEntry *entry)
|
|||
}
|
||||
|
||||
menu->nEntries--;
|
||||
SDL_TrayEntry ** new_entries = SDL_realloc(menu->entries, menu->nEntries * sizeof(SDL_TrayEntry *));
|
||||
SDL_TrayEntry ** new_entries = SDL_realloc(menu->entries, (menu->nEntries + 1) * sizeof(SDL_TrayEntry *));
|
||||
|
||||
/* Not sure why shrinking would fail, but even if it does, we can live with a "too big" array */
|
||||
if (new_entries) {
|
||||
menu->entries = new_entries;
|
||||
menu->entries[menu->nEntries] = NULL;
|
||||
}
|
||||
|
||||
gtk_widget_destroy(entry->item);
|
||||
|
|
@ -566,7 +567,7 @@ SDL_TrayEntry *SDL_InsertTrayEntryAt(SDL_TrayMenu *menu, int pos, const char *la
|
|||
|
||||
gtk_widget_set_sensitive(entry->item, !(flags & SDL_TRAYENTRY_DISABLED));
|
||||
|
||||
SDL_TrayEntry **new_entries = (SDL_TrayEntry **) SDL_realloc(menu->entries, (menu->nEntries + 1) * sizeof(SDL_TrayEntry *));
|
||||
SDL_TrayEntry **new_entries = (SDL_TrayEntry **) SDL_realloc(menu->entries, (menu->nEntries + 2) * sizeof(SDL_TrayEntry *));
|
||||
|
||||
if (!new_entries) {
|
||||
SDL_free(entry);
|
||||
|
|
@ -581,6 +582,7 @@ SDL_TrayEntry *SDL_InsertTrayEntryAt(SDL_TrayMenu *menu, int pos, const char *la
|
|||
}
|
||||
|
||||
new_entries[pos] = entry;
|
||||
new_entries[menu->nEntries] = NULL;
|
||||
|
||||
gtk_widget_show(entry->item);
|
||||
gtk_menu_shell_insert(menu->menu, entry->item, (pos == menu->nEntries) ? -1 : pos);
|
||||
|
|
|
|||
|
|
@ -330,11 +330,12 @@ void SDL_RemoveTrayEntry(SDL_TrayEntry *entry)
|
|||
}
|
||||
|
||||
menu->nEntries--;
|
||||
SDL_TrayEntry ** new_entries = SDL_realloc(menu->entries, menu->nEntries * sizeof(SDL_TrayEntry *));
|
||||
SDL_TrayEntry ** new_entries = SDL_realloc(menu->entries, (menu->nEntries + 1) * sizeof(SDL_TrayEntry *));
|
||||
|
||||
/* Not sure why shrinking would fail, but even if it does, we can live with a "too big" array */
|
||||
if (new_entries) {
|
||||
menu->entries = new_entries;
|
||||
menu->entries[menu->nEntries] = NULL;
|
||||
}
|
||||
|
||||
if (!DeleteMenu(menu->hMenu, (UINT) entry->id, MF_BYCOMMAND)) {
|
||||
|
|
@ -398,7 +399,7 @@ SDL_TrayEntry *SDL_InsertTrayEntryAt(SDL_TrayMenu *menu, int pos, const char *la
|
|||
entry->id = get_next_id();
|
||||
}
|
||||
|
||||
SDL_TrayEntry **new_entries = (SDL_TrayEntry **) SDL_realloc(menu->entries, (menu->nEntries + 1) * sizeof(SDL_TrayEntry **));
|
||||
SDL_TrayEntry **new_entries = (SDL_TrayEntry **) SDL_realloc(menu->entries, (menu->nEntries + 2) * sizeof(SDL_TrayEntry **));
|
||||
|
||||
if (!new_entries) {
|
||||
SDL_free(entry);
|
||||
|
|
@ -418,6 +419,7 @@ SDL_TrayEntry *SDL_InsertTrayEntryAt(SDL_TrayMenu *menu, int pos, const char *la
|
|||
}
|
||||
|
||||
new_entries[pos] = entry;
|
||||
new_entries[menu->nEntries] = NULL;
|
||||
|
||||
if (label == NULL) {
|
||||
InsertMenuW(menu->hMenu, windows_compatible_pos, MF_SEPARATOR | MF_BYPOSITION, entry->id, NULL);
|
||||
|
|
|
|||
Loading…
Reference in New Issue