anchor.diff:  var
     s: string;
     i: integer;
  -begin
  -//  writeln(Classname, '.Keypress');
  +  mi: TfpgMenuItem;
  +begin
     s := KeycodeToText(keycode, shiftstate);
  -//  writeln('s: ', s);
  -  // handle MenuBar (Alt+?) shortcuts only - for now!
  +
  +  // handle MenuBar (Alt+?) shortcuts only
     if (length(s) = 5) and (copy(s, 1, 4) = 'Alt+') then
     begin
       s := KeycodeToText(keycode, []);
  
positive.code:     if i <> -1 then
      begin
        consumed := True;
  //      writeln('Selected ', VisibleItem(i).Text);
        FFocusItem := i;
        DoSelect;
      end;
    end;
    inherited HandleKeyPress(keycode, shiftstate, consumed);
  end;
  
  procedure TfpgMenuBar.HandlePaint;
  
negative.code:   uFocusedPopupMenu := self;
  end;
  
  procedure TfpgPopupMenu.DoKeyShortcut(const AOrigin: TfpgWidget;
    const keycode: word; const shiftstate: TShiftState; var consumed: boolean; const IsChildOfOrigin: boolean = False);
  var
    s: TfpgString;
    i: integer;
    mi: TfpgMenuItem;
  begin
    s := KeycodeToText(keycode, shiftstate);
    for i := 0 to ComponentCount-1 do
    begin
      if Components[i] is TfpgMenuItem then
      begin
        mi := Components[i] as TfpgMenuItem;
        if mi.Separator then
          Continue;
        if mi.Visible and mi.Enabled then
        begin
          { process the sub menus }
          if mi.SubMenu <> nil then
            mi.SubMenu.DoKeyShortcut(nil, keycode, shiftstate, consumed)
          else if mi.HotKeyDef = s then
          begin
            consumed := True;
            mi.Click;
          end;
          if consumed then
            Exit;
        end;
      end;
    end;
  
  end;
  
  function TfpgPopupMenu.CalcMouseRow(y: integer): integer;
  var
    h: integer;
  