From 433cc8bc0f5a79ce08eeb38534d2756ed8ee416f Mon Sep 17 00:00:00 2001 From: Rene Gollent Date: Mon, 10 Nov 2008 04:54:47 +0000 Subject: [PATCH] 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 --- src/kits/interface/Shelf.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/kits/interface/Shelf.cpp b/src/kits/interface/Shelf.cpp index 7572867c69..8baa144b61 100644 --- a/src/kits/interface/Shelf.cpp +++ b/src/kits/interface/Shelf.cpp @@ -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; }