Skip to content

Commit d78dc94

Browse files
committed
Add method for clearing ComboBox items
void uiComboboxClear(uiCombobox *c) * Unix: gtk_combo_box_text_remove_all * Windows: CB_RESETCONTENT * Darwin: NSPopUpButton.removeAllItems
1 parent d4ecc16 commit d78dc94

5 files changed

Lines changed: 28 additions & 0 deletions

File tree

darwin/combobox.m

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,11 @@ void uiComboboxDelete(uiCombobox *c, int n)
8686
[c->pb removeItemAtIndex:n];
8787
}
8888

89+
void uiComboboxClear(uiCombobox *c)
90+
{
91+
[c->pb removeAllItems];
92+
}
93+
8994
int uiComboboxSelected(uiCombobox *c)
9095
{
9196
return [c->pb indexOfSelectedItem];

test/page4.c

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,11 @@ static void deleteCB(uiButton *b, void *data)
4444
uiComboboxDelete(cbox, 0);
4545
}
4646

47+
static void clearCB(uiButton *b, void *data)
48+
{
49+
uiComboboxClear(cbox);
50+
}
51+
4752
static void onCBChanged(uiCombobox *c, void *data)
4853
{
4954
printf("%s combobox changed to %d\n",
@@ -155,6 +160,9 @@ uiBox *makePage4(void)
155160
b = uiNewButton("Delete");
156161
uiButtonOnClicked(b, deleteCB, NULL);
157162
uiBoxAppend(hbox, uiControl(b), 0);
163+
b = uiNewButton("Clear");
164+
uiButtonOnClicked(b, clearCB, NULL);
165+
uiBoxAppend(hbox, uiControl(b), 0);
158166
b = uiNewButton("Second");
159167
uiButtonOnClicked(b, selectSecond, NULL);
160168
uiBoxAppend(hbox, uiControl(b), 0);

ui.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -227,6 +227,7 @@ typedef struct uiCombobox uiCombobox;
227227
#define uiCombobox(this) ((uiCombobox *) (this))
228228
_UI_EXTERN void uiComboboxAppend(uiCombobox *c, const char *text);
229229
_UI_EXTERN void uiComboboxDelete(uiCombobox *c, int n);
230+
_UI_EXTERN void uiComboboxClear(uiCombobox *c);
230231
_UI_EXTERN int uiComboboxSelected(uiCombobox *c);
231232
_UI_EXTERN void uiComboboxSetSelected(uiCombobox *c, int n);
232233
_UI_EXTERN void uiComboboxOnSelected(uiCombobox *c, void (*f)(uiCombobox *c, void *data), void *data);

unix/combobox.c

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,11 @@ void uiComboboxDelete(uiCombobox *c, int n)
3535
gtk_combo_box_text_remove(c->comboboxText, n);
3636
}
3737

38+
void uiComboboxClear(uiCombobox *c)
39+
{
40+
gtk_combo_box_text_remove_all(c->comboboxText);
41+
}
42+
3843
int uiComboboxSelected(uiCombobox *c)
3944
{
4045
return gtk_combo_box_get_active(c->combobox);

windows/combobox.cpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,15 @@ void uiComboboxDelete(uiCombobox *c, int n)
7878
logLastError(L"error removing item from uiCombobox");
7979
}
8080

81+
void uiComboboxClear(uiCombobox *c)
82+
{
83+
LRESULT res;
84+
85+
res = SendMessage(c->hwnd, CB_RESETCONTENT, 0, 0);
86+
if (res == (LRESULT) CB_ERR)
87+
logLastError(L"error clearing items from uiCombobox");
88+
}
89+
8190
int uiComboboxSelected(uiCombobox *c)
8291
{
8392
LRESULT n;

0 commit comments

Comments
 (0)