Small cleanup, added a TODO comment.

git-svn-id: file:///srv/svn/repos/haiku/trunk/current@10547 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Stefano Ceccherini
2004-12-30 09:42:46 +00:00
parent a5e772c9c2
commit ddd7b87d8e
+30 -25
View File
@@ -124,6 +124,7 @@ BOptionPopUp::GetOptionAt(int32 index, const char **outName, int32 *outValue)
result = true; result = true;
} }
} }
return result; return result;
} }
@@ -167,29 +168,30 @@ status_t
BOptionPopUp::AddOptionAt(const char *name, int32 value, int32 index) BOptionPopUp::AddOptionAt(const char *name, int32 value, int32 index)
{ {
BMenu *menu = _mField->Menu(); BMenu *menu = _mField->Menu();
if (menu != NULL) { if (menu == NULL)
int32 numItems = menu->CountItems(); return B_ERROR;
if (index < 0 || index > numItems)
return B_BAD_VALUE; int32 numItems = menu->CountItems();
if (index < 0 || index > numItems)
BMessage *message = MakeValueMessage(value); return B_BAD_VALUE;
if (message == NULL)
return B_ERROR; // TODO: Should return B_NO_MEMORY instead ? BMessage *message = MakeValueMessage(value);
if (message == NULL)
BMenuItem *newItem = new BMenuItem(name, message); return B_ERROR; // TODO: Should return B_NO_MEMORY instead ?
if (newItem == NULL) {
delete message; BMenuItem *newItem = new BMenuItem(name, message);
return B_ERROR; // TODO: same as above if (newItem == NULL) {
} delete message;
menu->AddItem(newItem, index); return B_ERROR; // TODO: same as above
// We didnt' have any items before, so select the newly added one
if (numItems == 0)
SetValue(value);
return B_OK;
} }
return B_ERROR; menu->AddItem(newItem, index);
// We didnt' have any items before, so select the newly added one
if (numItems == 0)
SetValue(value);
return B_OK;
} }
@@ -238,14 +240,16 @@ BOptionPopUp::SetValue(int32 value)
{ {
BControl::SetValue(value); BControl::SetValue(value);
BMenu *menu = _mField->Menu(); BMenu *menu = _mField->Menu();
if (menu == NULL)
return;
int32 numItems = menu->CountItems(); int32 numItems = menu->CountItems();
for (int32 i = 0; i < numItems; i++) { for (int32 i = 0; i < numItems; i++) {
BMenuItem *item = menu->ItemAt(i); BMenuItem *item = menu->ItemAt(i);
if (item && item->Message()) { if (item && item->Message()) {
int32 val; int32 itemValue;
item->Message()->FindInt32("be:value", &val); item->Message()->FindInt32("be:value", &itemValue);
if (val == value) { if (itemValue == value) {
item->SetMarked(true); item->SetMarked(true);
#if BEHAVE_LIKE_R5 #if BEHAVE_LIKE_R5
@@ -293,6 +297,7 @@ BOptionPopUp::GetPreferredSize(float *width, float *height)
// Iterate over all the entries in the control, // Iterate over all the entries in the control,
// and take the maximum width. // and take the maximum width.
// TODO: Should we call BMenuField::GetPreferredSize() instead ?
int32 numItems = menu->CountItems(); int32 numItems = menu->CountItems();
for (int32 i = 0; i < numItems; i++) { for (int32 i = 0; i < numItems; i++) {
BMenuItem *item = menu->ItemAt(i); BMenuItem *item = menu->ItemAt(i);