1 | Index: haiku/src/apps/mail/MailWindow.cpp
|
---|
2 | ===================================================================
|
---|
3 | --- haiku/src/apps/mail/MailWindow.cpp (revision 40178)
|
---|
4 | +++ haiku/src/apps/mail/MailWindow.cpp (working copy)
|
---|
5 | @@ -1289,26 +1289,38 @@
|
---|
6 | + strlen(str) + 1);
|
---|
7 | BVolumeRoster volumeRoster;
|
---|
8 | BVolume volume;
|
---|
9 | - volumeRoster.GetBootVolume(&volume);
|
---|
10 | + //volumeRoster.GetBootVolume(&volume);
|
---|
11 |
|
---|
12 | BQuery query;
|
---|
13 | - query.SetVolume(&volume);
|
---|
14 | - sprintf(arg, "META:email=%s", str);
|
---|
15 | - query.SetPredicate(arg);
|
---|
16 | - query.Fetch();
|
---|
17 | -
|
---|
18 | + sprintf(arg, "META:email==%s", str);
|
---|
19 | BEntry entry;
|
---|
20 | - if (query.GetNextEntry(&entry) == B_NO_ERROR) {
|
---|
21 | - BMessenger tracker("application/x-vnd.Be-TRAK");
|
---|
22 | - if (tracker.IsValid()) {
|
---|
23 | - entry_ref ref;
|
---|
24 | - entry.GetRef(&ref);
|
---|
25 | + bool foundEntry = false;
|
---|
26 | +
|
---|
27 | + while (!foundEntry && volumeRoster.GetNextVolume(&volume) == B_NO_ERROR) {
|
---|
28 | + if (!volume.KnowsQuery())
|
---|
29 | + continue;
|
---|
30 | +
|
---|
31 | + query.SetVolume(&volume);
|
---|
32 | + query.SetPredicate(arg);
|
---|
33 | + query.Fetch();
|
---|
34 |
|
---|
35 | - BMessage open(B_REFS_RECEIVED);
|
---|
36 | - open.AddRef("refs", &ref);
|
---|
37 | - tracker.SendMessage(&open);
|
---|
38 | + if (query.GetNextEntry(&entry) == B_NO_ERROR) {
|
---|
39 | + BMessenger tracker("application/x-vnd.Be-TRAK");
|
---|
40 | + if (tracker.IsValid()) {
|
---|
41 | + entry_ref ref;
|
---|
42 | + entry.GetRef(&ref);
|
---|
43 | +
|
---|
44 | + BMessage open(B_REFS_RECEIVED);
|
---|
45 | + open.AddRef("refs", &ref);
|
---|
46 | + tracker.SendMessage(&open);
|
---|
47 | + foundEntry = true;
|
---|
48 | + }
|
---|
49 | }
|
---|
50 | - } else {
|
---|
51 | +
|
---|
52 | + query.Clear();
|
---|
53 | + }
|
---|
54 | +
|
---|
55 | + if (!foundEntry) {
|
---|
56 | sprintf(arg, "META:email %s", str);
|
---|
57 | status_t result = be_roster->Launch("application/x-person",
|
---|
58 | 1, &arg);
|
---|
59 | @@ -1319,6 +1331,7 @@
|
---|
60 | "supports the 'Person' data type."),
|
---|
61 | B_TRANSLATE("OK")))->Go();
|
---|
62 | }
|
---|
63 | +
|
---|
64 | free(arg);
|
---|
65 | }
|
---|
66 | break;
|
---|