comp.lang.ada
 help / color / mirror / Atom feed
From: Ludovic Brenta <ludovic@ludovic-brenta.org>
Subject: Re: Ada OpenGL question
Date: Wed, 16 Sep 2009 00:34:40 -0700 (PDT)
Date: 2009-09-16T00:34:40-07:00	[thread overview]
Message-ID: <07d3520d-0c53-4359-aa50-9f4fe466edd8@g6g2000vbr.googlegroups.com> (raw)
In-Reply-To: 4ab08904$0$2848$ba620e4c@news.skynet.be

Olivier Scalbert wrote:
> Ludovic Brenta wrote:
>> In your example, Expose'Access presumably designates a procedure.
>> This is wrong.  Expose should be a function returning Boolean.  The
>> return value means:
>>
>> False: pass the signal to any other signal handlers attached to it
>> True: abort processing of the signal.
>>
>> The same holds for delete_event and a few other signals as documented
>> in the GTK+ reference athttp://www.gtk.org.
>>
>> The GtkAda signal handler infrastructure makes it impossible to detect
>> the type mismatch at compile time, so it has run-time checks instead.
>> This is the source of the error message.
>>
>> HTH
>
> Thanks for your help Ludovic!
>
> I do not know how to solve it.
> I have tried to change the Expose procedure into a function returning a
> Boolean, but then it does not compile anymore:
>
> gtkgl.adb:89:66: no candidate interpretations match the actuals:
> gtkgl.adb:89:87: expected type "Handler" defined at
> gtk-marshallers.ads:355, instance at gtk-handlers.ads:915, instance at
> line 68
> gtkgl.adb:89:87: found type access to function "Expose" defined at line 89
> gtkgl.adb:89:87:   ==> in call to "To_Marshaller" at
> gtk-handlers.ads:939, instance at line 68
> gtkgl.adb:89:87:   ==> in call to "To_Marshaller" at
> gtk-handlers.ads:934, instance at line 68
> gtkgl.adb:89:87:   ==> in call to "To_Marshaller" at
> gtk-handlers.ads:930, instance at line 68
> gtkgl.adb:89:87:   ==> in call to "To_Marshaller" at
> gtk-handlers.ads:926, instance at line 68
> gtkgl.adb:89:87:   ==> in call to "To_Marshaller" at
> gtk-handlers.ads:922, instance at line 68
> gtkgl.adb:89:87:   ==> in call to "To_Marshaller" at
> gtk-handlers.ads:918, instance at line 68

You must call GtkAda.Handlers.Return_Callback.Connect as opposed to
GtkAda.Handlers.Widget_Callback.Connect. (If you use some other
instances of Gtk.Handlers, the same holds: Return_Callback instead of
Callback).

--
Ludovic Brenta.



  reply	other threads:[~2009-09-16  7:34 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-09-15 17:18 Ada OpenGL question Olivier Scalbert
2009-09-15 18:19 ` Ludovic Brenta
2009-09-16  6:43   ` Olivier Scalbert
2009-09-16  7:34     ` Ludovic Brenta [this message]
2009-09-16 11:51       ` Olivier Scalbert
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox