Add menu_addblank2 and menu_addtext2 to fix unexpected behavior with the original ones when slot=1 (bug 3096, r=Arkshine)
Former-commit-id: b4f84a5cee58d4a8fad716af82bca5b8aa0f5ff2
This commit is contained in:
parent
1026edec6c
commit
21a00e00a2
|
@ -129,6 +129,7 @@ menuitem *Menu::AddItem(const char *name, const char *cmd, int access)
|
||||||
pItem->access = access;
|
pItem->access = access;
|
||||||
pItem->id = m_Items.size();
|
pItem->id = m_Items.size();
|
||||||
pItem->handler = -1;
|
pItem->handler = -1;
|
||||||
|
pItem->isBlank = false;
|
||||||
pItem->pfn = NULL;
|
pItem->pfn = NULL;
|
||||||
|
|
||||||
m_Items.push_back(pItem);
|
m_Items.push_back(pItem);
|
||||||
|
@ -420,6 +421,11 @@ const char *Menu::GetTextString(int player, page_t page, int &keys)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (pItem->isBlank)
|
||||||
|
{
|
||||||
|
enabled = false;
|
||||||
|
}
|
||||||
|
|
||||||
if (enabled)
|
if (enabled)
|
||||||
{
|
{
|
||||||
keys |= (1<<option);
|
keys |= (1<<option);
|
||||||
|
@ -431,7 +437,11 @@ const char *Menu::GetTextString(int player, page_t page, int &keys)
|
||||||
option_display = 0;
|
option_display = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (enabled)
|
if (pItem->isBlank)
|
||||||
|
{
|
||||||
|
_snprintf(buffer, sizeof(buffer)-1, "%s\n", pItem->name.c_str());
|
||||||
|
}
|
||||||
|
else if (enabled)
|
||||||
{
|
{
|
||||||
if (m_AutoColors)
|
if (m_AutoColors)
|
||||||
{
|
{
|
||||||
|
@ -679,6 +689,43 @@ static cell AMX_NATIVE_CALL menu_addtext(AMX *amx, cell *params)
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static cell AMX_NATIVE_CALL menu_addblank2(AMX *amx, cell *params)
|
||||||
|
{
|
||||||
|
GETMENU(params[1]);
|
||||||
|
|
||||||
|
if (!pMenu->items_per_page && pMenu->GetItemCount() >= 10)
|
||||||
|
{
|
||||||
|
LogError(amx, AMX_ERR_NATIVE, "Non-paginated menus are limited to 10 items.");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
menuitem *pItem = pMenu->AddItem("", "", 0);
|
||||||
|
pItem->isBlank = true;
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
static cell AMX_NATIVE_CALL menu_addtext2(AMX *amx, cell *params)
|
||||||
|
{
|
||||||
|
int len;
|
||||||
|
char *name;
|
||||||
|
|
||||||
|
GETMENU(params[1]);
|
||||||
|
|
||||||
|
if (!pMenu->items_per_page && pMenu->GetItemCount() >= 10)
|
||||||
|
{
|
||||||
|
LogError(amx, AMX_ERR_NATIVE, "Non-paginated menus are limited to 10 items.");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
name = get_amxstring(amx, params[2], 0, len);
|
||||||
|
validate_menu_text(name);
|
||||||
|
|
||||||
|
menuitem *pItem = pMenu->AddItem(name, "", 0);
|
||||||
|
pItem->isBlank = true;
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
//Adds an item to the menu (returns current item count - 1)
|
//Adds an item to the menu (returns current item count - 1)
|
||||||
//native menu_additem(menu, const name[], const command[]="", access=0);
|
//native menu_additem(menu, const name[], const command[]="", access=0);
|
||||||
static cell AMX_NATIVE_CALL menu_additem(AMX *amx, cell *params)
|
static cell AMX_NATIVE_CALL menu_additem(AMX *amx, cell *params)
|
||||||
|
@ -1097,5 +1144,7 @@ AMX_NATIVE_INFO g_NewMenuNatives[] =
|
||||||
{"menu_setprop", menu_setprop},
|
{"menu_setprop", menu_setprop},
|
||||||
{"menu_cancel", menu_cancel},
|
{"menu_cancel", menu_cancel},
|
||||||
{"player_menu_info", player_menu_info},
|
{"player_menu_info", player_menu_info},
|
||||||
|
{"menu_addblank2", menu_addblank2},
|
||||||
|
{"menu_addtext2", menu_addtext2},
|
||||||
{NULL, NULL},
|
{NULL, NULL},
|
||||||
};
|
};
|
||||||
|
|
|
@ -101,6 +101,7 @@ struct menuitem
|
||||||
|
|
||||||
int access;
|
int access;
|
||||||
int handler;
|
int handler;
|
||||||
|
bool isBlank;
|
||||||
|
|
||||||
MENUITEM_CALLBACK pfn;
|
MENUITEM_CALLBACK pfn;
|
||||||
size_t id;
|
size_t id;
|
||||||
|
|
|
@ -219,6 +219,9 @@ native player_menu_info(id, &menu, &newmenu, &menupage=0);
|
||||||
/**
|
/**
|
||||||
* Adds a blank line to a menu.
|
* Adds a blank line to a menu.
|
||||||
*
|
*
|
||||||
|
* When using slot=1 this might break your menu. To achieve this functionality
|
||||||
|
* menu_addblank2 should be used.
|
||||||
|
*
|
||||||
* @param menu Menu resource identifier.
|
* @param menu Menu resource identifier.
|
||||||
* @param slot 1 (default) if the line should shift the numbering down.
|
* @param slot 1 (default) if the line should shift the numbering down.
|
||||||
* 0 if the line should be a visual shift only.
|
* 0 if the line should be a visual shift only.
|
||||||
|
@ -230,6 +233,9 @@ native menu_addblank(menu, slot=1);
|
||||||
/**
|
/**
|
||||||
* Adds a text line to a menu. Only available in amxmodx 1.8.1 and above.
|
* Adds a text line to a menu. Only available in amxmodx 1.8.1 and above.
|
||||||
*
|
*
|
||||||
|
* When using slot=1 this might break your menu. To achieve this functionality
|
||||||
|
* menu_addtext2 should be used.
|
||||||
|
*
|
||||||
* @param menu Menu resource identifier.
|
* @param menu Menu resource identifier.
|
||||||
* @param text Text to add.
|
* @param text Text to add.
|
||||||
* @param slot 1 (default) if the line should shift the numbering down.
|
* @param slot 1 (default) if the line should shift the numbering down.
|
||||||
|
@ -239,6 +245,41 @@ native menu_addblank(menu, slot=1);
|
||||||
*/
|
*/
|
||||||
native menu_addtext(menu, const text[], slot=1);
|
native menu_addtext(menu, const text[], slot=1);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Adds a blank line to a menu, always shifting the numbering down.
|
||||||
|
*
|
||||||
|
* This will add a special item to create a blank line. It will affect the menu
|
||||||
|
* item count and pagination. These items can be modified later but will ignore
|
||||||
|
* access and item callback results.
|
||||||
|
*
|
||||||
|
* Only available in 1.8.3 and above.
|
||||||
|
*
|
||||||
|
* @param menu Menu resource identifier.
|
||||||
|
*
|
||||||
|
* @return 1 on success, 0 on failure.
|
||||||
|
* @error Invalid menu resource.
|
||||||
|
* Too many items on non-paginated menu (max is 10)
|
||||||
|
*/
|
||||||
|
native menu_addblank2( menu );
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Adds a text line to a menu, always shifting the numbering down.
|
||||||
|
*
|
||||||
|
* This will add a special item to create a blank line. It will affect the menu
|
||||||
|
* item count and pagination. These items can be modified later but will ignore
|
||||||
|
* access and item callback results.
|
||||||
|
*
|
||||||
|
* Only available in 1.8.3 and above.
|
||||||
|
*
|
||||||
|
* @param menu Menu resource identifier.
|
||||||
|
* @param text Text to add.
|
||||||
|
*
|
||||||
|
* @return 1 on success, 0 on failure.
|
||||||
|
* @error Invalid menu resource.
|
||||||
|
* Too many items on non-paginated menu (max is 10)
|
||||||
|
*/
|
||||||
|
native menu_addtext2( menu, const text[] );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets a menu property.
|
* Sets a menu property.
|
||||||
*
|
*
|
||||||
|
|
Loading…
Reference in New Issue
Block a user