X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=src%2Fconsole-gtk.h;h=01e48d7ecb29d3d0a86a851cf027d004701a96d4;hb=28564a29ab78d3c9b1e43b8ec495f4d904340c7b;hp=31c50552cdee239a62c2170abc1b845caa32c2a6;hpb=7ee7b9fd0c91842f267cf6e412286d647f68e32a;p=chise%2Fxemacs-chise.git.1 diff --git a/src/console-gtk.h b/src/console-gtk.h index 31c5055..01e48d7 100644 --- a/src/console-gtk.h +++ b/src/console-gtk.h @@ -170,6 +170,12 @@ struct gtk_frame /* Are we iconfied right now? */ unsigned int iconified_p :1; + /* Data for widget callbacks. It is impossible to pass all the necessary + data through the GTK signal API so instead it is registered here and the + hash key is passed instead. */ + Lisp_Object widget_instance_hash_table; + Lisp_Object widget_callback_hash_table; + Lisp_Object widget_callback_ex_hash_table; }; #define FRAME_GTK_DATA(f) FRAME_TYPE_DATA (f, gtk) @@ -191,6 +197,17 @@ struct gtk_frame #define FRAME_GTK_TOTALLY_VISIBLE_P(f) (FRAME_GTK_DATA (f)->totally_visible_p) #define FRAME_GTK_VISIBLE_P(f) (FRAME_GTK_DATA (f)->visible_p) #define FRAME_GTK_TOP_LEVEL_FRAME_P(f) (FRAME_GTK_DATA (f)->top_level_frame_p) +#define FRAME_GTK_WIDGET_INSTANCE_HASH_TABLE(f) (FRAME_GTK_DATA (f)->widget_instance_hash_table) +#define FRAME_GTK_WIDGET_CALLBACK_HASH_TABLE(f) (FRAME_GTK_DATA (f)->widget_callback_hash_table) +#define FRAME_GTK_WIDGET_CALLBACK_EX_HASH_TABLE(f) (FRAME_GTK_DATA (f)->widget_callback_ex_hash_table) + +/* Special data used to quickly identify the frame that contains a widget. */ +#define GTK_DATA_FRAME_IDENTIFIER "xemacs::frame" + +/* The hashcode in the frame hash table of a tab_control tab's callback data. */ +#define GTK_DATA_TAB_HASHCODE_IDENTIFIER "xemacs::tab_hashcode" + +#define GTK_DATA_GUI_IDENTIFIER "xemacs::gui_id" /* Variables associated with the X display frame this emacs is using. */ @@ -205,6 +222,7 @@ extern int gtk_interline_space; extern int gtk_selection_timeout; +struct frame *gtk_widget_to_frame (GtkWidget *); struct frame *gtk_any_window_to_frame (struct device *d, GdkWindow *); struct frame *gtk_window_to_frame (struct device *d, GdkWindow *); struct frame *gtk_any_widget_or_parent_to_frame (struct device *d, GtkWidget *widget);