Add method for clearing ComboBox items

void uiComboboxClear(uiCombobox *c)
* Unix: gtk_combo_box_text_remove_all
* Windows: CB_RESETCONTENT
* Darwin: NSPopUpButton.removeAllItems
This commit is contained in:
Trond Arne Bråthen 2019-05-30 15:44:15 +02:00
parent d4ecc16dd7
commit d78dc94a48
No known key found for this signature in database
GPG Key ID: C41F64D7C629C890
5 changed files with 28 additions and 0 deletions

View File

@ -86,6 +86,11 @@ void uiComboboxDelete(uiCombobox *c, int n)
[c->pb removeItemAtIndex:n]; [c->pb removeItemAtIndex:n];
} }
void uiComboboxClear(uiCombobox *c)
{
[c->pb removeAllItems];
}
int uiComboboxSelected(uiCombobox *c) int uiComboboxSelected(uiCombobox *c)
{ {
return [c->pb indexOfSelectedItem]; return [c->pb indexOfSelectedItem];

View File

@ -44,6 +44,11 @@ static void deleteCB(uiButton *b, void *data)
uiComboboxDelete(cbox, 0); uiComboboxDelete(cbox, 0);
} }
static void clearCB(uiButton *b, void *data)
{
uiComboboxClear(cbox);
}
static void onCBChanged(uiCombobox *c, void *data) static void onCBChanged(uiCombobox *c, void *data)
{ {
printf("%s combobox changed to %d\n", printf("%s combobox changed to %d\n",
@ -155,6 +160,9 @@ uiBox *makePage4(void)
b = uiNewButton("Delete"); b = uiNewButton("Delete");
uiButtonOnClicked(b, deleteCB, NULL); uiButtonOnClicked(b, deleteCB, NULL);
uiBoxAppend(hbox, uiControl(b), 0); uiBoxAppend(hbox, uiControl(b), 0);
b = uiNewButton("Clear");
uiButtonOnClicked(b, clearCB, NULL);
uiBoxAppend(hbox, uiControl(b), 0);
b = uiNewButton("Second"); b = uiNewButton("Second");
uiButtonOnClicked(b, selectSecond, NULL); uiButtonOnClicked(b, selectSecond, NULL);
uiBoxAppend(hbox, uiControl(b), 0); uiBoxAppend(hbox, uiControl(b), 0);

1
ui.h
View File

@ -227,6 +227,7 @@ typedef struct uiCombobox uiCombobox;
#define uiCombobox(this) ((uiCombobox *) (this)) #define uiCombobox(this) ((uiCombobox *) (this))
_UI_EXTERN void uiComboboxAppend(uiCombobox *c, const char *text); _UI_EXTERN void uiComboboxAppend(uiCombobox *c, const char *text);
_UI_EXTERN void uiComboboxDelete(uiCombobox *c, int n); _UI_EXTERN void uiComboboxDelete(uiCombobox *c, int n);
_UI_EXTERN void uiComboboxClear(uiCombobox *c);
_UI_EXTERN int uiComboboxSelected(uiCombobox *c); _UI_EXTERN int uiComboboxSelected(uiCombobox *c);
_UI_EXTERN void uiComboboxSetSelected(uiCombobox *c, int n); _UI_EXTERN void uiComboboxSetSelected(uiCombobox *c, int n);
_UI_EXTERN void uiComboboxOnSelected(uiCombobox *c, void (*f)(uiCombobox *c, void *data), void *data); _UI_EXTERN void uiComboboxOnSelected(uiCombobox *c, void (*f)(uiCombobox *c, void *data), void *data);

View File

@ -35,6 +35,11 @@ void uiComboboxDelete(uiCombobox *c, int n)
gtk_combo_box_text_remove(c->comboboxText, n); gtk_combo_box_text_remove(c->comboboxText, n);
} }
void uiComboboxClear(uiCombobox *c)
{
gtk_combo_box_text_remove_all(c->comboboxText);
}
int uiComboboxSelected(uiCombobox *c) int uiComboboxSelected(uiCombobox *c)
{ {
return gtk_combo_box_get_active(c->combobox); return gtk_combo_box_get_active(c->combobox);

View File

@ -78,6 +78,15 @@ void uiComboboxDelete(uiCombobox *c, int n)
logLastError(L"error removing item from uiCombobox"); logLastError(L"error removing item from uiCombobox");
} }
void uiComboboxClear(uiCombobox *c)
{
LRESULT res;
res = SendMessage(c->hwnd, CB_RESETCONTENT, 0, 0);
if (res == (LRESULT) CB_ERR)
logLastError(L"error clearing items from uiCombobox");
}
int uiComboboxSelected(uiCombobox *c) int uiComboboxSelected(uiCombobox *c)
{ {
LRESULT n; LRESULT n;