On 01/09/2023 22:41, Luke A. Guest wrote:
> Handler needs to be in a package you with.
>
>> begin -- Gtk.Init;
>> Gtk.Main.Init;
>> Gtk.Window.Gtk_New (Window => Win, The_Type =>
>> Gtk.Enums.Window_Toplevel);
>> Win.Set_Position (Win_Pos_Center);
>> Gtk.Window.Set_Title (Window => Win, Title => "Editor");
>> Gtk.Window.Show_All (Win);
>> Win.On_Button_Press_Event <------------ line that gets the error
>> (Call => Handler'Access,
>> After => False,
>> Slot => Win);
>> Gtk.Main.Main;
>> end test1;
>>
>> I get the compiler error message:
>>
>> test1.adb:32:17: subprogram must not be deeper than access type
Ada doesn't like 'access types to be in an area that can go out of scope
iirc. You can get around it with unchecked_access, but if you put
handler into a package of it's own, it's at library level and is
available to grab the access of.