From d416de057b728ba3bcde18362eb59be27305af7a Mon Sep 17 00:00:00 2001 From: Fernando Nasser Date: Fri, 19 Dec 2003 02:53:36 +0000 Subject: List.java (replaceItem): Prevent selection to move with replace and minimize flickering. 2003-12-18 Fernando Nasser * java/awt/List.java (replaceItem): Prevent selection to move with replace and minimize flickering. From-SVN: r74814 --- libjava/java/awt/List.java | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) (limited to 'libjava/java') diff --git a/libjava/java/awt/List.java b/libjava/java/awt/List.java index 23ca34f..79b2faa 100644 --- a/libjava/java/awt/List.java +++ b/libjava/java/awt/List.java @@ -647,8 +647,21 @@ clear() public synchronized void replaceItem(String item, int index) throws IllegalArgumentException { - remove(index); - addItem(item, index); + if ((index < 0) || (index >= items.size())) + throw new IllegalArgumentException("Bad list index: " + index); + + items.insertElementAt(item, index + 1); + items.removeElementAt (index); + + if (peer != null) + { + ListPeer l = (ListPeer) peer; + + /* We add first and then remove so that the selected + item remains the same */ + l.add (item, index + 1); + l.delItems (index, index); + } } /*************************************************************************/ -- cgit v1.1