Re: GtkNotebook and callback
- From: TORRI Vincent <Vincent Torri math u-bordeaux fr>
- To: Arno <dark-arno ifrance com>
- Cc: gtk-app-devel-list gnome org
- Subject: Re: GtkNotebook and callback
- Date: Sun, 17 Nov 2002 17:38:03 +0100 (CET)
On Sun, 17 Nov 2002, Arno wrote:
Hello,
I make a callback on my GtkNotebook :
g_signal_connect (G_OBJECT (notebook), "switch_page",
G_CALLBACK (notebook_changed_cb),
NULL);
And in my fonction I do :
notebook_changed_cb (GtkNotebook *notebook, GtkNotebookPage *page,
guint numero_page, gpointer data)
{
const gchar *text;
text = gtk_notebook_get_menu_label_text(notebook, GTK_WIDGET(page));
You have to pass the child of your page, not page itself (a
GtkNotebookPage is not a GtkWidget). You can get the child of your current
page with
GtkWidget *child;
child = gtk_notebook_get_nth_page (notebook,
gtk_notebook_get_current_page (notebook));
printf("Label: %s\n", text);
}
But I have a little pb when I use this solution:
(check_tsr:592): GLib-GObject-WARNING **: invalid uninstantiatable type
`(null)' in cast to `GtkWidget'
(check_tsr:592): Gtk-CRITICAL **: file gtknotebook.c: line 4905
(gtk_notebook_get_menu_label_text): assertion `GTK_IS_WIDGET (child)' failed
Label: (null)
It said that it could cast my GtkNotebookPage to a widget. So I search
in the code source and I do this :
struct _GtkNotebookPage
{
GtkWidget *child;
GtkWidget *tab_label;
GtkWidget *menu_label;
GtkWidget *last_focus_child; /* Last descendant of the page that
had focus */
guint default_menu : 1; /* If true, we create the menu label ourself */
guint default_tab : 1; /* If true, we create the tab label ourself */
guint expand : 1;
guint fill : 1;
guint pack : 1;
GtkRequisition requisition;
GtkAllocation allocation;
guint mnemonic_activate_signal;
};
void
notebook_changed_cb (GtkNotebook *notebook, GtkNotebookPage *page,
guint numero_page, gpointer data)
{
const gchar *text;
printf("Page: %p, Child:%p\n", page, page->child);
printf("Diff: %d\n", (int)page->child - (int)page);
text = gtk_notebook_get_menu_label_text(notebook,
GTK_WIDGET(page->child));
printf("Label: %s\n", text);
}
And I obtain :
Page: 0x80c8e00, Child:0x80c8be8
Diff: -536
Label: List of packets
With this solution I obtain the name of the current menu but I need to
copy the struct _GtkNotebookPage from the source to my project. I don't
think that it's the good solution. So if you could help me. I use GTK2.
Also, I don't understand why (int)page->child - (int)page) equal to -536
What kind of result would you want to have ? You compute the difference of
two adresses, so the result could be (almost) every number, I think.
regards
Vincent TORRI
Thx ;)
Arno
__________________________________________________
Modem offert : 150,92 euros remboursés sur le Pack eXtense de Wanadoo !
Haut débit à partir de 30 euros/mois : http://www.ifrance.com/_reloc/w
_______________________________________________
gtk-app-devel-list mailing list
gtk-app-devel-list gnome org
http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list
--
TORRI Vincent
Mathematiques Appliquees Bordeaux
Institut de Mathematiques
Universite Bordeaux 1
351 cours de la liberation
33 405 Talence cedex - France
Tel : 33 (0)5 57 96 21 42
Fax : 33 (0)5 56 84 26 26
--
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]