diff --git a/src/net/java/sip/communicator/impl/gui/main/call/CallPanel.java b/src/net/java/sip/communicator/impl/gui/main/call/CallPanel.java index 7c3946367..f53f92a71 100644 --- a/src/net/java/sip/communicator/impl/gui/main/call/CallPanel.java +++ b/src/net/java/sip/communicator/impl/gui/main/call/CallPanel.java @@ -1805,19 +1805,32 @@ else if (logger.isDebugEnabled()) */ void updateHoldButtonState() { - boolean areAllPeersLocallyOnHold = true; + List peers = callConference.getCallPeers(); + boolean areAllPeersLocallyOnHold; - for (CallPeer peer : callConference.getCallPeers()) + if (peers.isEmpty()) { - CallPeerState state = peer.getState(); - - // If we have clicked the hold button in a full screen mode - // we need to update the state of the call dialog hold button. - if (!state.equals(CallPeerState.ON_HOLD_LOCALLY) - && !state.equals(CallPeerState.ON_HOLD_MUTUALLY)) + /* + * It feels natural to not have the holdButton selected when there + * are no peers. + */ + areAllPeersLocallyOnHold = false; + } + else + { + areAllPeersLocallyOnHold = true; + for (CallPeer peer : callConference.getCallPeers()) { - areAllPeersLocallyOnHold = false; - break; + CallPeerState state = peer.getState(); + + // If we have clicked the hold button in a full screen mode + // we need to update the state of the call dialog hold button. + if (!state.equals(CallPeerState.ON_HOLD_LOCALLY) + && !state.equals(CallPeerState.ON_HOLD_MUTUALLY)) + { + areAllPeersLocallyOnHold = false; + break; + } } }