aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/net/java/sip/communicator/impl/gui/main/contactlist/PresenceFilter.java14
-rw-r--r--src/net/java/sip/communicator/impl/gui/main/contactlist/TreeContactList.java15
-rw-r--r--src/net/java/sip/communicator/impl/gui/main/contactlist/contactsource/MetaContactListSource.java13
3 files changed, 30 insertions, 12 deletions
diff --git a/src/net/java/sip/communicator/impl/gui/main/contactlist/PresenceFilter.java b/src/net/java/sip/communicator/impl/gui/main/contactlist/PresenceFilter.java
index 45118de..76abdc9 100644
--- a/src/net/java/sip/communicator/impl/gui/main/contactlist/PresenceFilter.java
+++ b/src/net/java/sip/communicator/impl/gui/main/contactlist/PresenceFilter.java
@@ -245,8 +245,18 @@ public class PresenceFilter
if (isMatching(subgroup))
{
- GuiActivator.getContactList().addGroup(
- MetaContactListSource.createUIGroup(subgroup), true);
+ UIGroup uiGroup;
+ synchronized(subgroup)
+ {
+ uiGroup = MetaContactListSource
+ .getUIGroup(subgroup);
+
+ if (uiGroup == null)
+ uiGroup = MetaContactListSource
+ .createUIGroup(subgroup);
+ }
+
+ GuiActivator.getContactList().addGroup(uiGroup, true);
addMatching(subgroup, query, resultCount);
}
diff --git a/src/net/java/sip/communicator/impl/gui/main/contactlist/TreeContactList.java b/src/net/java/sip/communicator/impl/gui/main/contactlist/TreeContactList.java
index e238658..bc8ad23 100644
--- a/src/net/java/sip/communicator/impl/gui/main/contactlist/TreeContactList.java
+++ b/src/net/java/sip/communicator/impl/gui/main/contactlist/TreeContactList.java
@@ -567,12 +567,17 @@ public class TreeContactList
return;
}
- GroupNode parentNode = treeModel.getRoot();
+ GroupNode groupNode = group.getGroupNode();
+
+ if(groupNode == null)
+ {
+ GroupNode parentNode = treeModel.getRoot();
- if (isSorted)
- parentNode.sortedAddContactGroup(group);
- else
- parentNode.addContactGroup(group);
+ if (isSorted)
+ parentNode.sortedAddContactGroup(group);
+ else
+ parentNode.addContactGroup(group);
+ }
expandGroup(treeModel.getRoot());
}
diff --git a/src/net/java/sip/communicator/impl/gui/main/contactlist/contactsource/MetaContactListSource.java b/src/net/java/sip/communicator/impl/gui/main/contactlist/contactsource/MetaContactListSource.java
index c631573..fd7cd84 100644
--- a/src/net/java/sip/communicator/impl/gui/main/contactlist/contactsource/MetaContactListSource.java
+++ b/src/net/java/sip/communicator/impl/gui/main/contactlist/contactsource/MetaContactListSource.java
@@ -762,12 +762,15 @@ public class MetaContactListSource
if (!MetaContactListSource
.isRootGroup(parentGroup))
{
- uiGroup = MetaContactListSource
- .getUIGroup(parentGroup);
-
- if (uiGroup == null)
+ synchronized(parentGroup)
+ {
uiGroup = MetaContactListSource
- .createUIGroup(parentGroup);
+ .getUIGroup(parentGroup);
+
+ if (uiGroup == null)
+ uiGroup = MetaContactListSource
+ .createUIGroup(parentGroup);
+ }
}
GuiActivator.getContactList()