Qui il codice, magari viene fuori un idea per ottimizzarlo
...
Ho dato un'occhiata al tuo codice purtroppo non approfondita come avrei voluto, e sembra che le mie prime impressioni siano confermate.
Nota che dico sembra
Vedo troppi numeri fissi es. 25 per posizionare l'Y del rettangolo.
Questo numero non può essere fisso, deve essere recuperato dall'altezza del menu che probabilmente deriva dall'altezza del carattere più una percentuale per il padding, altrimenti su un OS con carattere diverso (più grande o più piccolo) causerà dei malfunzionamenti.
Lo stesso discorso vale per la larghezza.
A proposito di larghezza andrebbe tenuto conto delle scorciatoie da tastiera (If cc.Shortcut Then Print "TRUE").
Se ti attieni alla riga più lunga per tutti i menu e sotto-menu (mancano i sotto sotto-menu) cosa accadrebbe se i menu fossero molto più corti dei sotto-menu?
Insisto iscriviti al bugtraker e chiedi a Benoit Minisini di inserire un evento utile allo scopo.
Però tieni conto che l'eventuale nuova opzione sarà immediatamente disponibile solo sulla versione master di Gambas.
È meglio sbrigarsi se si vuole poterne usufruire sulla prossima stabile.