add item frames to BMenu archive
add class names to BMenuItem archives git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18069 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -291,7 +291,7 @@ BMenu::Archive(BMessage *data, bool deep) const
|
|||||||
if (err != B_OK)
|
if (err != B_OK)
|
||||||
break;
|
break;
|
||||||
if (fLayout == B_ITEMS_IN_MATRIX) {
|
if (fLayout == B_ITEMS_IN_MATRIX) {
|
||||||
// TODO Store location of items
|
err = data->AddRect("_i_frames", item->fBounds);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1172,10 +1172,16 @@ BMenu::InitData(BMessage *data)
|
|||||||
data->FindFloat("_maxwidth", &fMaxContentWidth);
|
data->FindFloat("_maxwidth", &fMaxContentWidth);
|
||||||
|
|
||||||
BMessage msg;
|
BMessage msg;
|
||||||
for (int32 i = 0; data->FindMessage("_items", i, &msg) == B_OK; i++) {
|
for (int32 i = 0; data->FindMessage("_items", i, &msg) == B_OK; i++) {
|
||||||
BArchivable *object = instantiate_object(&msg);
|
BArchivable *object = instantiate_object(&msg);
|
||||||
if (BMenuItem *item = dynamic_cast<BMenuItem *>(object))
|
if (BMenuItem *item = dynamic_cast<BMenuItem *>(object)) {
|
||||||
AddItem(item);
|
BRect bounds;
|
||||||
|
if ((fLayout == B_ITEMS_IN_MATRIX)
|
||||||
|
&& (data->FindRect("_i_frames", i, &bounds) == B_OK))
|
||||||
|
AddItem(item, bounds);
|
||||||
|
else
|
||||||
|
AddItem(item);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -179,11 +179,17 @@ BMenuItem::Instantiate(BMessage *data)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
extern const char* B_CLASS_FIELD;
|
||||||
|
|
||||||
|
|
||||||
status_t
|
status_t
|
||||||
BMenuItem::Archive(BMessage *data, bool deep) const
|
BMenuItem::Archive(BMessage *data, bool deep) const
|
||||||
{
|
{
|
||||||
status_t ret = B_OK;
|
status_t ret = B_OK;
|
||||||
if (fLabel)
|
if (!data->HasString(B_CLASS_FIELD))
|
||||||
|
ret = data->AddString(B_CLASS_FIELD, "BMenuItem");
|
||||||
|
|
||||||
|
if (ret == B_OK && fLabel)
|
||||||
ret = data->AddString("_label", Label());
|
ret = data->AddString("_label", Label());
|
||||||
|
|
||||||
if (ret == B_OK && !IsEnabled())
|
if (ret == B_OK && !IsEnabled())
|
||||||
|
|||||||
@@ -33,9 +33,14 @@ BSeparatorItem::~BSeparatorItem()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
extern const char* B_CLASS_FIELD;
|
||||||
|
|
||||||
status_t
|
status_t
|
||||||
BSeparatorItem::Archive(BMessage* archive, bool deep) const
|
BSeparatorItem::Archive(BMessage* archive, bool deep) const
|
||||||
{
|
{
|
||||||
|
if (!archive->HasString(B_CLASS_FIELD))
|
||||||
|
archive->AddString(B_CLASS_FIELD, "BMenuItem");
|
||||||
|
|
||||||
return BMenuItem::Archive(archive, deep);
|
return BMenuItem::Archive(archive, deep);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user