summaryrefslogtreecommitdiffstats
path: root/app/gtk_signal.h
diff options
context:
space:
mode:
authorestade@chromium.org <estade@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-04-07 21:38:44 +0000
committerestade@chromium.org <estade@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-04-07 21:38:44 +0000
commitf0dfb8223d5a73cacd2dbaafdd890adec101d5c7 (patch)
tree640236f98c50fa61b7ea6e6424c59b04b207f5eb /app/gtk_signal.h
parentd43002e2c5da97a28eecbd552e4f4ec027a19179 (diff)
downloadchromium_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.h151
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_