GtkChoicePeer.java (postItemEvent): Rename to...
2003-12-22 Fernando Nasser <fnasser@redhat.com> * gnu/java/awt/peer/gtk/GtkChoicePeer.java (postItemEvent): Rename to... (choicePostItemEvent): Change signature to more specific String object. * java/awt/Choice.java (add): Generate ItemEvent for the first item added. (insert): Generate ItemEvent if insertion caused selection to change. (remove): Generate ItemEvent if removal cause selection to change. (removeAll): Change algorithm to prevent generation of ItemEvents. * jni/gtk-peer/gnu_java_awt_peer_gtk_GtkChoicePeer.c (connect_choice_item_selectable_hook): Change argument type. Fix argument value. Make sure resources are feed by registering callback. (Java_gnu_java_awt_peer_gtk_GtkChoicePeer_append): Adjust call to the above function. (Java_gnu_java_awt_peer_gtk_GtkChoicePeer_add): Ditto. (item_activate): Ditto. (Java_gnu_java_awt_peer_gtk_GtkChoicePeer_remove): Destroy removed menuitem. (item_removed): New function. Free resources. * jni/gtk-peer/gtkpeer.h (item_event_hook_info): Change member type and name. * jni/gtk-peer/gnu_java_awt_peer_gtk_GtkMainThread.c (Java_gnu_java_awt_peer_gtk_GtkMainThread_gtkInit): Obtain MethodID for choicePostItemEvent. From-SVN: r74979
This commit is contained in:
committed by
Fernando Nasser
parent
459ac19fa5
commit
baba70d019
@@ -171,7 +171,15 @@ add(String item)
|
||||
}
|
||||
|
||||
if (i == 0)
|
||||
select (0);
|
||||
{
|
||||
selectedIndex = 0;
|
||||
// We must generate an ItemEvent here
|
||||
Toolkit.getDefaultToolkit().getSystemEventQueue().postEvent (
|
||||
new ItemEvent ((ItemSelectable)this,
|
||||
ItemEvent.ITEM_STATE_CHANGED,
|
||||
getItem(0),
|
||||
ItemEvent.SELECTED));
|
||||
}
|
||||
}
|
||||
|
||||
/*************************************************************************/
|
||||
@@ -223,7 +231,15 @@ insert(String item, int index)
|
||||
}
|
||||
|
||||
if (getItemCount () == 1 || selectedIndex >= index)
|
||||
{
|
||||
select (0);
|
||||
// We must generate an ItemEvent here
|
||||
Toolkit.getDefaultToolkit().getSystemEventQueue().postEvent (
|
||||
new ItemEvent ((ItemSelectable)this,
|
||||
ItemEvent.ITEM_STATE_CHANGED,
|
||||
getItem(0),
|
||||
ItemEvent.SELECTED));
|
||||
}
|
||||
}
|
||||
|
||||
/*************************************************************************/
|
||||
@@ -265,8 +281,16 @@ remove(int index)
|
||||
cp.remove (index);
|
||||
}
|
||||
|
||||
if (index == selectedIndex)
|
||||
if ((index == selectedIndex) && (getItemCount() > 0))
|
||||
{
|
||||
select (0);
|
||||
// We must generate an ItemEvent here
|
||||
Toolkit.getDefaultToolkit().getSystemEventQueue().postEvent (
|
||||
new ItemEvent ((ItemSelectable)this,
|
||||
ItemEvent.ITEM_STATE_CHANGED,
|
||||
getItem(0),
|
||||
ItemEvent.SELECTED));
|
||||
}
|
||||
else if (selectedIndex > index)
|
||||
--selectedIndex;
|
||||
}
|
||||
@@ -281,11 +305,27 @@ removeAll()
|
||||
{
|
||||
int count = getItemCount();
|
||||
|
||||
for (int i = 0; i < count; i++)
|
||||
if (count <= 0)
|
||||
return;
|
||||
|
||||
ChoicePeer cp = (ChoicePeer) peer;
|
||||
|
||||
// Select the first item to prevent an spurious ItemEvent to be generated
|
||||
if (cp != null)
|
||||
{
|
||||
// Always remove 0.
|
||||
remove(0);
|
||||
cp.select (0);
|
||||
selectedIndex = 0; // Just to keep consistent
|
||||
}
|
||||
|
||||
for (int i = (count - 1); i >= 0; i--)
|
||||
{
|
||||
// Always remove the last to avoid generation of ItemEvents.
|
||||
pItems.removeElementAt(i);
|
||||
if (cp != null)
|
||||
cp.remove (i);
|
||||
}
|
||||
|
||||
selectedIndex = -1;
|
||||
}
|
||||
|
||||
/*************************************************************************/
|
||||
|
||||
Reference in New Issue
Block a user