Re: Connecting to a signal given as a string



On Sun, 2008-10-26 at 11:28 +0100, Søren Hauberg wrote:
> 2008/10/26 Murray Cumming <murrayc murrayc com>:
> > On Sun, 2008-10-26 at 00:13 +0200, Milosz Derezynski wrote:
> >> You can not do it with a nonstatic member function because the this
> >> pointer is always implied with a static mem. fun. (which you most
> >> likely know, just repeating it for all); there's no way to directly
> >> connect C GSignals in a C++ object to a nonstatic member function.
> >
> > You should do it the same way that gtkmm does it:
> > Your static callback function should call the C++ method on the C++
> > instance that was passed in the user_data parameter.
> 
> I've tried the following:
> 
>       g_signal_connect (G_OBJECT (html_widget), "load_finished",
>                         G_CALLBACK (on_page_loaded), this);
> 
> in the constructor of the class that does the rendering. Then I have
> the following function
> 
>       static void on_page_loaded (WebView *web_view)
>       {
>         web_view->on_load_finished ();
>       }

Are you sure that this signal provides no parameters? I can't find any
online documentation, so I don't know.

> 
> that calls the member function of my choice. But this gives my a
> segfault. Is there anything obviously wrong with this?
> 
> > Of course, it's far easier just to use a gtkmm-style wrapper, such as
> > webkitmm:
> > http://blogs.gnome.org/jjongsma/2008/06/27/webkitmm/
> 
> Yeah, I'd love to use this, but it has one downside: it's not packaged
> by that many distributions (none?). So, in the future, I'm sure I'll
> be using this, but for now I'd prefer just to use the C interface.

-- 
Murray Cumming
murrayc murrayc com
www.murrayc.com
www.openismus.com




[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]