[prev in list] [next in list] [prev in thread] [next in thread] 

List:       gtk-app-devel
Subject:    Re: [GTK3] GtkEntry, why "focus-in-event" does not work ?
From:       Gilles DOFFE <g.doffe () gmail ! com>
Date:       2012-02-23 14:08:52
Message-ID: CABMCMP-wqxhBdpZ0CZWJqkC+Ux=LDqmY9+_dVLLRFw8XjjgzPQ () mail ! gmail ! com
[Download RAW message or body]

Thanks Jacky !

It was big enough in gtk3 documentation but I missed it anyway... ^^'
http://developer.gnome.org/gtk3/3.2/GtkWidget.html#GtkWidget-focus-in-event

Solved.

2012/2/23 jjacky <i.am.jack.mail@gmail.com>

>
> On 02/23/2012 02:49 PM, Gilles DOFFE wrote:
> > Hello,
> >
> > Below a simple application with a GtkButton and a GtkEntry.
> > Two callbacks associated to this widgets following this rules :
> > 1) When I click on the GtkButton, it should display the GtkEntry pointer
> > value.
> > 2) When I focus on the GtkEntry, it should display the GtkButton pointer
> > value.
> >
> > Case 1) works perfectly but case 2) always give a different value for the
> > GtkButton pointer ?!
> >
> > Did i miss something ?
>
> That the signature for focus-in-event isn't the same[1], and that second
> parameter you use in your printf is a pointer to the GdkEvent, not your
> user_data (Also, this callback should return a gboolean value).
>
> -j
>
> [1]
>
> http://developer.gnome.org/gtk/stable/GtkWidget.html#GtkWidget-focus-in-event
>
> >
> > Thanks,
> > Gilles
> >
> > #include <gtk/gtk.h>
> >
> > void
> > onEntryFocusIn(GtkWidget *entry, gpointer pData)
> > {
> >     printf("pData   = %p\n", (GtkWidget *)pData);
> > }
> >
> > int main(int argc, char **argv)
> > {
> >     GtkWidget *pWindow = NULL;
> >     GtkWidget *pButton = NULL;
> >     GtkWidget *pEntry = NULL;
> >     GtkWidget *pHbx = NULL;
> >
> >     gtk_init(NULL, NULL);
> >
> >     pWindow = gtk_window_new(GTK_WINDOW_TOPLEVEL);
> >     pButton = gtk_button_new();
> >     pEntry = gtk_entry_new();
> >     pHbx = gtk_hbox_new(FALSE, FALSE);
> >
> >     gtk_box_pack_start(GTK_BOX(pHbx), GTK_WIDGET(pButton), FALSE, FALSE,
> 0);
> >     gtk_box_pack_start(GTK_BOX(pHbx), GTK_WIDGET(pEntry), FALSE, FALSE,
> 0);
> >
> >     gtk_container_add(pWindow, pHbx);
> >
> >     g_signal_connect(G_OBJECT(pWindow), "destroy", (GCallback)
> > gtk_main_quit, NULL);
> >
> >     /* THIS WORKS : */
> >     g_signal_connect(G_OBJECT(pButton), "clicked", (GCallback)
> > onEntryFocusIn, (gpointer)pEntry);
> >
> >     /* THIS DOES NOT WORK : */
> >     g_signal_connect(G_OBJECT(pEntry), "focus-in-event", (GCallback)
> > onEntryFocusIn, (gpointer)pButton);
> >
> >     gtk_widget_show_all(pWindow);
> >
> >     printf("pEntry  = %p\n", pEntry);
> >     printf("pButton = %p\n", pButton);
> >
> >     gtk_main();
> > }
> > _______________________________________________
> > gtk-app-devel-list mailing list
> > gtk-app-devel-list@gnome.org
> > http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list
> _______________________________________________
> gtk-app-devel-list mailing list
> gtk-app-devel-list@gnome.org
> http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list
>
_______________________________________________
gtk-app-devel-list mailing list
gtk-app-devel-list@gnome.org
http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic