tags 355326 +patch thanks If I remember correctly, friend functions that are only declared inside a class can only be found by argument-dependent lookup (and can only be defined inline, though it's not a syntax error to fail to do so!). In any case these friend functions seem to be private implementation details of the class, so they should be changed into static member functions. The attached patch makes that change.
Ben. -- Ben Hutchings Everything should be made as simple as possible, but not simpler. - Albert Einstein
diff -ur blackbook-3.orig/glow/glow.gtk.cc blackbook-3/glow/glow.gtk.cc --- blackbook-3.orig/glow/glow.gtk.cc 2006-03-05 02:00:47.000000000 +0000 +++ blackbook-3/glow/glow.gtk.cc 2006-03-05 01:59:00.000000000 +0000 @@ -246,80 +246,80 @@ /* callbacks */ -void GlowGtk_callback_activate(GtkWidget *w,gpointer data) { +void Gtk::GlowGtk_callback_activate(GtkWidget *w,gpointer data) { ((Gtk *)data)->activated(); } -gint GlowGtk_callback_delete(GtkWidget *w,GdkEvent *e,gpointer data) { +gint Gtk::GlowGtk_callback_delete(GtkWidget *w,GdkEvent *e,gpointer data) { return(((Gtk *)data)->deleted()); } -void GlowGtk_callback_destroy(GtkWidget *w,gpointer data) { +void Gtk::GlowGtk_callback_destroy(GtkWidget *w,gpointer data) { ((Gtk *)data)->destroyed(); } -void GlowGtk_callback_clicked(GtkButton *w,gpointer data) { +void Gtk::GlowGtk_callback_clicked(GtkButton *w,gpointer data) { ((Gtk *)data)->clicked(); } -void GlowGtk_callback_enter(GtkButton *w,gpointer data) { +void Gtk::GlowGtk_callback_enter(GtkButton *w,gpointer data) { ((Gtk *)data)->enter(); } -void GlowGtk_callback_leave(GtkButton *w,gpointer data) { +void Gtk::GlowGtk_callback_leave(GtkButton *w,gpointer data) { ((Gtk *)data)->leave(); } -void GlowGtk_callback_pressed(GtkButton *w,gpointer data) { +void Gtk::GlowGtk_callback_pressed(GtkButton *w,gpointer data) { ((Gtk *)data)->pressed(); } -void GlowGtk_callback_released(GtkButton *w,gpointer data) { +void Gtk::GlowGtk_callback_released(GtkButton *w,gpointer data) { ((Gtk *)data)->released(); } -void GlowGtk_callback_toggled(GtkToggleButton *w,gpointer data) { +void Gtk::GlowGtk_callback_toggled(GtkToggleButton *w,gpointer data) { ((Gtk *)data)->toggled(); } -void GlowGtk_callback_changed(GtkEditable *w,gpointer data) { +void Gtk::GlowGtk_callback_changed(GtkEditable *w,gpointer data) { ((Gtk *)data)->changed(); } -void GlowGtk_callback_select_row(GtkCList *w,gint row, +void Gtk::GlowGtk_callback_select_row(GtkCList *w,gint row, gint column,GdkEventButton *geb, gpointer data) { ((Gtk *)data)->rowSelected(row,column,geb); } -void GlowGtk_callback_unselect_row(GtkCList *w,gint row, +void Gtk::GlowGtk_callback_unselect_row(GtkCList *w,gint row, gint column,GdkEventButton *geb, gpointer data) { ((Gtk *)data)->rowUnselected(row,column,geb); } -void GlowGtk_callback_switch_page(GtkNotebook *w, +void Gtk::GlowGtk_callback_switch_page(GtkNotebook *w, GtkNotebookPage *np, gint pagenum, gpointer data) { ((Gtk *)data)->pageSwitched(pagenum); } -gboolean GlowGtk_callback_pressed_at(GtkWidget *w, +gboolean Gtk::GlowGtk_callback_pressed_at(GtkWidget *w, GdkEventButton *geb, gpointer data) { ((Gtk *)data)->pressedAt(geb); return FALSE; } -gboolean GlowGtk_callback_released_at(GtkWidget *w, +gboolean Gtk::GlowGtk_callback_released_at(GtkWidget *w, GdkEventButton *geb, gpointer data) { ((Gtk *)data)->releasedAt(geb); return FALSE; } -gboolean GlowGtk_callback_motion(GtkWidget *w, +gboolean Gtk::GlowGtk_callback_motion(GtkWidget *w, GdkEventMotion *gem, gpointer data) { ((Gtk *)data)->motion(gem); @@ -1138,7 +1138,7 @@ gtk_toolbar_insert_space(GTK_TOOLBAR(getMe()),pos); } -void toolbar_callback(GtkWidget *w,gpointer data) { +void Toolbar::toolbar_callback(GtkWidget *w,gpointer data) { Toolbar *t; ToolPair *tp; int v; @@ -1550,7 +1550,7 @@ update(); } -gboolean canvas_expose(GtkWidget *widget, +gboolean Canvas::canvas_expose(GtkWidget *widget, GdkEventExpose *gee, gpointer data) { Canvas *c; @@ -1723,13 +1723,13 @@ return TRUE; } -void fs_ok_callback(GtkButton *b,gpointer data) { +void FileSelection::fs_ok_callback(GtkButton *b,gpointer data) { FileSelection *fs; fs=(FileSelection *)data; fs->result=1; } -void fs_cancel_callback(GtkButton *b,gpointer data) { +void FileSelection::fs_cancel_callback(GtkButton *b,gpointer data) { FileSelection *fs; fs=(FileSelection *)data; fs->result=0; diff -ur blackbook-3.orig/glow/glow.gtk.h blackbook-3/glow/glow.gtk.h --- blackbook-3.orig/glow/glow.gtk.h 2006-03-05 02:00:47.000000000 +0000 +++ blackbook-3/glow/glow.gtk.h 2006-03-05 01:37:21.000000000 +0000 @@ -277,39 +277,39 @@ private: Gtk *recipient; - friend void GlowGtk_callback_activate(GtkWidget *w,gpointer data); - friend gint GlowGtk_callback_delete(GtkWidget *w,GdkEvent *e,gpointer data); - friend void GlowGtk_callback_destroy(GtkWidget *w,gpointer data); + static void GlowGtk_callback_activate(GtkWidget *w,gpointer data); + static gint GlowGtk_callback_delete(GtkWidget *w,GdkEvent *e,gpointer data); + static void GlowGtk_callback_destroy(GtkWidget *w,gpointer data); - friend void GlowGtk_callback_clicked(GtkButton *w,gpointer data); - friend void GlowGtk_callback_enter(GtkButton *w,gpointer data); - friend void GlowGtk_callback_leave(GtkButton *w,gpointer data); - friend void GlowGtk_callback_pressed(GtkButton *w,gpointer data); - friend void GlowGtk_callback_released(GtkButton *w,gpointer data); + static void GlowGtk_callback_clicked(GtkButton *w,gpointer data); + static void GlowGtk_callback_enter(GtkButton *w,gpointer data); + static void GlowGtk_callback_leave(GtkButton *w,gpointer data); + static void GlowGtk_callback_pressed(GtkButton *w,gpointer data); + static void GlowGtk_callback_released(GtkButton *w,gpointer data); - friend void GlowGtk_callback_toggled(GtkToggleButton *w,gpointer data); + static void GlowGtk_callback_toggled(GtkToggleButton *w,gpointer data); - friend void GlowGtk_callback_changed(GtkEditable *w,gpointer data); + static void GlowGtk_callback_changed(GtkEditable *w,gpointer data); - friend void GlowGtk_callback_select_row(GtkCList *w,gint row, + static void GlowGtk_callback_select_row(GtkCList *w,gint row, gint column,GdkEventButton *geb, gpointer data); - friend void GlowGtk_callback_unselect_row(GtkCList *w,gint row, + static void GlowGtk_callback_unselect_row(GtkCList *w,gint row, gint column,GdkEventButton *geb, gpointer data); - friend void GlowGtk_callback_switch_page(GtkNotebook *w, + static void GlowGtk_callback_switch_page(GtkNotebook *w, GtkNotebookPage *np, gint pagenum, gpointer data); - friend gboolean GlowGtk_callback_pressed_at(GtkWidget *w, + static gboolean GlowGtk_callback_pressed_at(GtkWidget *w, GdkEventButton *geb, gpointer data); - friend gboolean GlowGtk_callback_released_at(GtkWidget *w, + static gboolean GlowGtk_callback_released_at(GtkWidget *w, GdkEventButton *geb, gpointer data); - friend gboolean GlowGtk_callback_motion(GtkWidget *w, + static gboolean GlowGtk_callback_motion(GtkWidget *w, GdkEventMotion *gem, gpointer data); }; @@ -733,7 +733,7 @@ private: Gtk *recipient; int nbuttons; - friend void toolbar_callback(GtkWidget *w,gpointer data); + static void toolbar_callback(GtkWidget *w,gpointer data); int method; ToolPair * getById(int id); @@ -1444,7 +1444,7 @@ void init(int w,int h); - friend gboolean canvas_expose(GtkWidget *widget, + static gboolean canvas_expose(GtkWidget *widget, GdkEventExpose *gee, gpointer data); }; @@ -1516,8 +1516,8 @@ private: int result; - friend void fs_ok_callback(GtkButton *b,gpointer data); - friend void fs_cancel_callback(GtkButton *b,gpointer data); + static void fs_ok_callback(GtkButton *b,gpointer data); + static void fs_cancel_callback(GtkButton *b,gpointer data); }; #endif
signature.asc
Description: This is a digitally signed message part