diff --git a/src/java/org/jivesoftware/spark/filetransfer/SparkTransferManager.java b/src/java/org/jivesoftware/spark/filetransfer/SparkTransferManager.java index da05475d..19c8371e 100644 --- a/src/java/org/jivesoftware/spark/filetransfer/SparkTransferManager.java +++ b/src/java/org/jivesoftware/spark/filetransfer/SparkTransferManager.java @@ -428,7 +428,6 @@ public class SparkTransferManager { final SwingWorker worker = new SwingWorker() { public Object construct() { try { - Thread.sleep(1000); final Robot robot = new Robot(); Rectangle area = new Rectangle(Toolkit.getDefaultToolkit().getScreenSize()); return robot.createScreenCapture(area); diff --git a/src/java/org/jivesoftware/spark/ui/ContactGroup.java b/src/java/org/jivesoftware/spark/ui/ContactGroup.java index 6fc46cfc..5f7b0eb5 100644 --- a/src/java/org/jivesoftware/spark/ui/ContactGroup.java +++ b/src/java/org/jivesoftware/spark/ui/ContactGroup.java @@ -706,6 +706,11 @@ public class ContactGroup extends CollapsiblePane implements MouseListener { if (!canShowPopup) { return; } + + if(e == null){ + return; + } + int loc = list.locationToIndex(e.getPoint()); Point point = list.indexToLocation(loc); diff --git a/src/java/org/jivesoftware/spark/ui/ContactList.java b/src/java/org/jivesoftware/spark/ui/ContactList.java index 6b0f10b2..1ec75db5 100644 --- a/src/java/org/jivesoftware/spark/ui/ContactList.java +++ b/src/java/org/jivesoftware/spark/ui/ContactList.java @@ -302,35 +302,36 @@ public final class ContactList extends JPanel implements ActionListener, Contact final ContactGroup group = (ContactGroup)groupIterator.next(); final ContactItem item = group.getContactItemByJID(bareJID); if (item != null) { - item.showUserGoingOfflineOnline(); - item.setIcon(SparkRes.getImageIcon(SparkRes.CLEAR_BALL_ICON)); - group.fireContactGroupUpdated(); - int numberOfMillisecondsInTheFuture = 3000; Date timeToRun = new Date(System.currentTimeMillis() + numberOfMillisecondsInTheFuture); - Timer timer = new Timer(); + // Only run through if the users presence was online before. + if (item.getPresence() != null) { + item.showUserGoingOfflineOnline(); + item.setIcon(SparkRes.getImageIcon(SparkRes.CLEAR_BALL_ICON)); + group.fireContactGroupUpdated(); + Timer timer = new Timer(); + timer.schedule(new TimerTask() { + public void run() { + Roster roster = SparkManager.getConnection().getRoster(); + Presence userPresence = roster.getPresence(bareJID); + if (userPresence != null) { + return; + } - timer.schedule(new TimerTask() { - public void run() { - Roster roster = SparkManager.getConnection().getRoster(); - Presence userPresence = roster.getPresence(bareJID); - if (userPresence != null) { - return; + item.setPresence(null); + + // Check for ContactItemHandler. + group.removeContactItem(item); + checkGroup(group); + + if (offlineGroup.getContactItemByJID(item.getFullJID()) == null) { + offlineGroup.addContactItem(item); + offlineGroup.fireContactGroupUpdated(); + } } - - item.setPresence(null); - - // Check for ContactItemHandler. - group.removeContactItem(item); - checkGroup(group); - - if (offlineGroup.getContactItemByJID(item.getFullJID()) == null) { - offlineGroup.addContactItem(item); - offlineGroup.fireContactGroupUpdated(); - } - } - }, timeToRun); + }, timeToRun); + } } } }