From 61bf7de1015a8a3450765bf1305514fc470aea36 Mon Sep 17 00:00:00 2001 From: David Anderson Date: Thu, 11 Dec 2014 23:34:00 -0800 Subject: [PATCH] Revert adminmenu API changes. --- extensions/topmenus/smn_topmenus.cpp | 16 ++++++++++++++++ plugins/basebans.sp | 4 +++- plugins/basecomm.sp | 4 +++- plugins/basecommands.sp | 4 +++- plugins/basevotes.sp | 4 +++- plugins/funcommands.sp | 4 +++- plugins/funvotes.sp | 4 +++- plugins/include/adminmenu.inc | 4 ++-- plugins/include/topmenus.inc | 5 +++++ plugins/playercommands.sp | 4 +++- 10 files changed, 44 insertions(+), 9 deletions(-) diff --git a/extensions/topmenus/smn_topmenus.cpp b/extensions/topmenus/smn_topmenus.cpp index 247c0db9..3dc0e380 100644 --- a/extensions/topmenus/smn_topmenus.cpp +++ b/extensions/topmenus/smn_topmenus.cpp @@ -449,6 +449,21 @@ static cell_t TopMenu_AddCategory(IPluginContext *pContext, const cell_t *params return AddToTopMenu(pContext, new_params); } +static cell_t TopMenu_FromHandle(IPluginContext *pContext, const cell_t *params) +{ + HandleError err; + TopMenu *pMenu; + HandleSecurity sec(pContext->GetIdentity(), myself->GetIdentity()); + + if ((err = handlesys->ReadHandle(params[1], hTopMenuType, &sec, (void **)&pMenu)) + != HandleError_None) + { + return pContext->ThrowNativeError("Invalid Handle %x (error: %d)", params[1], err); + } + + return params[1]; +} + sp_nativeinfo_t g_TopMenuNatives[] = { {"AddToTopMenu", AddToTopMenu}, @@ -474,6 +489,7 @@ sp_nativeinfo_t g_TopMenuNatives[] = {"TopMenu.GetInfoString", GetTopMenuInfoString}, {"TopMenu.GetObjName", GetTopMenuName}, {"TopMenu.CacheTitles.set", SetTopMenuTitleCaching}, + {"TopMenu.FromHandle", TopMenu_FromHandle}, {NULL, NULL}, }; diff --git a/plugins/basebans.sp b/plugins/basebans.sp index 0ecb2bd0..99498c0d 100644 --- a/plugins/basebans.sp +++ b/plugins/basebans.sp @@ -124,8 +124,10 @@ LoadBanReasons() } } -public OnAdminMenuReady(TopMenu topmenu) +public OnAdminMenuReady(Handle aTopMenu) { + TopMenu topmenu = TopMenu.FromHandle(aTopMenu); + /* Block us from being called twice */ if (topmenu == hTopMenu) { diff --git a/plugins/basecomm.sp b/plugins/basecomm.sp index 6c2993e7..0b176198 100644 --- a/plugins/basecomm.sp +++ b/plugins/basecomm.sp @@ -100,8 +100,10 @@ public OnPluginStart() } } -public OnAdminMenuReady(TopMenu topmenu) +public OnAdminMenuReady(Handle aTopMenu) { + TopMenu topmenu = TopMenu.FromHandle(aTopMenu); + /* Block us from being called twice */ if (topmenu == hTopMenu) { diff --git a/plugins/basecommands.sp b/plugins/basecommands.sp index 5bc80f6d..24593358 100644 --- a/plugins/basecommands.sp +++ b/plugins/basecommands.sp @@ -146,8 +146,10 @@ bool:IsClientAllowedToChangeCvar(client, const String:cvarname[]) return allowed; } -public OnAdminMenuReady(TopMenu topmenu) +public OnAdminMenuReady(Handle aTopMenu) { + TopMenu topmenu = TopMenu.FromHandle(aTopMenu); + /* Block us from being called twice */ if (topmenu == hTopMenu) { diff --git a/plugins/basevotes.sp b/plugins/basevotes.sp index 943a5e5d..5aea62a8 100644 --- a/plugins/basevotes.sp +++ b/plugins/basevotes.sp @@ -132,8 +132,10 @@ public OnConfigsExecuted() g_mapCount = LoadMapList(g_MapList); } -public OnAdminMenuReady(TopMenu topmenu) +public OnAdminMenuReady(Handle aTopMenu) { + TopMenu topmenu = TopMenu.FromHandle(aTopMenu); + /* Block us from being called twice */ if (topmenu == hTopMenu) { diff --git a/plugins/funcommands.sp b/plugins/funcommands.sp index 78dcb295..8b92efbe 100644 --- a/plugins/funcommands.sp +++ b/plugins/funcommands.sp @@ -258,8 +258,10 @@ public Action:Event_RoundEnd(Handle:event,const String:name[],bool:dontBroadcast KillAllDrugs(); } -public OnAdminMenuReady(TopMenu topmenu) +public OnAdminMenuReady(Handle aTopMenu) { + TopMenu topmenu = TopMenu.FromHandle(aTopMenu); + /* Block us from being called twice */ if (topmenu == hTopMenu) { diff --git a/plugins/funvotes.sp b/plugins/funvotes.sp index 2d2c6e2e..d975ab2c 100644 --- a/plugins/funvotes.sp +++ b/plugins/funvotes.sp @@ -135,8 +135,10 @@ public OnPluginStart() } } -public OnAdminMenuReady(TopMenu topmenu) +public OnAdminMenuReady(Handle aTopMenu) { + TopMenu topmenu = TopMenu.FromHandle(aTopMenu); + /* Block us from being called twice */ if (topmenu == hTopMenu) { diff --git a/plugins/include/adminmenu.inc b/plugins/include/adminmenu.inc index db5cacdb..b3662c04 100644 --- a/plugins/include/adminmenu.inc +++ b/plugins/include/adminmenu.inc @@ -65,7 +65,7 @@ * @param topmenu Handle to the admin menu's TopMenu. * @noreturn */ -forward OnAdminMenuCreated(TopMenu topmenu); +forward OnAdminMenuCreated(Handle topmenu); /** * Called when the admin menu is ready to have items added. @@ -73,7 +73,7 @@ forward OnAdminMenuCreated(TopMenu topmenu); * @param topmenu Handle to the admin menu's TopMenu. * @noreturn */ -forward OnAdminMenuReady(TopMenu topmenu); +forward OnAdminMenuReady(Handle topmenu); /** * Retrieves the Handle to the admin top menu. diff --git a/plugins/include/topmenus.inc b/plugins/include/topmenus.inc index 83f99ac1..817dec51 100644 --- a/plugins/include/topmenus.inc +++ b/plugins/include/topmenus.inc @@ -146,6 +146,11 @@ methodmap TopMenu < Handle // @return A new TopMenu. public native TopMenu(TopMenuHandler handler); + // Returns a TopMenu handle from a generic handle. If the given handle is + // a TopMenu, the handle is simply casted back. Otherwise, an error is + // raised. + public static native TopMenu FromHandle(Handle handle); + // Re-sorts the items in a TopMenu via a configuration file. // // The format of the configuration file should be a Valve Key-Values diff --git a/plugins/playercommands.sp b/plugins/playercommands.sp index f0ab772e..7ddcee54 100644 --- a/plugins/playercommands.sp +++ b/plugins/playercommands.sp @@ -76,8 +76,10 @@ public OnPluginStart() } } -public OnAdminMenuReady(TopMenu topmenu) +public OnAdminMenuReady(Handle aTopMenu) { + TopMenu topmenu = TopMenu.FromHandle(aTopMenu); + /* Block us from being called twice */ if (topmenu == hTopMenu) {