Index: haiku/src/apps/mail/MailWindow.cpp =================================================================== --- haiku/src/apps/mail/MailWindow.cpp (revision 40178) +++ haiku/src/apps/mail/MailWindow.cpp (working copy) @@ -1289,26 +1289,38 @@ + strlen(str) + 1); BVolumeRoster volumeRoster; BVolume volume; - volumeRoster.GetBootVolume(&volume); + //volumeRoster.GetBootVolume(&volume); BQuery query; - query.SetVolume(&volume); - sprintf(arg, "META:email=%s", str); - query.SetPredicate(arg); - query.Fetch(); - + sprintf(arg, "META:email==%s", str); BEntry entry; - if (query.GetNextEntry(&entry) == B_NO_ERROR) { - BMessenger tracker("application/x-vnd.Be-TRAK"); - if (tracker.IsValid()) { - entry_ref ref; - entry.GetRef(&ref); + bool foundEntry = false; + + while (!foundEntry && volumeRoster.GetNextVolume(&volume) == B_NO_ERROR) { + if (!volume.KnowsQuery()) + continue; + + query.SetVolume(&volume); + query.SetPredicate(arg); + query.Fetch(); - BMessage open(B_REFS_RECEIVED); - open.AddRef("refs", &ref); - tracker.SendMessage(&open); + if (query.GetNextEntry(&entry) == B_NO_ERROR) { + BMessenger tracker("application/x-vnd.Be-TRAK"); + if (tracker.IsValid()) { + entry_ref ref; + entry.GetRef(&ref); + + BMessage open(B_REFS_RECEIVED); + open.AddRef("refs", &ref); + tracker.SendMessage(&open); + foundEntry = true; + } } - } else { + + query.Clear(); + } + + if (!foundEntry) { sprintf(arg, "META:email %s", str); status_t result = be_roster->Launch("application/x-person", 1, &arg); @@ -1319,6 +1331,7 @@ "supports the 'Person' data type."), B_TRANSLATE("OK")))->Go(); } + free(arg); } break;