behavior when gadget is being drawn.
| 149 | |
| 150 | // behavior when gadget is being drawn. |
| 151 | void UIComboBox::OnDraw() { |
| 152 | UITextItem uarrow; |
| 153 | UITextItem darrow; |
| 154 | char arrowbuf[2]; |
| 155 | |
| 156 | if (m_Flags & UIF_BORDER) |
| 157 | ui_DrawBox(GR_WHITE, 0, 0, m_W, m_H); |
| 158 | |
| 159 | // draw all items in box that can be visible. |
| 160 | int x = m_CX; |
| 161 | int y = m_CY; |
| 162 | |
| 163 | if (!m_nItems) |
| 164 | return; |
| 165 | |
| 166 | snprintf(arrowbuf, sizeof(arrowbuf), "%c", UI_UP_ARROW_CHAR); |
| 167 | uarrow = UITextItem(arrowbuf, m_ItemList[m_Index]->get_color(), 255); |
| 168 | snprintf(arrowbuf, sizeof(arrowbuf), "%c", UI_DOWN_ARROW_CHAR); |
| 169 | darrow = UITextItem(arrowbuf, m_ItemList[m_Index]->get_color(), 255); |
| 170 | |
| 171 | ui_SetTextClip(m_CX, m_CY, m_CX2, m_CY2); |
| 172 | |
| 173 | // reset these |
| 174 | m_ShowUp = m_ShowDown = false; |
| 175 | m_ArrY = y; |
| 176 | m_ArrH = uarrow.height(); |
| 177 | |
| 178 | if (m_Index > 0) { |
| 179 | m_UpArrX = m_CX; |
| 180 | m_UpArrW = uarrow.width(); |
| 181 | uarrow.draw(m_UpArrX, m_ArrY); |
| 182 | m_ShowUp = true; |
| 183 | } |
| 184 | if (m_Index < (m_nItems - 1)) { |
| 185 | m_DownArrX = m_CX2 - darrow.width(); |
| 186 | m_DownArrW = darrow.width(); |
| 187 | darrow.draw(m_DownArrX, m_ArrY); |
| 188 | m_ShowDown = true; |
| 189 | } |
| 190 | |
| 191 | // draw current item. |
| 192 | x = m_CX + uarrow.width() + 2; |
| 193 | ui_SetTextClip(x, m_CY, m_CX2 - darrow.width() - 2, m_CY2); |
| 194 | m_ItemList[m_Index]->draw(x, y); |
| 195 | |
| 196 | ui_ResetTextClip(); |
| 197 | } |
| 198 | |
| 199 | // behavior when key is pressed. |
| 200 | void UIComboBox::OnKeyDown(int key) { |
nothing calls this directly
no test coverage detected