From 7c11cae69049aef77ae7ff3d82b854d633123418 Mon Sep 17 00:00:00 2001 From: Yana Stamcheva Date: Tue, 15 Jun 2010 10:16:26 +0000 Subject: [PATCH] Fixes active call button in the search field, even if not visible. Bug reported by Lubomir Marinov June 12, 2010 on dev (subject: Call button in the search field active even when not visible). --- .../impl/gui/main/contactlist/SearchField.java | 1 - .../impl/gui/main/contactlist/SearchFieldUI.java | 11 ++++++++++- .../util/swing/plaf/SIPCommTextFieldUI.java | 13 ++++++++++++- 3 files changed, 22 insertions(+), 3 deletions(-) diff --git a/src/net/java/sip/communicator/impl/gui/main/contactlist/SearchField.java b/src/net/java/sip/communicator/impl/gui/main/contactlist/SearchField.java index 7633f3db7..e38b86578 100644 --- a/src/net/java/sip/communicator/impl/gui/main/contactlist/SearchField.java +++ b/src/net/java/sip/communicator/impl/gui/main/contactlist/SearchField.java @@ -8,7 +8,6 @@ import net.java.sip.communicator.impl.gui.*; import net.java.sip.communicator.impl.gui.main.*; -import net.java.sip.communicator.util.*; import net.java.sip.communicator.util.swing.*; import net.java.sip.communicator.util.swing.event.*; diff --git a/src/net/java/sip/communicator/impl/gui/main/contactlist/SearchFieldUI.java b/src/net/java/sip/communicator/impl/gui/main/contactlist/SearchFieldUI.java index f5b2e6219..53e341bc2 100644 --- a/src/net/java/sip/communicator/impl/gui/main/contactlist/SearchFieldUI.java +++ b/src/net/java/sip/communicator/impl/gui/main/contactlist/SearchFieldUI.java @@ -50,6 +50,11 @@ public class SearchFieldUI private final String callString = GuiActivator.getResources().getI18NString("service.gui.CALL"); + /** + * Indicates if the call icon is currently visible. + */ + private boolean isCallIconVisible = false; + /** * Creates a SIPCommTextFieldUI. */ @@ -124,7 +129,11 @@ protected void customPaintBackground(Graphics g) g2.drawImage(callRolloverIcon, dx, dy, null); else g2.drawImage(callIcon, dx, dy, null); + + isCallIconVisible = true; } + else + isCallIconVisible = false; } finally @@ -231,7 +240,7 @@ private void updateCallIcon(MouseEvent evt) Rectangle callButtonRect = getCallButtonRect(); - if (callButtonRect.contains(x, y)) + if (isCallIconVisible && callButtonRect.contains(x, y)) { JTextComponent c = getComponent(); String searchText = c.getText(); diff --git a/src/net/java/sip/communicator/util/swing/plaf/SIPCommTextFieldUI.java b/src/net/java/sip/communicator/util/swing/plaf/SIPCommTextFieldUI.java index 32fdc6bef..c47a89f2f 100644 --- a/src/net/java/sip/communicator/util/swing/plaf/SIPCommTextFieldUI.java +++ b/src/net/java/sip/communicator/util/swing/plaf/SIPCommTextFieldUI.java @@ -53,6 +53,11 @@ public class SIPCommTextFieldUI */ protected SIPCommButton deleteButton; + /** + * Indicates if the delete icon is visible. + */ + private boolean isDeleteIconVisible = false; + /** * Creates a SIPCommTextFieldUI. */ @@ -128,6 +133,7 @@ protected void customPaintBackground(Graphics g) int dx = deleteButtonRect.x; int dy = deleteButtonRect.y; + if (c.getText() != null && c.getText().length() > 0 && isDeleteButtonEnabled) @@ -136,7 +142,11 @@ protected void customPaintBackground(Graphics g) g2.drawImage(deleteButtonRolloverImg, dx, dy, null); else g2.drawImage(deleteButtonImg, dx, dy, null); + + isDeleteIconVisible = true; } + else + isDeleteIconVisible = false; g2.setStroke(new BasicStroke(1f)); g2.setColor(Color.GRAY); @@ -160,12 +170,13 @@ protected void updateDeleteIcon(MouseEvent evt) { int x = evt.getX(); int y = evt.getY(); + if (!isDeleteButtonEnabled) return; Rectangle deleteRect = getDeleteButtonRect(); - if (deleteRect.contains(x, y)) + if (isDeleteIconVisible && deleteRect.contains(x, y)) { isDeleteMouseOver = true; getComponent().setCursor(Cursor.getDefaultCursor());