Fixed: #1364 Only transfer bonus item infos when context help string is used for tooltip
This commit is contained in:
parent
982666fc76
commit
3e9f042981
4 changed files with 45 additions and 27 deletions
|
@ -68,6 +68,8 @@ public:
|
||||||
|
|
||||||
/// Get the ContextHelp for this control. Default is to return _ContextHelp
|
/// Get the ContextHelp for this control. Default is to return _ContextHelp
|
||||||
virtual void getContextHelp(ucstring &help) const {help= _ContextHelp;}
|
virtual void getContextHelp(ucstring &help) const {help= _ContextHelp;}
|
||||||
|
/// Get the ContextHelp for this control, with tooltip specific code. Default behaviour is identical to getContextHelp.
|
||||||
|
virtual void getContextHelpToolTip(ucstring &help) const { getContextHelp(help); }
|
||||||
// Get the name of the context help window. Default to "context_help"
|
// Get the name of the context help window. Default to "context_help"
|
||||||
virtual std::string getContextHelpWindowName() const;
|
virtual std::string getContextHelpWindowName() const;
|
||||||
/// Get the ContextHelp ActionHandler. If "", noop
|
/// Get the ContextHelp ActionHandler. If "", noop
|
||||||
|
|
|
@ -2977,30 +2977,7 @@ void CDBCtrlSheet::getContextHelp(ucstring &help) const
|
||||||
{
|
{
|
||||||
const CItemSheet *item = asItemSheet();
|
const CItemSheet *item = asItemSheet();
|
||||||
if (item)
|
if (item)
|
||||||
{
|
|
||||||
if (item->Family == ITEMFAMILY::CRYSTALLIZED_SPELL || item->Family == ITEMFAMILY::JEWELRY || item->Family == ITEMFAMILY::ARMOR)
|
|
||||||
{
|
|
||||||
string luaMethodName = ( (item->Family == ITEMFAMILY::CRYSTALLIZED_SPELL) ? "updateCrystallizedSpellTooltip" : "updateBuffItemTooltip");
|
|
||||||
CDBCtrlSheet *ctrlSheet = const_cast<CDBCtrlSheet*>(this);
|
|
||||||
if ( ! getInventory().isItemInfoUpToDate(getInventory().getItemSlotId(ctrlSheet)))
|
|
||||||
{
|
|
||||||
// Prepare the waiter
|
|
||||||
ControlSheetTooltipUpdater.ItemSheet= ctrlSheet->getSheetId();
|
|
||||||
ControlSheetTooltipUpdater.LuaMethodName = luaMethodName;
|
|
||||||
ControlSheetTooltipUpdater.ItemSlotId= getInventory().getItemSlotId(ctrlSheet);
|
|
||||||
ControlSheetTooltipUpdater.CtrlSheet = ctrlSheet;
|
|
||||||
|
|
||||||
// Add the waiter
|
|
||||||
getInventory().addItemInfoWaiter(&ControlSheetTooltipUpdater);
|
|
||||||
}
|
|
||||||
|
|
||||||
help = ControlSheetTooltipUpdater.infoValidated(ctrlSheet, luaMethodName);
|
|
||||||
|
|
||||||
}
|
|
||||||
else
|
|
||||||
help = getItemActualName();
|
help = getItemActualName();
|
||||||
|
|
||||||
}
|
|
||||||
else
|
else
|
||||||
help= _ContextHelp;
|
help= _ContextHelp;
|
||||||
}
|
}
|
||||||
|
@ -3106,6 +3083,42 @@ void CDBCtrlSheet::getContextHelp(ucstring &help) const
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ***************************************************************************
|
||||||
|
void CDBCtrlSheet::getContextHelpToolTip(ucstring &help) const
|
||||||
|
{
|
||||||
|
// Special case for buff items and spell crystals, only for tooltips
|
||||||
|
if (getType() == CCtrlSheetInfo::SheetType_Item)
|
||||||
|
{
|
||||||
|
const CItemSheet *item = asItemSheet();
|
||||||
|
if (item)
|
||||||
|
{
|
||||||
|
if (item->Family == ITEMFAMILY::CRYSTALLIZED_SPELL
|
||||||
|
|| item->Family == ITEMFAMILY::JEWELRY || item->Family == ITEMFAMILY::ARMOR)
|
||||||
|
{
|
||||||
|
string luaMethodName = (item->Family == ITEMFAMILY::CRYSTALLIZED_SPELL) ? "updateCrystallizedSpellTooltip" : "updateBuffItemTooltip";
|
||||||
|
CDBCtrlSheet *ctrlSheet = const_cast<CDBCtrlSheet*>(this);
|
||||||
|
if ( ! getInventory().isItemInfoUpToDate(getInventory().getItemSlotId(ctrlSheet)))
|
||||||
|
{
|
||||||
|
// Prepare the waiter
|
||||||
|
ControlSheetTooltipUpdater.ItemSheet= ctrlSheet->getSheetId();
|
||||||
|
ControlSheetTooltipUpdater.LuaMethodName = luaMethodName;
|
||||||
|
ControlSheetTooltipUpdater.ItemSlotId= getInventory().getItemSlotId(ctrlSheet);
|
||||||
|
ControlSheetTooltipUpdater.CtrlSheet = ctrlSheet;
|
||||||
|
|
||||||
|
// Add the waiter
|
||||||
|
getInventory().addItemInfoWaiter(&ControlSheetTooltipUpdater);
|
||||||
|
}
|
||||||
|
|
||||||
|
help = ControlSheetTooltipUpdater.infoValidated(ctrlSheet, luaMethodName);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Default
|
||||||
|
getContextHelp(help);
|
||||||
|
}
|
||||||
|
|
||||||
// ***************************************************************************
|
// ***************************************************************************
|
||||||
bool CDBCtrlSheet::canDropItem(CDBCtrlSheet *src) const
|
bool CDBCtrlSheet::canDropItem(CDBCtrlSheet *src) const
|
||||||
{
|
{
|
||||||
|
|
|
@ -355,6 +355,9 @@ public:
|
||||||
/// Special ContextHelp for ctrl sheet.
|
/// Special ContextHelp for ctrl sheet.
|
||||||
virtual void getContextHelp(ucstring &help) const;
|
virtual void getContextHelp(ucstring &help) const;
|
||||||
|
|
||||||
|
/// Special ContextHelp for ctrl sheet.
|
||||||
|
virtual void getContextHelpToolTip(ucstring &help) const;
|
||||||
|
|
||||||
/** true if an item of another ctrlSheet can be dropped on this slot.
|
/** true if an item of another ctrlSheet can be dropped on this slot.
|
||||||
* also return true if src is 0, or if _ItemSlot==UNDEFINED
|
* also return true if src is 0, or if _ItemSlot==UNDEFINED
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -2372,7 +2372,7 @@ void CInterfaceManager::drawContextHelp ()
|
||||||
if(newCtrl)
|
if(newCtrl)
|
||||||
{
|
{
|
||||||
// get the text
|
// get the text
|
||||||
newCtrl->getContextHelp(_ContextHelpText);
|
newCtrl->getContextHelpToolTip(_ContextHelpText);
|
||||||
// UserDefined context help
|
// UserDefined context help
|
||||||
if( !newCtrl->getContextHelpActionHandler().empty() )
|
if( !newCtrl->getContextHelpActionHandler().empty() )
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue