diff options
author | estade@chromium.org <estade@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-04-07 21:38:44 +0000 |
---|---|---|
committer | estade@chromium.org <estade@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-04-07 21:38:44 +0000 |
commit | f0dfb8223d5a73cacd2dbaafdd890adec101d5c7 (patch) | |
tree | 640236f98c50fa61b7ea6e6424c59b04b207f5eb /app/gtk_signal.h | |
parent | d43002e2c5da97a28eecbd552e4f4ec027a19179 (diff) | |
download | chromium_src-f0dfb8223d5a73cacd2dbaafdd890adec101d5c7.zip chromium_src-f0dfb8223d5a73cacd2dbaafdd890adec101d5c7.tar.gz chromium_src-f0dfb8223d5a73cacd2dbaafdd890adec101d5c7.tar.bz2 |
GTK: add more general gtk_signal macros.
Convert ACEViewGtk to use the macros.
BUG=none
TEST=compile + click around
Review URL: http://codereview.chromium.org/1591021
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@43883 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'app/gtk_signal.h')
-rw-r--r-- | app/gtk_signal.h | 151 |
1 files changed, 88 insertions, 63 deletions
diff --git a/app/gtk_signal.h b/app/gtk_signal.h index c21ef81..a3d5f7a 100644 --- a/app/gtk_signal.h +++ b/app/gtk_signal.h @@ -21,71 +21,96 @@ typedef struct _GtkWidget GtkWidget; // the headers and the implementations shouldn't be filled with "context->" // de-references. -#define CHROMEGTK_CALLBACK_0(TYPE, RETURN, METHOD) \ - static RETURN METHOD ## Thunk(GtkWidget* widget, gpointer userdata) { \ - return reinterpret_cast<TYPE*>(userdata)->METHOD(widget); \ - } \ - \ - virtual RETURN METHOD(GtkWidget* widget); - -#define CHROMEGTK_CALLBACK_1(TYPE, RETURN, METHOD, ARG1) \ - static RETURN METHOD ## Thunk(GtkWidget* widget, ARG1 one, \ +#define CHROMEG_CALLBACK_0(CLASS, RETURN, METHOD, SENDER) \ + static RETURN METHOD ## Thunk(SENDER sender, gpointer userdata) { \ + return reinterpret_cast<CLASS*>(userdata)->METHOD(sender); \ + } \ + \ + virtual RETURN METHOD(SENDER); + +#define CHROMEG_CALLBACK_1(CLASS, RETURN, METHOD, SENDER, ARG1) \ + static RETURN METHOD ## Thunk(SENDER sender, ARG1 one, \ gpointer userdata) { \ - return reinterpret_cast<TYPE*>(userdata)->METHOD(widget, one); \ + return reinterpret_cast<CLASS*>(userdata)->METHOD(sender, one); \ } \ \ - virtual RETURN METHOD(GtkWidget* widget, ARG1 one); - -#define CHROMEGTK_CALLBACK_2(TYPE, RETURN, METHOD, ARG1, ARG2) \ - static RETURN METHOD ## Thunk(GtkWidget* widget, ARG1 one, ARG2 two, \ - gpointer userdata) { \ - return reinterpret_cast<TYPE*>(userdata)->METHOD(widget, one, two); \ - } \ - \ - virtual RETURN METHOD(GtkWidget* widget, ARG1 one, ARG2 two); - -#define CHROMEGTK_CALLBACK_3(TYPE, RETURN, METHOD, ARG1, ARG2, ARG3) \ - static RETURN METHOD ## Thunk(GtkWidget* widget, ARG1 one, ARG2 two, \ - ARG3 three, gpointer userdata) { \ - return reinterpret_cast<TYPE*>(userdata)-> \ - METHOD(widget, one, two, three); \ - } \ - \ - virtual RETURN METHOD(GtkWidget* widget, ARG1 one, ARG2 two, ARG3 three); - -#define CHROMEGTK_CALLBACK_4(TYPE, RETURN, METHOD, ARG1, ARG2, ARG3, ARG4) \ - static RETURN METHOD ## Thunk(GtkWidget* widget, ARG1 one, ARG2 two, \ - ARG3 three, ARG4 four, \ - gpointer userdata) { \ - return reinterpret_cast<TYPE*>(userdata)-> \ - METHOD(widget, one, two, three, four); \ - } \ - \ - virtual RETURN METHOD(GtkWidget* widget, ARG1 one, ARG2 two, \ - ARG3 three, ARG4 four); - -#define CHROMEGTK_CALLBACK_5(TYPE, RETURN, METHOD, ARG1, ARG2, ARG3, ARG4, \ - ARG5) \ - static RETURN METHOD ## Thunk(GtkWidget* widget, ARG1 one, ARG2 two, \ - ARG3 three, ARG4 four, ARG5 five, \ - gpointer userdata) { \ - return reinterpret_cast<TYPE*>(userdata)-> \ - METHOD(widget, one, two, three, four, five); \ - } \ - \ - virtual RETURN METHOD(GtkWidget* widget, ARG1 one, ARG2 two, \ - ARG3 three, ARG4 four, ARG5 five); - -#define CHROMEGTK_CALLBACK_6(TYPE, RETURN, METHOD, ARG1, ARG2, ARG3, ARG4, \ - ARG5, ARG6) \ - static RETURN METHOD ## Thunk(GtkWidget* widget, ARG1 one, ARG2 two, \ - ARG3 three, ARG4 four, ARG5 five, \ - ARG6 six, gpointer userdata) { \ - return reinterpret_cast<TYPE*>(userdata)-> \ - METHOD(widget, one, two, three, four, five, six); \ - } \ - \ - virtual RETURN METHOD(GtkWidget* widget, ARG1 one, ARG2 two, \ - ARG3 three, ARG4 four, ARG5 five, ARG6 six); + virtual RETURN METHOD(SENDER, ARG1); + +#define CHROMEG_CALLBACK_2(CLASS, RETURN, METHOD, SENDER, ARG1, ARG2) \ + static RETURN METHOD ## Thunk(SENDER sender, ARG1 one, ARG2 two, \ + gpointer userdata) { \ + return reinterpret_cast<CLASS*>(userdata)->METHOD(sender, one, two); \ + } \ + \ + virtual RETURN METHOD(SENDER, ARG1, ARG2); + +#define CHROMEG_CALLBACK_3(CLASS, RETURN, METHOD, SENDER, ARG1, ARG2, ARG3) \ + static RETURN METHOD ## Thunk(SENDER sender, ARG1 one, ARG2 two, \ + ARG3 three, gpointer userdata) { \ + return reinterpret_cast<CLASS*>(userdata)-> \ + METHOD(sender, one, two, three); \ + } \ + \ + virtual RETURN METHOD(SENDER, ARG1, ARG2, ARG3); + +#define CHROMEG_CALLBACK_4(CLASS, RETURN, METHOD, SENDER, ARG1, ARG2, ARG3, \ + ARG4) \ + static RETURN METHOD ## Thunk(SENDER sender, ARG1 one, ARG2 two, \ + ARG3 three, ARG4 four, \ + gpointer userdata) { \ + return reinterpret_cast<CLASS*>(userdata)-> \ + METHOD(sender, one, two, three, four); \ + } \ + \ + virtual RETURN METHOD(SENDER, ARG1, ARG2, ARG3, ARG4); + +#define CHROMEG_CALLBACK_5(CLASS, RETURN, METHOD, SENDER, ARG1, ARG2, ARG3, \ + ARG4, ARG5) \ + static RETURN METHOD ## Thunk(SENDER sender, ARG1 one, ARG2 two, \ + ARG3 three, ARG4 four, ARG5 five, \ + gpointer userdata) { \ + return reinterpret_cast<CLASS*>(userdata)-> \ + METHOD(sender, one, two, three, four, five); \ + } \ + \ + virtual RETURN METHOD(SENDER, ARG1, ARG2, ARG3, ARG4, ARG5); + +#define CHROMEG_CALLBACK_6(CLASS, RETURN, METHOD, SENDER, ARG1, ARG2, ARG3, \ + ARG4, ARG5, ARG6) \ + static RETURN METHOD ## Thunk(SENDER sender, ARG1 one, ARG2 two, \ + ARG3 three, ARG4 four, ARG5 five, \ + ARG6 six, gpointer userdata) { \ + return reinterpret_cast<CLASS*>(userdata)-> \ + METHOD(sender, one, two, three, four, five, six); \ + } \ + \ + virtual RETURN METHOD(SENDER, ARG1, ARG2, ARG3, ARG4, ARG5, ARG6); + +// These macros handle the common case where the sender object will be a +// GtkWidget*. +#define CHROMEGTK_CALLBACK_0(CLASS, RETURN, METHOD) \ + CHROMEG_CALLBACK_0(CLASS, RETURN, METHOD, GtkWidget*); + +#define CHROMEGTK_CALLBACK_1(CLASS, RETURN, METHOD, ARG1) \ + CHROMEG_CALLBACK_1(CLASS, RETURN, METHOD, GtkWidget*, ARG1); + +#define CHROMEGTK_CALLBACK_2(CLASS, RETURN, METHOD, ARG1, ARG2) \ + CHROMEG_CALLBACK_2(CLASS, RETURN, METHOD, GtkWidget*, ARG1, ARG2); + +#define CHROMEGTK_CALLBACK_3(CLASS, RETURN, METHOD, ARG1, ARG2, ARG3) \ + CHROMEG_CALLBACK_3(CLASS, RETURN, METHOD, GtkWidget*, ARG1, ARG2, ARG3); + +#define CHROMEGTK_CALLBACK_4(CLASS, RETURN, METHOD, ARG1, ARG2, ARG3, ARG4) \ + CHROMEG_CALLBACK_4(CLASS, RETURN, METHOD, GtkWidget*, ARG1, ARG2, ARG3, ARG4); + +#define CHROMEGTK_CALLBACK_5(CLASS, RETURN, METHOD, ARG1, ARG2, ARG3, ARG4, \ + ARG5) \ + CHROMEG_CALLBACK_5(CLASS, RETURN, METHOD, GtkWidget*, ARG1, ARG2, ARG3, \ + ARG4, ARG5); + +#define CHROMEGTK_CALLBACK_6(CLASS, RETURN, METHOD, ARG1, ARG2, ARG3, ARG4, \ + ARG5, ARG6) \ + CHROMEG_CALLBACK_6(CLASS, RETURN, METHOD, GtkWidget*, ARG1, ARG2, ARG3, \ + ARG4, ARG5, ARG6); #endif // APP_GTK_SIGNAL_H_ |