                     // trace("FM removed " + o);
                     o.removeEventListener("tabEnabledChange", tabEnabledChangeHandler);
                     o.removeEventListener("tabIndexChange", tabIndexChangeHandler);
-                    focusableObjects.splice(i, 1);
+                    focusableObjects.splice(i, 1);           
+                    focusableCandidates = [];
                     calculateCandidates = true;                 
                     break;
                 }

                }
            }
        }

        if (defaultButtonEnabled &&
            event.keyCode == Keyboard.ENTER &&
            defaultButton && defButton.enabled)
            //sendDefaultButtonEvent();
            defButton.callLater(sendDefaultButtonEvent);
    }

    /**
     *  @private
     *  This gets called when the focus changes due to a mouse click.

                        "tabIndexChange", tabIndexChangeHandler);
                    focusableObjects.splice(i, 1);
                    i = i - 1;  // because increment would skip one
                    
                    focusableCandidates = [];
                    calculateCandidates = true;                 
                }
            }
