Thanks for trying to help. Unfortunately neither gtk_widget_add_events() nor
the gtk_widget_event() "trick" is able to solve the problem. Regarding the
gtk_widget_add_events(), I added a call to

    gtk_widget_add_events(w_fs_button, GDK_ALL_EVENTS_MASK);

to m the program from my previous email, but didn't make any difference. The
following call is still ignored/blocked:

    g_signal_connect(w_fs_button, "button-press-event",
                     G_CALLBACK(cb_button_press_event), NULL);

Trying to proxy events by using a gtk_event_box() doesn't work either.

Is there no "strace" like system in gobject that makes it possible to dump
all signals that are being sent in a program? That might help me figuring
out what is going wrong.

Regards,
Dov

2009/5/24 Chris Vine <ch...@cvine.freeserve.co.uk>

> On Sun, 24 May 2009 09:24:19 +0300
> Dov Grobgeld <dov.grobg...@gmail.com> wrote:
> > In my last email, that unfortunately no one answered, I asked how to
> > get right click to work on any widget.  Since I didn't find a
> > solution to that I thought to do a work around by putting the widget
> > I want to add right-click to into an event box. So I packed my widget
> > into an event box and figured out that I need to put the eventbox
> > "above" in order to catch all the events. That all works find and I
> > can now catch right click and any other event in the eventbox. But I
> > was then stuck on how to get the eventbox to pass on events that it
> > does not want to handle into its child widget. This is against normal
> > gtk behaviour that only passes events from a child to a parent, and
> > not the other way around. I realize that if I manage to pass an event
> > from the parent eventbox to the child, I will have to make some
> > mechanism to break recursion so that the child will pass on the event
> > to the parent that passes the event to the child, ad out-of-memory
> > crash.
>
> You can pass on a current (real) event with gtk_widget_event(), but
> there is almost certainly something wrong with your code.  Using
> gtk_widget_event() for this purpose will in effect pass the
> event from one GdkWindow object to another GdkWindow object, when that
> other one, because it is the window of a widget which you say is a child
> of the one passing it on, is fully capable of receiving it by itself in
> the first place.  gtk_widget_event() can be useful in certain limited
> cases to pass events to widgets which are not direct children of the
> recipient (I have used it to pass on keyboard events to a GtkTextView
> object), but inserting a widget which already has a GdkWindow in an
> additional event box is not going to change things.
>
> GtkEventBox is for objects which do not have their own GdkWindow, but
> almost all widgets do (GtkLabel being an exception). Possibly you
> needed to add the relevant event to the event mask of the widget
> concerned with gtk_widget_add_events().
>
> You probably need to find out what is wrong with your code in the
> first place.
>
> Chris
>
>
_______________________________________________
gtk-list mailing list
gtk-list@gnome.org
http://mail.gnome.org/mailman/listinfo/gtk-list

Reply via email to