archive deep when needed, restore menu items
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18054 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -282,11 +282,11 @@ BMenu::Archive(BMessage *data, bool deep) const
|
|||||||
if (err == B_OK)
|
if (err == B_OK)
|
||||||
err = data->AddFloat("_maxwidth", fMaxContentWidth);
|
err = data->AddFloat("_maxwidth", fMaxContentWidth);
|
||||||
if (err == B_OK && deep) {
|
if (err == B_OK && deep) {
|
||||||
int32 count = CountItems();
|
BMenuItem *item = NULL;
|
||||||
for (int index=0; index<count; index++) {
|
int32 index = 0;
|
||||||
BMenuItem *item = ItemAt(index);
|
while ((item = ItemAt(index++)) != NULL) {
|
||||||
BMessage itemData;
|
BMessage itemData;
|
||||||
item->Archive(&itemData);
|
item->Archive(&itemData, deep);
|
||||||
err = data->AddMessage("_items", &itemData);
|
err = data->AddMessage("_items", &itemData);
|
||||||
if (err != B_OK)
|
if (err != B_OK)
|
||||||
break;
|
break;
|
||||||
@@ -1170,6 +1170,13 @@ BMenu::InitData(BMessage *data)
|
|||||||
|
|
||||||
data->FindBool("_dyn_label", &fDynamicName);
|
data->FindBool("_dyn_label", &fDynamicName);
|
||||||
data->FindFloat("_maxwidth", &fMaxContentWidth);
|
data->FindFloat("_maxwidth", &fMaxContentWidth);
|
||||||
|
|
||||||
|
BMessage msg;
|
||||||
|
for (int32 i = 0; data->FindMessage("_items", i, &msg) == B_OK; i++) {
|
||||||
|
BArchivable *object = instantiate_object(&msg);
|
||||||
|
if (BMenuItem *item = dynamic_cast<BMenuItem *>(object))
|
||||||
|
AddItem(item);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user