diff --git a/src/kits/interface/Menu.cpp b/src/kits/interface/Menu.cpp index 7ae8f90ff4..e63ab35b6e 100644 --- a/src/kits/interface/Menu.cpp +++ b/src/kits/interface/Menu.cpp @@ -1161,7 +1161,9 @@ BMenu::InitData(BMessage *data) if (data != NULL) { data->FindInt32("_layout", (int32 *)&fLayout); data->FindBool("_rsize_to_fit", &fResizeToFit); - data->FindBool("_disable", &fEnabled); + bool disabled; + if (data->FindBool("_disable", &disabled) == B_OK) + fEnabled = !disabled; data->FindBool("_radio", &fRadioMode); bool disableTrigger = false; diff --git a/src/kits/interface/MenuItem.cpp b/src/kits/interface/MenuItem.cpp index 5f79d61e68..c9224fa0b3 100644 --- a/src/kits/interface/MenuItem.cpp +++ b/src/kits/interface/MenuItem.cpp @@ -179,16 +179,11 @@ BMenuItem::Instantiate(BMessage *data) } -extern const char* B_CLASS_FIELD; - - status_t BMenuItem::Archive(BMessage *data, bool deep) const { - status_t ret = B_OK; - if (!data->HasString(B_CLASS_FIELD)) - ret = data->AddString(B_CLASS_FIELD, "BMenuItem"); - + status_t ret = BArchivable::Archive(data, deep); + if (ret == B_OK && fLabel) ret = data->AddString("_label", Label()); diff --git a/src/kits/interface/SeparatorItem.cpp b/src/kits/interface/SeparatorItem.cpp index 8339fe1d68..318bcf6667 100644 --- a/src/kits/interface/SeparatorItem.cpp +++ b/src/kits/interface/SeparatorItem.cpp @@ -33,14 +33,9 @@ BSeparatorItem::~BSeparatorItem() } -extern const char* B_CLASS_FIELD; - status_t BSeparatorItem::Archive(BMessage* archive, bool deep) const { - if (!archive->HasString(B_CLASS_FIELD)) - archive->AddString(B_CLASS_FIELD, "BMenuItem"); - return BMenuItem::Archive(archive, deep); }