From d78dc94a48455ee2bd8fac4a83a074984e9aea74 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Trond=20Arne=20Br=C3=A5then?= Date: Thu, 30 May 2019 15:44:15 +0200 Subject: [PATCH] Add method for clearing ComboBox items void uiComboboxClear(uiCombobox *c) * Unix: gtk_combo_box_text_remove_all * Windows: CB_RESETCONTENT * Darwin: NSPopUpButton.removeAllItems --- darwin/combobox.m | 5 +++++ test/page4.c | 8 ++++++++ ui.h | 1 + unix/combobox.c | 5 +++++ windows/combobox.cpp | 9 +++++++++ 5 files changed, 28 insertions(+) diff --git a/darwin/combobox.m b/darwin/combobox.m index 4d0da39a..e4c98bdf 100644 --- a/darwin/combobox.m +++ b/darwin/combobox.m @@ -86,6 +86,11 @@ void uiComboboxDelete(uiCombobox *c, int n) [c->pb removeItemAtIndex:n]; } +void uiComboboxClear(uiCombobox *c) +{ + [c->pb removeAllItems]; +} + int uiComboboxSelected(uiCombobox *c) { return [c->pb indexOfSelectedItem]; diff --git a/test/page4.c b/test/page4.c index 38c7d6e4..a4db0454 100644 --- a/test/page4.c +++ b/test/page4.c @@ -44,6 +44,11 @@ static void deleteCB(uiButton *b, void *data) uiComboboxDelete(cbox, 0); } +static void clearCB(uiButton *b, void *data) +{ + uiComboboxClear(cbox); +} + static void onCBChanged(uiCombobox *c, void *data) { printf("%s combobox changed to %d\n", @@ -155,6 +160,9 @@ uiBox *makePage4(void) b = uiNewButton("Delete"); uiButtonOnClicked(b, deleteCB, NULL); uiBoxAppend(hbox, uiControl(b), 0); + b = uiNewButton("Clear"); + uiButtonOnClicked(b, clearCB, NULL); + uiBoxAppend(hbox, uiControl(b), 0); b = uiNewButton("Second"); uiButtonOnClicked(b, selectSecond, NULL); uiBoxAppend(hbox, uiControl(b), 0); diff --git a/ui.h b/ui.h index ae9701d6..f240439f 100644 --- a/ui.h +++ b/ui.h @@ -227,6 +227,7 @@ typedef struct uiCombobox uiCombobox; #define uiCombobox(this) ((uiCombobox *) (this)) _UI_EXTERN void uiComboboxAppend(uiCombobox *c, const char *text); _UI_EXTERN void uiComboboxDelete(uiCombobox *c, int n); +_UI_EXTERN void uiComboboxClear(uiCombobox *c); _UI_EXTERN int uiComboboxSelected(uiCombobox *c); _UI_EXTERN void uiComboboxSetSelected(uiCombobox *c, int n); _UI_EXTERN void uiComboboxOnSelected(uiCombobox *c, void (*f)(uiCombobox *c, void *data), void *data); diff --git a/unix/combobox.c b/unix/combobox.c index 4c6d465f..81df4e48 100644 --- a/unix/combobox.c +++ b/unix/combobox.c @@ -35,6 +35,11 @@ void uiComboboxDelete(uiCombobox *c, int 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) { return gtk_combo_box_get_active(c->combobox); diff --git a/windows/combobox.cpp b/windows/combobox.cpp index 93d0fdf2..3c2b60b4 100644 --- a/windows/combobox.cpp +++ b/windows/combobox.cpp @@ -78,6 +78,15 @@ void uiComboboxDelete(uiCombobox *c, int n) 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) { LRESULT n;