From ef3f0be637d42c8c5ba104796d2baac7b1d54ec8 Mon Sep 17 00:00:00 2001 From: Thomas Jarosch Date: Thu, 17 Sep 2009 15:12:02 +0200 Subject: [PATCH] add newtRadioSetCurrent function --- checkbox.c | 52 +++++++++++++++++++++++++-------------------------- newt.0.52.ver | 5 +++++ newt.h | 1 + 3 files changed, 31 insertions(+), 27 deletions(-) diff --git a/checkbox.c b/checkbox.c index 198d662..00ef286 100644 --- a/checkbox.c +++ b/checkbox.c @@ -20,8 +20,6 @@ struct checkbox { int hasFocus; }; -static void makeActive(newtComponent co); - static void cbDraw(newtComponent c); static void cbDestroy(newtComponent co); struct eventResult cbEvent(newtComponent co, struct event ev); @@ -76,6 +74,29 @@ newtComponent newtRadioGetCurrent(newtComponent setMember) { return setMember; } +void newtRadioSetCurrent(newtComponent setMember) { + struct checkbox * cb = setMember->data; + struct checkbox * rb; + newtComponent curr; + + /* find the one that's turned on */ + curr = cb->lastButton; + rb = curr->data; + while (curr && rb->value == rb->seq[0]) { + curr = rb->prevButton; + if (curr) rb = curr->data; + } + if (curr) { + rb->value = rb->seq[0]; + cbDraw(curr); + } + cb->value = cb->seq[1]; + cbDraw(setMember); + + if (setMember->callback) + setMember->callback(setMember, setMember->callbackData); +} + char newtCheckboxGetValue(newtComponent co) { struct checkbox * cb = co->data; @@ -232,7 +253,7 @@ struct eventResult cbEvent(newtComponent co, struct event ev) { case EV_KEYPRESS: if (ev.u.key == ' ') { if (cb->type == RADIO) { - makeActive(co); + newtRadioSetCurrent(co); } else if (cb->type == CHECK) { cur = strchr(cb->seq, *cb->result); if (!cur) @@ -264,7 +285,7 @@ struct eventResult cbEvent(newtComponent co, struct event ev) { case EV_MOUSE: if (ev.u.mouse.type == MOUSE_BUTTON_DOWN) { if (cb->type == RADIO) { - makeActive(co); + newtRadioSetCurrent(co); } else if (cb->type == CHECK) { cur = strchr(cb->seq, *cb->result); if (!cur) @@ -288,26 +309,3 @@ struct eventResult cbEvent(newtComponent co, struct event ev) { return er; } - -static void makeActive(newtComponent co) { - struct checkbox * cb = co->data; - struct checkbox * rb; - newtComponent curr; - - /* find the one that's turned off */ - curr = cb->lastButton; - rb = curr->data; - while (curr && rb->value == rb->seq[0]) { - curr = rb->prevButton; - if (curr) rb = curr->data; - } - if (curr) { - rb->value = rb->seq[0]; - cbDraw(curr); - } - cb->value = cb->seq[1]; - cbDraw(co); - - if (co->callback) - co->callback(co, co->callbackData); -} diff --git a/newt.0.52.ver b/newt.0.52.ver index df7c4d7..bad81e8 100644 --- a/newt.0.52.ver +++ b/newt.0.52.ver @@ -147,3 +147,8 @@ NEWT_0.52.9 { newtComponentAddDestroyCallback; newtComponentDestroy; } NEWT_0.52.6; + +NEWT_0.52.11 { + global: + newtRadioSetCurrent; +} NEWT_0.52.9; diff --git a/newt.h b/newt.h index 4fcd047..3111a21 100644 --- a/newt.h +++ b/newt.h @@ -150,6 +150,7 @@ void newtCheckboxSetFlags(newtComponent co, int flags, enum newtFlagsSense sense newtComponent newtRadiobutton(int left, int top, const char * text, int isDefault, newtComponent prevButton); newtComponent newtRadioGetCurrent(newtComponent setMember); +void newtRadioSetCurrent(newtComponent setMember); newtComponent newtListitem(int left, int top, const char * text, int isDefault, newtComponent prevItem, const void * data, int flags); void newtListitemSet(newtComponent co, const char * text); -- 2.47.2