瀏覽代碼

Merge pull request #999 from Areloch/onInspectDocsFix

Fixes the handling for special edit fields in the inspector to properly hook into the field's docs display
Brian Roberts 2 年之前
父節點
當前提交
fc1d097246

+ 4 - 1
Engine/source/gui/editor/inspector/field.cpp

@@ -56,7 +56,8 @@ GuiInspectorField::GuiInspectorField( GuiInspector* inspector,
    mHeightOverride(18),
    mSpecialEditField(false),
    mVariableName(StringTable->EmptyString()),
-   mCallbackName(StringTable->EmptyString())
+   mCallbackName(StringTable->EmptyString()),
+   mVariableType(StringTable->EmptyString())
 {
    if( field != NULL )
       mCaption    = field->pFieldname;
@@ -665,6 +666,8 @@ void GuiInspectorField::_executeSelectedCallback()
 {
    if( mField )
       Con::executef( mInspector, "onFieldSelected", mField->pFieldname, ConsoleBaseType::getType(mField->type)->getTypeName(), mFieldDocs.c_str() );
+   else if(mSpecialEditField)
+      Con::executef(mInspector, "onFieldSelected", mVariableName, mVariableType, mFieldDocs.c_str());
 }
 
 //-----------------------------------------------------------------------------

+ 5 - 0
Engine/source/gui/editor/inspector/field.h

@@ -97,6 +97,8 @@ class GuiInspectorField : public GuiControl
       StringTableEntry mVariableName;
       //Special edit field, callback name - if defined, we'll do a callback to the function listed here when editing the field
       StringTableEntry mCallbackName;
+      //Special edit field, variable type
+      StringTableEntry mVariableType;
 
       virtual void _registerEditControl( GuiControl *ctrl );
       virtual void _executeSelectedCallback();
@@ -214,6 +216,9 @@ class GuiInspectorField : public GuiControl
       void setSpecialEditVariableName(StringTableEntry varName) { mVariableName = varName; }
       StringTableEntry getSpecialEditVariableName() { return mVariableName; }
 
+      void setSpecialEditVariableType(StringTableEntry varType) { mVariableType = varType; }
+      StringTableEntry getSpecialEditVariableType() { return mVariableType; }
+
       void setSpecialEditCallbackName(StringTableEntry callName) { mCallbackName = callName; }
 
       DECLARE_CONOBJECT( GuiInspectorField );

+ 1 - 0
Engine/source/gui/editor/inspector/group.cpp

@@ -655,6 +655,7 @@ void GuiInspectorGroup::addInspectorField(StringTableEntry name, StringTableEntr
       StringTableEntry fieldName = StringTable->insert(name);
 
       fieldGui->setSpecialEditVariableName(fieldName);
+      fieldGui->setSpecialEditVariableType(typeName);
       fieldGui->setSpecialEditCallbackName(StringTable->insert(callbackName));
 
       fieldGui->setInspectorField(NULL, fieldName);