Sunday, August 30, 2009

Ignore Click Event outside of a Field in Storm

In Storm sometimes click event in invoked by clicking outside of a focusable field.
To solve this just add the following code to the MainScreen or a Manager.

protected boolean touchEvent(TouchEvent message)
int event = message.getEvent();
if (event == TouchEvent.CLICK || event == TouchEvent.UNCLICK)
// Ignore clcik events that happen outside any fields
if (getFieldAtLocation(message.getX(1), message.getY(1)) == -1)
return true; // kill the event
return super.touchEvent(message);

// The regular getFieldAtLocation returns wrong values
//in open spaces in complex managers, so we override it
public int getFieldAtLocation(int x, int y)
XYRect rect = new XYRect();
int index = getFieldCount() -1;
while (index >= 0)
if (rect.contains(x, y))
return index;

No comments:

Post a Comment