Re: Receiving signals, modify and send again to the SAME handler



Event signals are not handled like other signals. See e.g. the gtkmm tutorial
https://developer.gnome.org/gtkmm-tutorial/stable/sec-xeventsignals.html.en
and, for keyboard event signals, https://developer.gnome.org/gtkmm-tutorial/stable/chapter-keyboardevents.html.en

Event signals are propagated among the widgets as described in the tutorial. I'm not sure how much of this applies when the signal is sent from the application program itself, but from your observations it seems that the signal propagation starts from a lowest-level widget also in that situation.

Kjell

Den 2016-06-18 kl. 17:27, skrev Klaus Rudolph:
I have a signal handler which successfully receives signals.
In this handler I want generate modified signals and send them to the object, so that the *same* handler will receive this new generated signals again.


I have the following code fragments:

win = new Gtk::Window;
m_canvas = new Goocanvas::Canvas;

sigc::connection conn_t1 = m_canvas->signal_event().connect( sigc::ptr_fun( &AnyEvent));

sigc::connection conn_t2 = win->signal_event().connect( sigc::ptr_fun( &WinHandler));

Now I also register an IdleHandler which emmits signals which I generated before:

Glib::signal_idle().connect( sigc::mem_fun( *this, &IdleSendEvent::Do));

What I want to achieve: The handler of the canvas should receive an event and should generate a new one and this one should send to the canvas object, so that it will call again the handler of the m_canvas->signal_event().

In other words: Indirectly via the Idle Handler the signal should be send to the sending object itself.

But if I fire to

g_signal_emit_by_name (m_canvas->gobj(), "button-press-event", event, &return_val);

the signal is not received in the canvas handler itself, but in some child objects there.

Q: How to emit again to the canvas? Is there something like "get_the_parent_signal_object_handler_father_receiver" or something strange?

I did a lot of gtk_widget_get_parent_window() but all results in runtime errors like:

    (go:15430): GLib-GObject-WARNING **: gsignal.c:3484: signal name 'button-press-event' is invalid for instance '0x9afbc48' of type 'GdkX11Window'


_______________________________________________
gtkmm-list mailing list
gtkmm-list gnome org
https://mail.gnome.org/mailman/listinfo/gtkmm-list




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