36 if (!szText) szText =
"";
66 Control(rtBounds), iOpenMenu(0), pFillCallback(nullptr), fReadOnly(false), fSimple(false), fMouseOver(false),
72 cbKeys.emplace_back(K_DOWN);
73 cbKeys.emplace_back(K_SPACE);
74 cbKeys.emplace_back(K_DOWN,
KEYS_Alt);
75 cbKeys.emplace_back(K_SPACE,
KEYS_Alt);
84 cbKeys.emplace_back(K_ESCAPE);
95 delete pKeyCloseCombo;
97 if (pFillCallback)
delete pFillCallback;
102 if (pFillCallback)
delete pFillCallback;
103 pFillCallback = pNewFillCallback;
106 bool ComboBox::DoDropdown()
109 if (fReadOnly)
return false;
115 if (!pScreen)
return false;
117 if (!pFillCallback)
return false;
124 pScreen->
DoContext(pNewMenu,
this, iX, iY);
131 bool ComboBox::AbortDropdown(
bool fByUser)
135 if (!pScr || (iOpenMenu != pScr->GetLastContextMenuIndex())) iOpenMenu = 0;
136 if (!iOpenMenu)
return false;
138 pScr->AbortContext(fByUser);
151 if (!fReadOnly && !fSimple)
182 if ((
HasDrawFocus() || iOpenMenu || fMouseOver) && !fReadOnly)
203 if (DoDropdown())
return;
242 if (fReadOnly)
return;
C4GraphicsResource GraphicsResource
#define C4GUI_StandardBGColor
#define C4GUI_ComboFontClr
const char * LoadResStr(const char *id)
const int32_t C4MC_Button_LeftDown
#define C4GFXBLIT_ADDITIVE
void SCopy(const char *szSource, char *sTarget, size_t iMaxL)
bool SEqual(const char *szStr1, const char *szStr2)
StdStrBuf FormatString(const char *szFmt,...)
int32_t GamepadGuiControl
C4ConfigControls Controls
std::vector< C4KeyCodeEx > CodeList
bool SubPrimaryClipper(int iX1, int iY1, int iX2, int iY2)
void DrawFrameDw(C4Surface *sfcDest, int x1, int y1, int x2, int y2, DWORD dwClr, float width=1.0f)
bool RestorePrimaryClipper()
void SetBlitMode(DWORD dwBlitMode)
void DrawBoxDw(C4Surface *sfcDest, int iX1, int iY1, int iX2, int iY2, DWORD dwClr)
bool StorePrimaryClipper()
bool TextOut(const char *szText, CStdFont &rFont, float fZoom, C4Surface *sfcDest, float iTx, float iTy, DWORD dwFCol=0xffffffff, BYTE byForm=ALeft, bool fDoMarkup=true)
void DrawX(C4Surface *sfcTarget, float iX, float iY, float iWdt, float iHgt, int32_t iPhaseX=0, int32_t iPhaseY=0) const
void AddEntry(const char *szText, int32_t id)
void SelectEntry(int32_t iEntry)
virtual bool OnComboSelChange(ComboBox *pForCombo, int32_t idNewSelection)=0
bool FindEntry(const char *szText)
void FillDropDown(ComboBox *pComboBox, ContextMenu *pDropdownList)
void DrawElement(C4TargetFacet &cgo) override
static int32_t GetDefaultHeight()
void SetComboCB(ComboBox_FillCB *pNewFillCallback)
void OnCtxComboSelect(C4GUI::Element *pListItem, const ComboMenuCBStruct &rNewSel)
void SetText(const char *szToText)
void MouseLeave(CMouse &rMouse) override
void MouseInput(CMouse &rMouse, int32_t iButton, int32_t iX, int32_t iY, DWORD dwKeyParam) override
ComboBox(const C4Rect &rtBounds)
void MouseEnter(CMouse &rMouse) override
void MouseInput(CMouse &rMouse, int32_t iButton, int32_t iX, int32_t iY, DWORD dwKeyParam) override
virtual Screen * GetScreen()
virtual void MouseEnter(CMouse &rMouse)
virtual void MouseLeave(CMouse &rMouse)
void Draw3DFrame(C4TargetFacet &cgo, bool fUp=false, int32_t iIndent=1, BYTE byAlpha=C4GUI_BorderAlpha, bool fDrawTop=true, int32_t iTopOff=0, bool fDrawLeft=true, int32_t iLeftOff=0)
int32_t GetContextMenuIndex()
int32_t GetLastContextMenuIndex()
void DoContext(ContextMenu *pNewCtx, Element *pAtElement, int32_t iX, int32_t iY)
C4FacetID fctButtonHighlightRound
int GetLineHeight() const
int Replace(const char *szOld, const char *szNew, size_t iStartSearch=0)
const char * getData() const