anchor.diff:      if i <> -1 then
       begin
         consumed := True;
  -//      writeln('Selected ', VisibleItem(i).Text);
         FFocusItem := i;
         DoSelect;
       end;
     end;
  -  inherited HandleKeyPress(keycode, shiftstate, consumed);
  +
  +  { now process sub-menus off the MenuBar }
  +  for i := 0 to ComponentCount-1 do
  +  begin
  +    if Components[i] is TfpgMenuItem then     { these are main menu items }
  +    begin
  +      mi := TfpgMenuItem(Components[i]);
  +      if mi.Visible and mi.Enabled then
  +      begin
  +        { process the sub menus }
  +        if mi.SubMenu <> nil then
  +          mi.SubMenu.DoKeyShortcut(nil, keycode, shiftstate, consumed);
  +        if consumed then
  +          Exit;
  +      end;
  +    end;
  +  end;
  +
   end;
   
   procedure TfpgMenuBar.HandlePaint;
  
positive.code:   uFocusedPopupMenu := self;
  end;
  
  function TfpgPopupMenu.CalcMouseRow(y: integer): integer;
  var
    h: integer;
  
negative.code: var
    s: string;
    i: integer;
    mi: TfpgMenuItem;
  begin
    s := KeycodeToText(keycode, shiftstate);
  
    // handle MenuBar (Alt+?) shortcuts only
    if (length(s) = 5) and (copy(s, 1, 4) = 'Alt+') then
    begin
      s := KeycodeToText(keycode, []);
  