Skip to content

Commit 26fc180

Browse files
committed
Add method for inserting ComboBox item
void uiComboboxInsertAt(uiComboBox *c, int n, const char *text) * Unix: gtk_combo_box_insert * Windows: CB_INSERTSTRING * Darwin: NSArrayController.insert
1 parent d78dc94 commit 26fc180

5 files changed

Lines changed: 33 additions & 0 deletions

File tree

darwin/combobox.m

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,11 @@ void uiComboboxAppend(uiCombobox *c, const char *text)
8181
[c->pbac addObject:uiprivToNSString(text)];
8282
}
8383

84+
void uiComboboxInsertAt(uiCombobox *c, int n, const char *text)
85+
{
86+
[c->pbac insert:uiprivToNSString(text) atArrangedObjectIndex:n]
87+
}
88+
8489
void uiComboboxDelete(uiCombobox *c, int n)
8590
{
8691
[c->pb removeItemAtIndex:n];

test/page4.c

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,11 @@ static void appendCBRB(uiButton *b, void *data)
3939
uiRadioButtonsAppend(rb, "New Item");
4040
}
4141

42+
static void insertCB(uiButton *b, void *data)
43+
{
44+
uiComboboxInsertAt(cbox, 0, "Inserted item");
45+
}
46+
4247
static void deleteCB(uiButton *b, void *data)
4348
{
4449
uiComboboxDelete(cbox, 0);
@@ -157,6 +162,9 @@ uiBox *makePage4(void)
157162
b = uiNewButton("Append");
158163
uiButtonOnClicked(b, appendCBRB, NULL);
159164
uiBoxAppend(hbox, uiControl(b), 0);
165+
b = uiNewButton("Insert");
166+
uiButtonOnClicked(b, insertCB, NULL);
167+
uiBoxAppend(hbox, uiControl(b), 0);
160168
b = uiNewButton("Delete");
161169
uiButtonOnClicked(b, deleteCB, NULL);
162170
uiBoxAppend(hbox, uiControl(b), 0);

ui.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -226,6 +226,7 @@ _UI_EXTERN uiSeparator *uiNewVerticalSeparator(void);
226226
typedef struct uiCombobox uiCombobox;
227227
#define uiCombobox(this) ((uiCombobox *) (this))
228228
_UI_EXTERN void uiComboboxAppend(uiCombobox *c, const char *text);
229+
_UI_EXTERN void uiComboboxInsertAt(uiCombobox *c, int n, const char *text);
229230
_UI_EXTERN void uiComboboxDelete(uiCombobox *c, int n);
230231
_UI_EXTERN void uiComboboxClear(uiCombobox *c);
231232
_UI_EXTERN int uiComboboxSelected(uiCombobox *c);

unix/combobox.c

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,11 @@ void uiComboboxAppend(uiCombobox *c, const char *text)
3030
gtk_combo_box_text_append(c->comboboxText, NULL, text);
3131
}
3232

33+
void uiComboboxInsertAt(uiCombobox *c, int n, const char *text)
34+
{
35+
gtk_combo_box_text_insert(c->comboboxText, n, NULL, text);
36+
}
37+
3338
void uiComboboxDelete(uiCombobox *c, int n)
3439
{
3540
gtk_combo_box_text_remove(c->comboboxText, n);

windows/combobox.cpp

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,20 @@ void uiComboboxAppend(uiCombobox *c, const char *text)
6969
uiprivFree(wtext);
7070
}
7171

72+
void uiComboboxInsertAt(uiCombobox *c, int n, const char *text)
73+
{
74+
WCHAR *wtext;
75+
LRESULT res;
76+
77+
wtext = toUTF16(text);
78+
res = SendMessageW(c->hwnd, CB_INSERTSTRING, (WPARAM)n, (LPARAM) wtext);
79+
if (res == (LRESULT) CB_ERR)
80+
logLastError(L"error inserting item to uiCombobox");
81+
else if (res == (LRESULT) CB_ERRSPACE)
82+
logLastError(L"memory exhausted inserting item to uiCombobox");
83+
uiprivFree(wtext);
84+
}
85+
7286
void uiComboboxDelete(uiCombobox *c, int n)
7387
{
7488
LRESULT res;

0 commit comments

Comments
 (0)