diff --git a/src/game/client/econ/item_style_select_dialog.cpp b/src/game/client/econ/item_style_select_dialog.cpp index 0bcba8f57df..37a0dd519fa 100644 --- a/src/game/client/econ/item_style_select_dialog.cpp +++ b/src/game/client/econ/item_style_select_dialog.cpp @@ -20,6 +20,36 @@ #include + + + +class CStyleComboMenu : public vgui::Menu +{ + DECLARE_CLASS_SIMPLE(CStyleComboMenu, vgui::Menu); + +public: + CStyleComboMenu(vgui::Panel* pParent, const char* pszName) + : BaseClass(pParent, pszName) + { + } + + virtual void OnKeyCodeTyped(vgui::KeyCode code) + { + if (code == KEY_ESCAPE) + { + SetVisible(false); + PostActionSignal(new KeyValues("ComboBoxEscape")); + return; + } + + BaseClass::OnKeyCodeTyped(code); + } +}; + + + + + //----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- @@ -35,6 +65,10 @@ CComboBoxBackpackOverlayDialogBase::CComboBoxBackpackOverlayDialogBase( vgui::Pa } m_pComboBox = new vgui::ComboBox( this, "ComboBox", 5, false ); + CStyleComboMenu* pMenu = new CStyleComboMenu(m_pComboBox, "StyleComboMenu"); + + pMenu->AddActionSignalTarget(this); + m_pComboBox->SetMenu(pMenu); } //----------------------------------------------------------------------------- @@ -75,6 +109,25 @@ void CComboBoxBackpackOverlayDialogBase::ApplySchemeSettings( vgui::IScheme *pSc } } + +void CComboBoxBackpackOverlayDialogBase::OnComboBoxEscape() +{ + OnCommand("cancel"); +} + + +void CComboBoxBackpackOverlayDialogBase::OnKeyCodeTyped(vgui::KeyCode code) +{ + if (code == KEY_ESCAPE) + { + OnCommand("cancel"); + return; + } + + BaseClass::OnKeyCodeTyped(code); +} + + //----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- diff --git a/src/game/client/econ/item_style_select_dialog.h b/src/game/client/econ/item_style_select_dialog.h index 46d45d5553f..aa8b608f150 100644 --- a/src/game/client/econ/item_style_select_dialog.h +++ b/src/game/client/econ/item_style_select_dialog.h @@ -43,9 +43,11 @@ class CComboBoxBackpackOverlayDialogBase : public vgui::EditablePanel virtual void PopulateComboBoxOptions() = 0; virtual void OnComboBoxApplication() = 0; virtual void OnComboBoxChanged( int iNewSelection ) { } + virtual void OnKeyCodeTyped(vgui::KeyCode code); virtual const char *GetTitleLabelLocalizationToken() const = 0; MESSAGE_FUNC_PARAMS( OnTextChanged, "TextChanged", data ); + MESSAGE_FUNC(OnComboBoxEscape, "ComboBoxEscape"); CItemModelPanel *m_pPreviewModelPanel; vgui::ComboBox *m_pComboBox;