[Xfc-dev] Signal-handling-question

Johannes Zellner webmaster at nebulon.de
Mon Aug 1 09:31:17 CEST 2005


Thanks this solved the Problem :-D

Btw: Which other apps are using the xfce-foundation-classes ?

Greets
    Johannes


Jeff Franks schrieb:

>Johannes Zellner wrote:
>
>  
>
>>Here is the compiler output:
>>
>>g++ filestepper.cc -c -o filestepper.o -Wall -O2 `pkg-config xfcui-4.3 
>>--cflags`In file included from filestepper.cc:163:
>>/usr/include/sigc++-2.0/sigc++/adaptors/adaptor_trait.h: In member 
>>function `
>>  typename sigc::adaptor_functor<T_functor>::deduce_result_type<T_arg1, 
>>void,
>>  void, void, void, void, void>::type
>>  sigc::adaptor_functor<T_functor>::operator()(T_arg1) const [with T_arg1 =
>>  const Xfc::Gdk::EventKey&, T_functor = sigc::bound_mem_functor1<bool,
>>  FileStepper, Xfc::Gdk::EventCrossing&>]':
>>/usr/include/sigc++-2.0/sigc++/functors/slot.h:136:   instantiated from 
>>`static T_return sigc::internal::slot_call1<T_functor, T_return, 
>>T_arg1>::call_it(sigc::internal::slot_rep*, typename 
>>sigc::type_trait<T_arg3>::take) [with T_functor = 
>>sigc::bound_mem_functor1<bool, FileStepper, Xfc::Gdk::EventCrossing&>, 
>>T_return = bool, T_arg1 = const Xfc::Gdk::EventKey&]'
>>/usr/include/sigc++-2.0/sigc++/functors/slot.h:144:   instantiated from 
>>`static void*(* sigc::internal::slot_call1<T_functor, T_return, 
>>T_arg1>::address())(void*) [with T_functor = 
>>sigc::bound_mem_functor1<bool, FileStepper, Xfc::Gdk::EventCrossing&>, 
>>T_return = bool, T_arg1 = const Xfc::Gdk::EventKey&]'
>>/opt/lunar/xfce4/include/xfce4/xfc/glib/signals.hh:529:   instantiated 
>>    
>>
>>from here/usr/include/sigc++-2.0/sigc++/adaptors/adaptor_trait.h:84: 
>  
>
>> 
>>
>>    
>>
>The next few lines report the relevant information
>
>  
>
>>error: no match for
>>  call to `(sigc::bound_mem_functor1<bool, FileStepper,
>>  Xfc::Gdk::EventCrossing&>) (const Xfc::Gdk::EventKey&)'
>>/usr/include/sigc++-2.0/sigc++/functors/mem_fun.h:1839: error: 
>> 
>>
>>    
>>
>Here the compiler is reporting that it can find 'no match' for your call 
>to connect a function that takes a 'const Xfc::Gdk::EventKey&'.
>
>  
>
>>candidates are:
>>  T_return sigc::bound_mem_functor1<T_return, T_obj,
>>  T_arg1>::operator()(typename sigc::type_trait<T_arg3>::take) const [with
>>  T_return = bool, T_obj = FileStepper, T_arg1 = Xfc::Gdk::EventCrossing&]
>>make: *** [filestepper.o] Fehler 1
>> 
>>
>>    
>>
>Above the compiler is reporting that the candiate for the nearest match 
>is your function that takes a non-const Xfc::Gdk::EventCrossing 
>reference. Although the object type is wrong, it should be a 
>Xfc::Gdk::EventKey object, it would still generate an error because the 
>reference it is not declared const.
>
>  
>
>>The depending codelines are:
>>
>>[...]
>>   entry = new Gtk::Entry(0);
>>   entry->signal_activate().connect(sigc::mem_fun(this, 
>>&FileStepper::go));    <--works fine
>>   entry->signal_key_release_event().connect(sigc::mem_fun(this, 
>>&FileStepper::gofor));  <--- errorline
>> 
>>
>>    
>>
>So, the problem appears to be your function signature... it should be
>
>bool FileStepper::gofor(const Gdk::EventKey& event);
>
>not 
>
>bool FileStepper::gofor(Gdk::EventCrossing& event);
>
>or
>
>bool FileStepper::gofor(Gdk::EventKey& event);
>
>  
>
>>   hbox->pack_start(*entry, true, true, 0);
>>   entry->show();
>>[...]
>>void FileStepper::go(void)
>>[...]
>>bool FileStepper::gofor(Gdk::EventCrossing& event)
>>[...]
>>
>>thanks... Johannes
>>
>>Jeff Franks schrieb:
>>
>> 
>>
>>    
>>
>Hope this solves your problem,
>Jeff.
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>_______________________________________________
>Xfc-dev mailing list
>Xfc-dev at xfce.org
>http://foo-projects.org/mailman/listinfo/xfc-dev
>
>  
>




More information about the Xfc-dev mailing list