Resolved some more misunderstandings in how this is supposed to work. Ticket #3087 should finally be fixed now.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28588 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Rene Gollent
2008-11-10 04:54:47 +00:00
parent 3b148e533f
commit 433cc8bc0f
+5 -3
View File
@@ -675,6 +675,7 @@ BShelf::ResolveSpecifier(BMessage *msg, int32 index, BMessage *specifier,
BPropertyInfo shelfPropInfo(sShelfPropertyList);
BHandler *target = NULL;
BView *replicant = NULL;
switch (shelfPropInfo.FindMatch(msg, 0, specifier, form, property)) {
case 0:
if (msg->what == B_COUNT_PROPERTIES) {
@@ -682,12 +683,11 @@ BShelf::ResolveSpecifier(BMessage *msg, int32 index, BMessage *specifier,
break;
}
case 1:
if (msg->PopSpecifier() != B_OK ) {
if (msg->PopSpecifier() != B_OK) {
target = this;
break;
}
msg->SetCurrentSpecifier(index);
// fall through
case 2: {
BMessage reply;
status_t err = _GetProperty(specifier, &reply);
@@ -699,7 +699,8 @@ BShelf::ResolveSpecifier(BMessage *msg, int32 index, BMessage *specifier,
ReplicantAt(i, &replicant, &ID, &err);
if (err == B_OK && replicant != NULL) {
return this;
if (index == 0)
return this;
} else {
BMessage replyMsg(B_MESSAGE_NOT_UNDERSTOOD);
replyMsg.AddInt32("error", B_BAD_INDEX);
@@ -707,6 +708,7 @@ BShelf::ResolveSpecifier(BMessage *msg, int32 index, BMessage *specifier,
msg->SendReply(&replyMsg);
}
}
msg->PopSpecifier();
break;
}