]> git.ipfire.org Git - thirdparty/newt.git/commitdiff
add newtRadioSetCurrent function
authorThomas Jarosch <thomas.jarosch@intra2net.com>
Thu, 17 Sep 2009 13:12:02 +0000 (15:12 +0200)
committerMiroslav Lichvar <mlichvar@redhat.com>
Thu, 17 Sep 2009 13:18:44 +0000 (15:18 +0200)
checkbox.c
newt.0.52.ver
newt.h

index 198d66227cc623fa947460e46c373a3ac01192f1..00ef286bfa10bb8c97ee0994d033062f6475d951 100644 (file)
@@ -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);
-}
index df7c4d7a6d2dd9fcb47a35eb7dca57cda9f09a05..bad81e87aa5cb336e09841e19dd02daaf36b164a 100644 (file)
@@ -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 4fcd047859aef679a3bdbcf919097519d6c2b660..3111a21a57c7611d2a2cab525c1d6cf1a0904f3d 100644 (file)
--- 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);