Oops - meant to send to Todd directly - my mom's internet connection
is probably not of interest to pivot-dev in general (and probably not
even to Todd). :-)
G
On Aug 9, 2009, at 5:36 PM, Greg Brown wrote:
I was going to email you about this over the weekend, but I didn't
bother since my mom only has dial-up and I didn't think you'd
actually be working on this one. I've been giving a lot of thought
as to how to solve the menu issues, and I think it will require some
changes to the focus system, including this method. Oh well. :-)
We can talk about it in more detail tomorrow.
On Aug 8, 2009, at 5:39 PM, [email protected] wrote:
Author: tvolkert
Date: Sat Aug 8 21:39:58 2009
New Revision: 802460
URL: http://svn.apache.org/viewvc?rev=802460&view=rev
Log:
PIVOT-187 :: Fix Container.requestFocus()
Modified:
incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/Container.java
Modified: incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/
Container.java
URL:
http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/Container.java?rev=802460&r1=802459&r2=802460&view=diff
=
=
=
=
=
=
=
=
=
=====================================================================
--- incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/
Container.java (original)
+++ incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/
Container.java Sat Aug 8 21:39:58 2009
@@ -445,15 +445,31 @@
*/
@Override
protected boolean requestFocus(boolean temporary) {
- if (isShowing()) {
+ boolean success = false;
+
+ if (isShowing()
+ && isEnabled()) {
FocusTraversalPolicy focusTraversalPolicy =
getFocusTraversalPolicy();
- Component component =
focusTraversalPolicy.getNextComponent(this, null, Direction.FORWARD);
- if (component != null) {
- component.requestFocus();
+
+ if (focusTraversalPolicy != null) {
+ Component component = null;
+
+ do {
+ component =
focusTraversalPolicy.getNextComponent(this, component,
Direction.FORWARD);
+
+ // TODO Detect infinite loop that can occur if
the focus
+ // traversal policy loops and every component
it returns
+ // yields false when requestFocus() is called
on it
+
+ if (component != null) {
+ success = component.requestFocus(temporary);
+ }
+ } while (component != null
+ && !success);
}
}
- return containsFocus();
+ return success;
}
/**