1.1 --- a/extensions/topmenus/TopMenu.cpp Fri May 09 10:36:58 2014 -0700
1.2 +++ b/extensions/topmenus/TopMenu.cpp Fri May 09 12:30:52 2014 -0700
1.3 @@ -49,6 +49,7 @@
1.4 m_SerialNo = 1;
1.5 m_pTitle = callbacks;
1.6 m_max_clients = 0;
1.7 + m_bCacheTitles = true;
1.8
1.9 if (playerhelpers->IsServerActivated())
1.10 {
1.11 @@ -421,6 +422,13 @@
1.12 return false;
1.13 }
1.14
1.15 + if (!m_bCacheTitles)
1.16 + {
1.17 + char renderbuf[128];
1.18 + m_pTitle->OnTopMenuDisplayTitle(this, client, 0, renderbuf, sizeof(renderbuf));
1.19 + pClient->root->SetDefaultTitle(renderbuf);
1.20 + }
1.21 +
1.22 bool return_value = false;
1.23
1.24 if (position == TopMenuPosition_LastCategory &&
1.25 @@ -460,6 +468,18 @@
1.26
1.27 topmenu_player_category_t *player_cat = &(pClient->cats[category]);
1.28
1.29 + // Refresh the title if the topmenu wants that.
1.30 + if (!m_bCacheTitles)
1.31 + {
1.32 + char renderbuf[128];
1.33 + m_Categories[category]->obj->callbacks->OnTopMenuDisplayTitle(this,
1.34 + client,
1.35 + m_Categories[category]->obj->object_id,
1.36 + renderbuf,
1.37 + sizeof(renderbuf));
1.38 + player_cat->menu->SetDefaultTitle(renderbuf);
1.39 + }
1.40 +
1.41 pClient->last_category = category;
1.42 if (last_position)
1.43 {
1.44 @@ -473,6 +493,11 @@
1.45 return return_value;
1.46 }
1.47
1.48 +void TopMenu::SetTitleCaching(bool cache_titles)
1.49 +{
1.50 + m_bCacheTitles = cache_titles;
1.51 +}
1.52 +
1.53 void TopMenu::OnMenuSelect2(IBaseMenu *menu, int client, unsigned int item, unsigned int item_on_page)
1.54 {
1.55 const char *item_name = menu->GetItemInfo(item, NULL);
1.56 @@ -691,9 +716,12 @@
1.57 }
1.58
1.59 /* Set the menu's title */
1.60 - char renderbuf[128];
1.61 - m_pTitle->OnTopMenuDisplayTitle(this, client, 0, renderbuf, sizeof(renderbuf));
1.62 - root_menu->SetDefaultTitle(renderbuf);
1.63 + if (m_bCacheTitles)
1.64 + {
1.65 + char renderbuf[128];
1.66 + m_pTitle->OnTopMenuDisplayTitle(this, client, 0, renderbuf, sizeof(renderbuf));
1.67 + root_menu->SetDefaultTitle(renderbuf);
1.68 + }
1.69
1.70 /* The client is now fully updated */
1.71 pClient->root = root_menu;
1.72 @@ -810,13 +838,16 @@
1.73 }
1.74
1.75 /* Set the menu's title */
1.76 - char renderbuf[128];
1.77 - cat->obj->callbacks->OnTopMenuDisplayTitle(this,
1.78 - client,
1.79 - cat->obj->object_id,
1.80 - renderbuf,
1.81 - sizeof(renderbuf));
1.82 - cat_menu->SetDefaultTitle(renderbuf);
1.83 + if (m_bCacheTitles)
1.84 + {
1.85 + char renderbuf[128];
1.86 + cat->obj->callbacks->OnTopMenuDisplayTitle(this,
1.87 + client,
1.88 + cat->obj->object_id,
1.89 + renderbuf,
1.90 + sizeof(renderbuf));
1.91 + cat_menu->SetDefaultTitle(renderbuf);
1.92 + }
1.93
1.94 /* We're done! */
1.95 player_cat->menu = cat_menu;