I was already trying gtk_widget_add_events with GDK_ENTER_NOTIFY_MASK in my 
GtkWidget subclass init function (not the class initialization; the widget 
instance init function), and it wasn't working.  Following up on your 
suggestion though, I just tried overriding the realize function, hoping that 
would communicate the requirement for the enter notification up to the 
GdkWindow, which I think would exist by the time realize happens.  It still 
didn't work though: no notifications.

The offending widget subclass isn't getting enter notification, but the button 
subclass that it contains does receive them.  So the real question is why the 
contained button can get them but the container widget around it cannot.  I 
would speculate that it's because, as I pointed out before, GtkButton is 
calling gdk_window_new, but I'm confused as to why the GtkButton would be 
carrying the GTK_NO_WINDOW flag.

Thanks,
Brian



--- On Tue, 11/23/10, Mike Massonnet <mmasson...@gmail.com> wrote:

> From: Mike Massonnet <mmasson...@gmail.com>
> Subject: Re: GtkButton, enter-notify signal, and GdkWindow
> To: "Brian Tietz" <sdbti...@yahoo.com>
> Cc: gtk-app-devel-list@gnome.org
> Date: Tuesday, November 23, 2010, 11:44 PM
> Hi,
> 
> 2010/11/24 Brian Tietz <sdbti...@yahoo.com>:
> > I am creating two widget subclasses, one which is a
> subclass of GtkContainer and one which is a subclass of
> GtkButton.  Both need to receive the enter-notify signal. 
> I can successfully obtain the enter-notify signal fot
> GtkButton in my_button_subclass_init:
> >
> >     g_gtk_button_mouse_enter_notify_event =
> widget_class->enter_notify_event;
> >     widget_class->enter_notify_event =
> my_button_subclass_enter_notify_event;
> >
> > That function does get called, I do my thing, and then
> call the GtkButton class version.  When I try to do the
> same thing for my GtkContainer subclass though, it doesn't
> happen.  I more or less understand this: my GtkContainer
> subclass is GTK_NO_WINDOW, and according to the Gtk docs I
> need to put it inside of a GtkEventBox.  Fair enough.  But
> I am studying gtkbutton.c so see how to do this right and to
> copy its methodology, and it isn't creating GtkEventBox.  I
> found a clue in gtk_button_realize: it's calling
> gdk_window_new, so it seems that GtkButton has its own
> GdkWindow, which would explain why it received enter-notify
> events.  Fair enough.  Here's the weird part though.  I
> found that GtkButton has the GTK_NO_WINDOW flag set!  Any
> help in understanding these behaviors and observations would
> be appreciated.
> 
> You need to call gtk_widget_add_events() on your widget and
> add the
> event GDK_ENTER_NOTIFY_MASK.
> 
>   
> http://library.gnome.org/devel/gtk/stable/GtkWidget.html#gtk-widget-add-events
>   http://library.gnome.org/devel/gdk/2.22/gdk-Events.html#GdkEventMask
> 
> 
> HTH
> Kind Regards
> -- 
> Mike
> 


      
_______________________________________________
gtk-app-devel-list mailing list
gtk-app-devel-list@gnome.org
http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list

Reply via email to