diff --git a/src/net/java/sip/communicator/impl/gui/main/chat/ChatConversationPanel.java b/src/net/java/sip/communicator/impl/gui/main/chat/ChatConversationPanel.java
index 3ec57faa2..3097ed4ec 100755
--- a/src/net/java/sip/communicator/impl/gui/main/chat/ChatConversationPanel.java
+++ b/src/net/java/sip/communicator/impl/gui/main/chat/ChatConversationPanel.java
@@ -1772,4 +1772,15 @@ private static String getContactAvatar(
return GuiActivator.getResources().getImageURL(
"service.gui.DEFAULT_USER_PHOTO_SMALL").toString();
}
+
+ /**
+ * Releases the resources allocated by this instance throughout its lifetime
+ * and prepares it for garbage collection.
+ */
+ public void dispose()
+ {
+ super.dispose();
+
+ clear();
+ }
}
\ No newline at end of file
diff --git a/src/net/java/sip/communicator/impl/gui/main/chat/ChatPanel.java b/src/net/java/sip/communicator/impl/gui/main/chat/ChatPanel.java
index d39b7a0f1..0633c2cdc 100644
--- a/src/net/java/sip/communicator/impl/gui/main/chat/ChatPanel.java
+++ b/src/net/java/sip/communicator/impl/gui/main/chat/ChatPanel.java
@@ -906,7 +906,7 @@ private void appendChatMessage(ChatMessage chatMessage)
* Passes the message to the contained ChatConversationPanel
* for processing and replaces the specified message with this one.
*
- * @param chatMessage The message used as a correction.
+ * @param message The message used as a correction.
*/
private void applyMessageCorrection(ChatMessage message)
{
diff --git a/src/net/java/sip/communicator/impl/gui/main/contactlist/UIFilterQuery.java b/src/net/java/sip/communicator/impl/gui/main/contactlist/UIFilterQuery.java
index d4072f480..20f38d0ad 100644
--- a/src/net/java/sip/communicator/impl/gui/main/contactlist/UIFilterQuery.java
+++ b/src/net/java/sip/communicator/impl/gui/main/contactlist/UIFilterQuery.java
@@ -69,6 +69,15 @@ public class UIFilterQuery
*/
private final ContactList contactList;
+ /**
+ * Map of the created show more contacts for a query.
+ * We stored them, so we can remove them (sometimes those
+ * contacts are not added to UI, so they are not removed and
+ * not cleared)
+ */
+ private final Map showMoreContactMap
+ = new HashMap();
+
/**
* Creates an instance of UIFilterQuery by specifying the parent
* ContactList.
@@ -299,6 +308,14 @@ private void cancelQuery(Object query)
contactQuery.removeContactQueryListener(contactList);
if (!isSucceeded && contactQuery.getQueryResults().size() > 0)
isSucceeded = true;
+
+ // removes ShowMoreContact and clears it
+ ShowMoreContact showMoreContact
+ = showMoreContactMap.remove(contactQuery);
+ if(showMoreContact != null)
+ {
+ showMoreContact.setContactNode(null);
+ }
}
else if (query instanceof MetaContactQuery)
{
@@ -343,6 +360,7 @@ private void contactReceived(ContactQuery query, SourceContact contact)
ShowMoreContact moreInfoContact
= new ShowMoreContact(query, queryResults, getMaxResultShown());
+ showMoreContactMap.put(query, moreInfoContact);
ContactSourceService contactSource = query.getContactSource();
diff --git a/src/net/java/sip/communicator/impl/gui/main/contactlist/contactsource/ShowMoreContact.java b/src/net/java/sip/communicator/impl/gui/main/contactlist/contactsource/ShowMoreContact.java
index 0ce9f0f7b..0c1635752 100644
--- a/src/net/java/sip/communicator/impl/gui/main/contactlist/contactsource/ShowMoreContact.java
+++ b/src/net/java/sip/communicator/impl/gui/main/contactlist/contactsource/ShowMoreContact.java
@@ -219,6 +219,13 @@ public ContactNode getContactNode()
public void setContactNode(ContactNode contactNode)
{
this.contactNode = contactNode;
+
+ // contactNode is null, when the the ui contact is removed/cleared
+ // we must free resources
+ if(contactNode == null)
+ {
+ GuiActivator.getContactList().removeContactListListener(this);
+ }
}
/**
diff --git a/src/net/java/sip/communicator/plugin/generalconfig/autoaway/AutoAwayConfigurationPanel.java b/src/net/java/sip/communicator/plugin/generalconfig/autoaway/AutoAwayConfigurationPanel.java
index 2e61953c8..3c5a144d4 100644
--- a/src/net/java/sip/communicator/plugin/generalconfig/autoaway/AutoAwayConfigurationPanel.java
+++ b/src/net/java/sip/communicator/plugin/generalconfig/autoaway/AutoAwayConfigurationPanel.java
@@ -11,6 +11,7 @@
import javax.swing.*;
import javax.swing.event.*;
+import javax.swing.text.*;
import net.java.sip.communicator.plugin.generalconfig.*;
import net.java.sip.communicator.util.swing.*;
@@ -102,6 +103,15 @@ public void stateChanged(ChangeEvent e)
"plugin.autoaway.AWAY_MINUTES")));
timerPanel.add(timer);
+ try
+ {
+ // changes that are valid will be saved immediately while typing
+ ((DefaultFormatter)((JSpinner.DefaultEditor)timer.getEditor())
+ .getTextField().getFormatter()).setCommitsOnValidEdit(true);
+ }
+ catch(Throwable t)
+ {}
+
JPanel mainPanel = new TransparentPanel(new BorderLayout(5, 5));
mainPanel.add(enable, BorderLayout.NORTH);