Przeglądaj źródła

Merge pull request #1545 from Areloch/GuiEditorSelectionListFix

Fixes issues with shifting the gui selection dropdown to be searchable via the Ex control.
Brian Roberts 3 dni temu
rodzic
commit
ac9400a1ec

+ 23 - 9
Engine/source/gui/controls/guiPopUpCtrlEx.cpp

@@ -1317,21 +1317,35 @@ void GuiPopUpMenuCtrlEx::closePopUp()
       return;
 
    // Get the selection from the text list:
-   mSelIndex = mTl->getSelectedCell().y;
+   if (mSearchText.isEmpty())
+   {
+      mSelIndex = mTl->getSelectedCell().y;
+   }
+   else
+   {
+      S32 filteredEntryCount = 0;
+      for (U32 i=0; i < mEntries.size(); i++)
+      {
+         String entryText = String::ToLower(mEntries[i].buf);
+         if (entryText.find(mSearchText) != -1 && mEntries[i].id != -2)
+         {
+            if (filteredEntryCount == mTl->getSelectedCell().y)
+            {
+               mSelIndex = i;
+               break;
+            }
+
+            filteredEntryCount++;
+         }
+      }
+   }
    mSelIndex = ( mRevNum >= mSelIndex && mSelIndex != -1 ) ? mRevNum - mSelIndex : mSelIndex;
    if ( mSelIndex != -1 )
    {
       if (mReplaceText)
          setText(mEntries[mSelIndex].buf);
 
-      for(U32 i=0; i < mEntries.size(); i++)
-      {
-        if(dStrcmp(mEntries[i].buf,mTl->mList[mSelIndex].text) == 0)
-        {
-           setIntVariable(mEntries[i].id);
-            break;
-         }
-      }
+      setIntVariable(mEntries[mSelIndex].id);
    }
 
    // Release the mouse:

+ 1 - 1
Templates/BaseGame/game/tools/guiEditor/gui/guiEditor.ed.gui

@@ -291,7 +291,7 @@ $guiContent = new GuiControl(GuiEditorGui, EditorGuiGroup) {
                horizSizing = "right";
                vertSizing = "center";
                position = "8 0";
-               extent = "300 27";
+               extent = "300 20";
                minExtent = "8 2";
                canSave = "1";
                visible = "1";

+ 6 - 2
Templates/BaseGame/game/tools/guiEditor/scripts/guiEditorContentList.ed.tscript

@@ -96,7 +96,11 @@ function GuiEditorContentList::scanGroup( %this, %group )
 
 //---------------------------------------------------------------------------------------------
 
-function GuiEditorContentList::onSelect( %this, %ctrl )
+function GuiEditorContentList::onSelect( %this, %index, %text )
 {
-   GuiEditor.openForEditing( %ctrl );
+   //Strip out just the guiControl id
+   %ctrlId = getToken(%text, "-", 1);
+   %ctrlId = trim(%ctrlId);
+   
+   GuiEditor.openForEditing( %ctrlId );
 }