changeset 4908:b3ce27ca7647

various fixes related to gtk, redisplay-xlike-inc.c -------------------- ChangeLog entries follow: -------------------- src/ChangeLog addition: 2010-02-01 Ben Wing <ben@xemacs.org> * compiler.h: Create a USED() macro to force unused-var warnings to go away, in certain cases where it's inconvenient to do otherwise (e.g. when THIS_IS_GTK in redisplay-xlike-inc.c). * console-x.h: Remove unneeded decls, make some static. * redisplay-xlike-inc.c: * console-xlike-inc.h: New file. Include defns from redisplay-xlike-inc.c that may be useful in other XLIKE files. Correct the handling of colors and font-style setting functions in the xlike defns. Lots of fixes in the GTK-specific defns. * depend: Regenerate. * event-xlike-inc.c: * event-xlike-inc.c (USE_UNICODE_MAP): * event-xlike-inc.c (endif): * gccache-gtk.c: * gtk-glue.c (xemacs_list_to_gtklist): * gtk-glue.c (xemacs_gtklist_to_list): * gtk-glue.c (FROB): * gtk-glue.c (face_to_gc): * gtk-glue.c (face_to_style): * gtk-glue.c (gdk_event_to_emacs_event): * gtk-xemacs.h (struct _GtkXEmacs): * gtk-xemacs.h (struct _GtkXEmacsClass): * objects-xlike-inc.c: Cosmetic, comment fixes. * glyphs.c (pixmap_to_lisp_data): Unused var fixes. * gtk-glue.c: * gccache-gtk.c: * gtk-xemacs.c: * gtk-xemacs.h: * objects-xlike-inc.c: * ui-gtk.c: * ui-gtk.h: * xgccache.c: * xgccache.c (GC_CACHE_SIZE): * xgccache.h: Misc include-file fixes. * objects-xlike-inc.c (XFUN): * objects-xlike-inc.c (xlistfonts_checking_charset): Combine some ifdeffed stuff using defs in console-xlike-inc.h. * redisplay-gtk.c: * redisplay-gtk.c (THIS_IS_GTK): * redisplay-gtk.c (XLIKE_bevel_area): * redisplay-gtk.c (XLIKE_ring_bell): * redisplay-gtk.c (gdk_draw_text_image): Fix numerous compile problems. Delete gtk_output_shadows(), which mostly duplicates generic bevel_modeline(). Fix up gtk_bevel_modeline() into XLIKE_bevel_area() and make use of the style var properly to set the appropriate GTK constant. * redisplay-x.c: * redisplay-x.c (XLIKE_window_output_begin): * redisplay-x.c (XLIKE_window_output_end): * redisplay-x.c (XLIKE_bevel_area): * redisplay-x.c (x_output_shadows): * redisplay-x.c (XLIKE_ring_bell): Make x_output_shadows be static. Change the defn of various functions to look like XLIKE_foo() so it matches the calling convention elsewhere. * redisplay-xlike-inc.c: * redisplay-xlike-inc.c (NEED_GCCACHE_H): * redisplay-xlike-inc.c (XLIKE_text_width): * redisplay-xlike-inc.c (XLIKE_get_gc): * redisplay-xlike-inc.c (XLIKE_text_width_single_run): * redisplay-xlike-inc.c (XFT_FROB_LISP_COLOR): * redisplay-xlike-inc.c (XLIKE_output_xlike_pixmap): * redisplay-xlike-inc.c (XLIKE_output_pixmap): * redisplay-xlike-inc.c (XLIKE_output_vertical_divider): * redisplay-xlike-inc.c (XLIKE_flash): Lots of header fixes. Lots of stuff moved to console-xlike-inc.h. Use XFUN() to generate function names instead of directly calling XLIKE_PASTE(). Remove unnecessary prototypes. Unify calls to text_width funs. Make XLIKE_get_gc non-static since it's called from gtk. Change the color-function calls and fill-style-setting calls to match the changes in console-xlike-inc.h. Use USED() to avoid some warnings. * symsinit.h: Sort the prototypes, and add a fun `sort-symsinit' in a comment that does the sorting (using sort-regexp-fields). * symsinit.h (init_number): * sysgtk.h: New file, wraps the various GTK headers. * sysgdkx.h: New file, wraps <gtk/gdkx.h>. Keep this separate to * event-gtk.h: Delete. Combine stuff into console-gtk.h. help isolate X-specific code from GTK. * device-gtk.c: * event-gtk.c: * console-gtk.h: * frame-gtk.c: * gccache-gtk.c: * gccache-gtk.h: * glyphs-gtk.c (gtk_colorize_image_instance): * glyphs-gtk.h: * gtk-xemacs.h: * objects-gtk.c: * objects-gtk.c (MAX_FONT_COUNT): * ui-gtk.h: Use sysgtk.h or sysgdkx.h instead of directly including GTK headers. Don't include event-gtk.h.
author Ben Wing <ben@xemacs.org>
date Mon, 01 Feb 2010 02:15:28 -0600
parents 9e7f5a77cc84
children 87175eb65ff4 e813cf16c015
files src/ChangeLog src/compiler.h src/console-gtk.h src/console-x.h src/console-xlike-inc.h src/depend src/device-gtk.c src/event-gtk.c src/event-gtk.h src/event-xlike-inc.c src/frame-gtk.c src/gccache-gtk.c src/gccache-gtk.h src/glyphs-gtk.c src/glyphs-gtk.h src/glyphs.c src/gtk-glue.c src/gtk-xemacs.c src/gtk-xemacs.h src/objects-gtk.c src/objects-xlike-inc.c src/redisplay-gtk.c src/redisplay-x.c src/redisplay-xlike-inc.c src/symsinit.h src/sysgdkx.h src/sysgtk.h src/ui-gtk.c src/ui-gtk.h src/xgccache.c src/xgccache.h
diffstat 31 files changed, 911 insertions(+), 730 deletions(-) [+]
line wrap: on
line diff
--- a/src/ChangeLog	Mon Feb 01 01:05:28 2010 -0600
+++ b/src/ChangeLog	Mon Feb 01 02:15:28 2010 -0600
@@ -1,3 +1,121 @@
+2010-02-01  Ben Wing  <ben@xemacs.org>
+
+	* compiler.h:
+	Create a USED() macro to force unused-var warnings to go away,
+	in certain cases where it's inconvenient to do otherwise (e.g.
+	when THIS_IS_GTK in redisplay-xlike-inc.c).
+	
+	* console-x.h:
+	Remove unneeded decls, make some static.
+
+	* redisplay-xlike-inc.c:
+	* console-xlike-inc.h: New file.  Include defns from
+	redisplay-xlike-inc.c that may be useful in other XLIKE files.
+	Correct the handling of colors and font-style setting functions
+	in the xlike defns.  Lots of fixes in the GTK-specific defns.
+	
+	* depend: Regenerate.
+	
+	* event-xlike-inc.c:
+	* event-xlike-inc.c (USE_UNICODE_MAP):
+	* event-xlike-inc.c (endif):
+	* gccache-gtk.c:
+	* gtk-glue.c (xemacs_list_to_gtklist):
+	* gtk-glue.c (xemacs_gtklist_to_list):
+	* gtk-glue.c (FROB):
+	* gtk-glue.c (face_to_gc):
+	* gtk-glue.c (face_to_style):
+	* gtk-glue.c (gdk_event_to_emacs_event):
+	* gtk-xemacs.h (struct _GtkXEmacs):
+	* gtk-xemacs.h (struct _GtkXEmacsClass):
+	* objects-xlike-inc.c:
+	Cosmetic, comment fixes.
+	
+	* glyphs.c (pixmap_to_lisp_data):
+	Unused var fixes.
+	
+
+	* gtk-glue.c:
+	* gccache-gtk.c:
+	* gtk-xemacs.c:
+	* gtk-xemacs.h:
+	* objects-xlike-inc.c:
+	* ui-gtk.c:
+	* ui-gtk.h:
+	* xgccache.c:
+	* xgccache.c (GC_CACHE_SIZE):
+	* xgccache.h:
+	Misc include-file fixes.
+	
+	* objects-xlike-inc.c (XFUN):
+	* objects-xlike-inc.c (xlistfonts_checking_charset):
+	Combine some ifdeffed stuff using defs in console-xlike-inc.h.
+	
+	* redisplay-gtk.c:
+	* redisplay-gtk.c (THIS_IS_GTK):
+	* redisplay-gtk.c (XLIKE_bevel_area):
+	* redisplay-gtk.c (XLIKE_ring_bell):
+	* redisplay-gtk.c (gdk_draw_text_image):
+	Fix numerous compile problems.  Delete gtk_output_shadows(),
+	which mostly duplicates generic bevel_modeline().  Fix up
+	gtk_bevel_modeline() into XLIKE_bevel_area() and make use of
+	the style var properly to set the appropriate GTK constant.
+	
+	* redisplay-x.c:
+	* redisplay-x.c (XLIKE_window_output_begin):
+	* redisplay-x.c (XLIKE_window_output_end):
+	* redisplay-x.c (XLIKE_bevel_area):
+	* redisplay-x.c (x_output_shadows):
+	* redisplay-x.c (XLIKE_ring_bell):
+	Make x_output_shadows be static.  Change the defn of various
+	functions to look like XLIKE_foo() so it matches the calling
+	convention elsewhere.
+	
+	* redisplay-xlike-inc.c:
+	* redisplay-xlike-inc.c (NEED_GCCACHE_H):
+	* redisplay-xlike-inc.c (XLIKE_text_width):
+	* redisplay-xlike-inc.c (XLIKE_get_gc):
+	* redisplay-xlike-inc.c (XLIKE_text_width_single_run):
+	* redisplay-xlike-inc.c (XFT_FROB_LISP_COLOR):
+	* redisplay-xlike-inc.c (XLIKE_output_xlike_pixmap):
+	* redisplay-xlike-inc.c (XLIKE_output_pixmap):
+	* redisplay-xlike-inc.c (XLIKE_output_vertical_divider):
+	* redisplay-xlike-inc.c (XLIKE_flash):
+	Lots of header fixes.  Lots of stuff moved to console-xlike-inc.h.
+	Use XFUN() to generate function names instead of directly
+	calling XLIKE_PASTE().  Remove unnecessary prototypes.
+	Unify calls to text_width funs.  Make XLIKE_get_gc non-static
+	since it's called from gtk.  Change the color-function calls
+	and fill-style-setting calls to match the changes in
+	console-xlike-inc.h.  Use USED() to avoid some warnings.
+	
+	* symsinit.h:
+	Sort the prototypes, and add a fun `sort-symsinit' in a comment
+	that does the sorting (using sort-regexp-fields).
+	
+	* symsinit.h (init_number):
+	
+	
+	* sysgtk.h: New file, wraps the various GTK headers.
+	* sysgdkx.h: New file, wraps <gtk/gdkx.h>.  Keep this separate to
+	* event-gtk.h: Delete.  Combine stuff into console-gtk.h.
+	help isolate X-specific code from GTK.
+
+	* device-gtk.c:
+	* event-gtk.c:
+	* console-gtk.h:
+	* frame-gtk.c:
+	* gccache-gtk.c:
+	* gccache-gtk.h:
+	* glyphs-gtk.c (gtk_colorize_image_instance):
+	* glyphs-gtk.h:
+	* gtk-xemacs.h:
+	* objects-gtk.c:
+	* objects-gtk.c (MAX_FONT_COUNT):
+	* ui-gtk.h:
+	Use sysgtk.h or sysgdkx.h instead of directly including GTK
+	headers.  Don't include event-gtk.h.
+
 2010-02-01  Ben Wing  <ben@xemacs.org>
 
 	* abbrev.c (abbrev_match_mapper):
--- a/src/compiler.h	Mon Feb 01 01:05:28 2010 -0600
+++ b/src/compiler.h	Mon Feb 01 02:15:28 2010 -0600
@@ -245,6 +245,13 @@
 # endif
 #endif /* UNUSED */
 
+/* Declaration that variable or expression X is "used" to defeat
+   "unused variable" warnings.  DON'T DO THIS FOR PARAMETERS IF IT ALL
+   POSSIBLE.  Use an UNUSED() or USED_IF_*() declaration on the parameter
+   instead.  Don't do this for unused local variables that should really
+   just be deleted. */
+#define USED(x) ((void) (x))
+
 #ifdef DEBUG_XEMACS
 # define REGISTER
 # define register
--- a/src/console-gtk.h	Mon Feb 01 01:05:28 2010 -0600
+++ b/src/console-gtk.h	Mon Feb 01 02:15:28 2010 -0600
@@ -36,7 +36,7 @@
 #ifdef HAVE_GTK
 
 #include "console.h"
-#include <gtk/gtk.h>
+#include "sysgtk.h"
 
 /* Variables associated with the X display frame this emacs is using. */
 
@@ -64,8 +64,6 @@
 		      int start_pixpos, int width, face_index findex,
 		      int cursor, int cursor_start, int cursor_width,
 		      int cursor_height);
-void gtk_output_shadows (struct frame *f, int x, int y, int width,
-		       int height, int shadow_thickness);
 GdkGC *gtk_get_gc (struct device *d, Lisp_Object font, Lisp_Object fg, Lisp_Object bg,
 		   Lisp_Object bg_pmap, Lisp_Object lwidth);
 
@@ -99,5 +97,17 @@
 extern void ungcpro_popup_callbacks (GUI_ID id);
 extern Lisp_Object get_gcpro_popup_callbacks (GUI_ID id);
 
+int gtk_event_to_emacs_event (struct frame *frame,
+			      GdkEvent *gdk_event,
+			      struct Lisp_Event *emacs_event);
+
+gint emacs_gtk_key_event_handler(GtkWidget *widget, GdkEventKey *event);
+gint emacs_gtk_button_event_handler(GtkWidget *widget, GdkEventButton *event);
+gint emacs_gtk_motion_event_handler (GtkWidget *widget, GdkEventMotion *event);
+
+gboolean emacs_shell_event_handler (GtkWidget *wid /* unused */,
+				    GdkEvent *event,
+				    gpointer closure);
+
 #endif /* HAVE_GTK */
 #endif /* _XEMACS_DEVICE_X_H_ */
--- a/src/console-x.h	Mon Feb 01 01:05:28 2010 -0600
+++ b/src/console-x.h	Mon Feb 01 02:15:28 2010 -0600
@@ -137,15 +137,6 @@
 		      int start_pixpos, int width, face_index findex,
 		      int cursor, int cursor_start, int cursor_width,
 		      int cursor_height);
-void x_output_x_pixmap (struct frame *f, Lisp_Image_Instance *p,
-			int x, int y, int xoffset, int yoffset,
-			int width, int height,
-			unsigned long fg, unsigned long bg,
-			GC override_gc);
-void x_output_shadows (struct frame *f, int x, int y, int width,
-		       int height, GC top_shadow_gc,
-		       GC bottom_shadow_gc, GC background_gc,
-		       int shadow_thickness, int edges);
 void x_generate_shadow_pixels (struct frame *f,
 			       unsigned long *top_shadow,
 			       unsigned long *bottom_shadow,
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/console-xlike-inc.h	Mon Feb 01 02:15:28 2010 -0600
@@ -0,0 +1,307 @@
+/* Definitions for use in *-xlike-inc.c files.
+   Copyright (C) 2010 Ben Wing.
+
+This file is part of XEmacs.
+
+XEmacs is free software; you can redistribute it and/or modify it
+under the terms of the GNU General Public License as published by the
+Free Software Foundation; either version 2, or (at your option) any
+later version.
+
+XEmacs is distributed in the hope that it will be useful, but WITHOUT
+ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License
+along with XEmacs; see the file COPYING.  If not, write to
+the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA.  */
+
+/* Synched up with: Not in FSF. */
+
+#ifndef INCLUDED_console_xlike_inc_h_
+#define INCLUDED_console_xlike_inc_h_
+
+/* X and GTK are quite similar, since GTK based its structure on Xlib.
+   However, there are many small differences.  Creating two separate
+   versions of the code, as Bill Perry did originally, is easier to code
+   but hard to maintain and leads to bit rot.  On the other hand, trying to
+   abstract out into device methods, as is done generally for different
+   window systems, gets very hairy very quickly because the differences are
+   on the level of individual library functions, constants and types, of
+   which there are large number.  Abstracting them into device methods
+   would lead to a large number of very small functions and very
+   hard-to-read code.
+
+   Instead, we handle the situation by having only one copy, placed in a
+   file called *-xlike-inc.c (e.g. redisplay-xlike-inc.c) and
+   conditionalizing using ifdefs.  Because we can compile with both X and
+   GTK at once, we include this file inside of the appropriate
+   device-specific file (e.g. redisplay-gtk.c or redisplay-x.c).  The `inc'
+   in *-xlike-inc.c indicates that this is a file meant to be included in
+   another file, despite the fact that it is a .c file.
+
+   To signal which variety of "xlike" we are compiling for, either
+   THIS_IS_X or THIS_IS_GTK needs to be defined, prior to including the
+   *-xlike-inc.c file. */
+
+
+/* About the representation of color below:
+
+   X has two ways of representing a color: (a) as an unsigned long
+   representing a color pixel value, i.e. the actual value stored in memory
+   or a file at a particular pixel location to indicate that the pixel
+   takes on a specific color; and (b) an XColor structure, which
+   encapsulates both the RGB components of a color and the associated color
+   pixel value.
+
+   We call the former type XLIKE_PIXEL and the latter XLIKE_COLOR, along
+   with routines to convert from one to the other.  Differences between the
+   two in specific functions and structures should be abstracted using the
+   XLIKE_FOO() routines, e.g. XLIKE_SET_GC_COLOR(). */
+
+#if defined (THIS_IS_X) && defined (THIS_IS_GTK)
+#error "Exactly one of THIS_IS_X and THIS_IS_GTK may be defined."
+#endif
+
+#if !defined (THIS_IS_X) && !defined (THIS_IS_GTK)
+#error "Either THIS_IS_X or THIS_IS_GTK must be defined."
+#endif
+
+#ifdef THIS_IS_X
+#  include "console-x-impl.h"
+#  ifdef NEED_GCCACHE_H
+#    include "xgccache.h"
+#  endif
+#  ifdef NEED_GLYPHS_H
+#    include "glyphs-x.h"
+#  endif
+#  ifdef NEED_OBJECTS_IMPL_H
+#    include "objects-x-impl.h"
+#  endif
+#else /* THIS_IS_GTK */
+#  include "console-gtk-impl.h"
+#  ifdef NEED_GCCACHE_H
+#    include "gccache-gtk.h"
+#  endif
+#  ifdef NEED_GLYPHS_H
+#    include "glyphs-gtk.h"
+#  endif
+#  ifdef NEED_OBJECTS_IMPL_H
+#    include "objects-gtk-impl.h"
+#  endif
+#endif /* THIS_IS_GTK */
+
+/***************************************************************************/
+/*                           Common definitions                            */
+/***************************************************************************/
+
+#define XLIKE_PASTE_1(a,b) a##_##b
+#define XLIKE_PASTE(a,b) XLIKE_PASTE_1(a,b)
+#define XFUN(name) XLIKE_PASTE (XLIKE_NAME, name)
+
+#define XLIKE_CONSOLE_HAS_METHOD_1(xlike, name) CONSOLE_HAS_METHOD (xlike, name)
+#define XLIKE_CONSOLE_HAS_METHOD(name) \
+  XLIKE_CONSOLE_HAS_METHOD_1 (XLIKE_NAME, name)
+
+#define XCOLOR_INSTANCE_XLIKE_COLOR(x) \
+  COLOR_INSTANCE_XLIKE_COLOR (XCOLOR_INSTANCE (x))
+
+#ifdef THIS_IS_X
+
+/***************************************************************************/
+/*               Definitions implementing X flavor of XLIKE                */
+/***************************************************************************/
+
+#define XLIKE_NAME x
+#define USED_IF_X(var) var
+#define USED_IF_GTK(var) UNUSED (var)
+
+/* types */
+typedef Display * XLIKE_DISPLAY;
+typedef Window XLIKE_WINDOW;
+typedef GC XLIKE_GC;
+typedef XRectangle XLIKE_RECTANGLE;
+typedef XGCValues XLIKE_GCVALUES;
+typedef XColor XLIKE_COLOR;
+typedef unsigned long XLIKE_PIXEL;
+
+/* constants */
+#define XLIKE_NONE None
+#define XLIKE_FALSE False
+
+#define XLIKE_GC_BACKGROUND GCBackground
+#define XLIKE_GC_CLIP_MASK GCClipMask
+#define XLIKE_GC_CLIP_X_ORIGIN GCClipXOrigin
+#define XLIKE_GC_CLIP_Y_ORIGIN GCClipYOrigin
+#define XLIKE_GC_EXPOSURES GCGraphicsExposures
+#define XLIKE_GC_FILL GCFillStyle
+#define XLIKE_GC_FONT GCFont
+#define XLIKE_GC_FOREGROUND GCForeground
+#define XLIKE_GC_FUNCTION GCFunction
+#define XLIKE_GC_LINE_WIDTH GCLineWidth
+#define XLIKE_GC_STIPPLE GCStipple
+#define XLIKE_GC_TILE GCTile
+
+#define XLIKE_GX_COPY GXcopy
+#define XLIKE_GX_XOR GXxor
+
+#define XLIKE_FILL_STIPPLED FillStippled
+#define XLIKE_FILL_OPAQUE_STIPPLED FillOpaqueStippled
+#define XLIKE_FILL_TILED FillTiled
+#define XLIKE_FILL_SOLID FillSolid
+
+/* functions */
+#define GET_XLIKE_DISPLAY(d) DEVICE_X_DISPLAY (d)
+#define GET_XLIKE_X_DISPLAY(d) DEVICE_X_DISPLAY (d)
+#define GET_XLIKE_WINDOW(w) XtWindow (FRAME_X_TEXT_WIDGET (f))
+#define XLIKE_FILL_RECTANGLE(dpy, x_win, gc, x, y, width, height) \
+  XFillRectangle (dpy, x_win, gc, x, y, width, height)
+#define XLIKE_DRAW_RECTANGLE(dpy, x_win, gc, x, y, width, height) \
+  XDrawRectangle (dpy, x_win, gc, x, y, width, height)
+#define XLIKE_DRAW_LINE(dpy, x_win, gc, x1, y1, x2, y2) \
+  XDrawLine (dpy, x_win, gc, x1, y1, x2, y2)
+#define XLIKE_TEXT_WIDTH(fi, ptr, len) XTextWidth (fi, (char *) ptr, len)
+#define XLIKE_TEXT_WIDTH_WIDE(fi, ptr, len) XTextWidth16 (fi, (XChar2b *) ptr, len)
+
+#define XLIKE_DISPLAY_LINE_HEIGHT(dl) DISPLAY_LINE_HEIGHT (dl)
+#define XLIKE_DISPLAY_LINE_YPOS(dl) DISPLAY_LINE_YPOS (dl)
+#define XLIKE_DISPLAY_LINE_TOP_CLIP(dl) ((dl)->top_clip)
+#define XLIKE_SET_CLIP_RECTANGLE(dpy, gc, xorig, yorig, prect)		\
+  /* #### why not Unsorted? */						\
+  XSetClipRectangles (dpy, gc, xorig, yorig, prect, 1, YXBanded)
+#define XLIKE_CLEAR_CLIP_MASK(dpy, gc)		\
+do						\
+  {						\
+    XSetClipMask (dpy, gc, None);		\
+    XSetClipOrigin (dpy, gc, 0, 0);		\
+  }						\
+while (0)
+#define XLIKE_FLUSH(dpy) XSync (dpy, False)
+#define XLIKE_CLEAR_AREA(dpy, win, x, y, width, height) \
+  XClearArea (dpy, win, x, y, width, height, False)
+ 
+#define IMAGE_INSTANCE_XLIKE_MASK IMAGE_INSTANCE_X_MASK
+#define XIMAGE_INSTANCE_XLIKE_PIXMAP XIMAGE_INSTANCE_X_PIXMAP
+#define COLOR_INSTANCE_XLIKE_COLOR COLOR_INSTANCE_X_COLOR
+#define FONT_INSTANCE_XLIKE_FONT FONT_INSTANCE_X_FONT
+#define DEVICE_XLIKE_GC_CACHE DEVICE_X_GC_CACHE
+#define DEVICE_XLIKE_GRAY_PIXMAP DEVICE_X_GRAY_PIXMAP
+#define XLIKE_SET_GC_FILL(gc, style) ((gc).fill_style = (style))
+#define XLIKE_COLOR_TO_PIXEL(c) ((c).pixel)
+#define XLIKE_SET_GC_COLOR(lval, rval) ((lval) = (rval).pixel)
+#define XLIKE_SET_GC_PIXEL(lval, rval) ((lval) = (rval))
+#define XLIKE_FONT_NUM(val) ((val)->fid)
+
+/************ End X flavor of XLIKE **********/
+
+
+#else /* THIS_IS_GTK */
+
+/***************************************************************************/
+/*              Definitions implementing GTK flavor of XLIKE               */
+/***************************************************************************/
+
+#define XLIKE_NAME gtk
+#define USED_IF_X(var) UNUSED (var)
+#define USED_IF_GTK(var) var
+
+/*types */
+typedef void * XLIKE_DISPLAY;
+typedef GdkWindow * XLIKE_WINDOW;
+typedef GdkGC * XLIKE_GC;
+typedef GdkRectangle XLIKE_RECTANGLE;
+typedef GdkGCValues XLIKE_GCVALUES;
+typedef GdkColor XLIKE_COLOR;
+typedef gulong   XLIKE_PIXEL;
+
+/* constants */
+#define XLIKE_NONE 0
+#define XLIKE_FALSE FALSE
+
+#define XLIKE_GC_BACKGROUND GDK_GC_BACKGROUND
+#define XLIKE_GC_CLIP_MASK GDK_GC_CLIP_MASK
+#define XLIKE_GC_CLIP_X_ORIGIN GDK_GC_CLIP_X_ORIGIN
+#define XLIKE_GC_CLIP_Y_ORIGIN GDK_GC_CLIP_Y_ORIGIN
+#define XLIKE_GC_EXPOSURES GDK_GC_EXPOSURES
+#define XLIKE_GC_FILL GDK_GC_FILL
+#define XLIKE_GC_FONT GDK_GC_FONT
+#define XLIKE_GC_FOREGROUND GDK_GC_FOREGROUND
+#define XLIKE_GC_FUNCTION GDK_GC_FUNCTION
+#define XLIKE_GC_LINE_WIDTH GDK_GC_LINE_WIDTH
+#define XLIKE_GC_STIPPLE GDK_GC_STIPPLE
+#define XLIKE_GC_TILE GDK_GC_TILE
+
+#define XLIKE_GX_COPY GDK_COPY
+#define XLIKE_GX_XOR GDK_XOR
+
+#define XLIKE_FILL_STIPPLED GDK_STIPPLED
+#define XLIKE_FILL_OPAQUE_STIPPLED GDK_OPAQUE_STIPPLED
+#define XLIKE_FILL_TILED GDK_TILED
+#define XLIKE_FILL_SOLID GDK_SOLID
+
+/* functions */
+
+/* Avoid unused-variable warning involving D */
+#define GET_XLIKE_DISPLAY(d) (USED (d), NULL)
+#define GET_XLIKE_X_DISPLAY(d) (USED (d), GDK_DISPLAY ())
+#define GET_XLIKE_WINDOW(w) GET_GTK_WIDGET_WINDOW (FRAME_GTK_TEXT_WIDGET (w))
+#define XLIKE_FILL_RECTANGLE(dpy, x_win, gc, x, y, width, height)	\
+  (USED (dpy), gdk_draw_rectangle (GDK_DRAWABLE (x_win), gc, TRUE,	\
+                                   x, y, width, height))
+#define XLIKE_DRAW_RECTANGLE(dpy, x_win, gc, x, y, width, height)	\
+  (USED (dpy), gdk_draw_rectangle (GDK_DRAWABLE (x_win), gc, FALSE,	\
+                                   x, y, width, height))
+#define XLIKE_DRAW_LINE(dpy, x_win, gc, x1, y1, x2, y2)			\
+  (USED (dpy), gdk_draw_line (GDK_DRAWABLE (x_win), gc, x1, y1, x2, y2))
+#define XLIKE_TEXT_WIDTH(fi, ptr, len) \
+  gdk_text_width (fi, (char *) ptr, len)
+#define XLIKE_TEXT_WIDTH_WIDE(fi, ptr, len) \
+  gdk_text_width_wc (fi, (GdkWChar *) ptr, len)
+
+/* FIXME: This is totally bogus.  It removes dl->top_clip from the
+   equations.  If there is a bug involving this, fix it properly!
+   Or just ensure that top_clip is 0. */
+#define XLIKE_DISPLAY_LINE_HEIGHT(dl) \
+  ((dl)->ascent + (dl)->descent - (dl)->clip)
+#define XLIKE_DISPLAY_LINE_YPOS(dl) ((dl)->ypos - (dl)->ascent)
+#define XLIKE_DISPLAY_LINE_TOP_CLIP(dl) (0)
+#define XLIKE_SET_CLIP_RECTANGLE(dpy, gc, xorig, yorig, prect)	\
+do								\
+  {								\
+    USED (dpy);							\
+    gdk_gc_set_clip_rectangle (gc, prect);			\
+    gdk_gc_set_clip_origin (gc, xorig, yorig);			\
+  }								\
+while (0)
+#define XLIKE_CLEAR_CLIP_MASK(dpy, gc)		\
+do						\
+  {						\
+    USED (dpy);					\
+    gdk_gc_set_clip_rectangle (gc, NULL);	\
+    gdk_gc_set_clip_origin (gc, 0, 0);		\
+  }						\
+while (0)
+#define XLIKE_FLUSH(dpy) gdk_flush ()
+#define XLIKE_CLEAR_AREA(dpy, win, x, y, width, height) \
+  (USED (dpy), gdk_window_clear_area (win, x, y, width, height))
+
+#define IMAGE_INSTANCE_XLIKE_MASK IMAGE_INSTANCE_GTK_MASK
+#define XIMAGE_INSTANCE_XLIKE_PIXMAP XIMAGE_INSTANCE_GTK_PIXMAP
+#define COLOR_INSTANCE_XLIKE_COLOR(ci) (*COLOR_INSTANCE_GTK_COLOR (ci))
+#define FONT_INSTANCE_XLIKE_FONT FONT_INSTANCE_GTK_FONT
+#define DEVICE_XLIKE_GRAY_PIXMAP DEVICE_GTK_GRAY_PIXMAP
+#define DEVICE_XLIKE_GC_CACHE DEVICE_GTK_GC_CACHE
+#define XLIKE_SET_GC_FILL(gc, style) ((gc).fill = (style))
+#define XLIKE_COLOR_TO_PIXEL(c) ((c).pixel)
+#define XLIKE_SET_GC_COLOR(lval, rval) ((lval) = (rval))
+#define XLIKE_SET_GC_PIXEL(lval, rval) ((lval).pixel = (rval))
+#define XLIKE_FONT_NUM(val) (val)
+
+/************ End GTK flavor of XLIKE **********/
+
+#endif /* (not) THIS_IS_X */
+
+
+#endif /* INCLUDED_console_xlike_inc_h_ */
--- a/src/depend	Mon Feb 01 01:05:28 2010 -0600
+++ b/src/depend	Mon Feb 01 02:15:28 2010 -0600
@@ -32,8 +32,8 @@
 #endif
 #if defined(HAVE_XLIKE)
 event-xlike-inc.o: 
-objects-xlike-inc.o: 
-redisplay-xlike-inc.o: $(CONFIG_H) $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h EmacsFrame.h EmacsFrameP.h buffer.h bufslots.h casetab.h charset.h chartab.h coding-system-slots.h compiler.h conslots.h console-gtk-impl.h console-gtk.h console-impl.h console-x-impl.h console-x.h console.h debug.h device-impl.h device.h devslots.h dumper.h faces.h file-coding.h frame-impl.h frame.h frameslots.h gc.h gccache-gtk.h general-slots.h glyphs-gtk.h glyphs-x.h glyphs.h gutter.h lisp-disunion.h lisp-union.h lisp.h lrecord.h mc-alloc.h mule-ccl.h number-gmp.h number-mp.h number.h objects-gtk-impl.h objects-gtk.h objects-impl.h objects-x-impl.h objects-x.h objects.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysdep.h sysproc.h syssignal.h systime.h text.h vdb.h window-impl.h window.h winslots.h xgccache.h xintrinsic.h xintrinsicp.h xmotif.h xmprimitivep.h
+objects-xlike-inc.o: $(LWLIB_SRCDIR)/lwlib.h conslots.h console-gtk-impl.h console-gtk.h console-impl.h console-x-impl.h console-x.h console-xlike-inc.h console.h gccache-gtk.h glyphs-gtk.h glyphs-x.h glyphs.h objects-gtk-impl.h objects-gtk.h objects-impl.h objects-x-impl.h objects-x.h objects.h redisplay.h scrollbar.h specifier.h sysgtk.h window-impl.h window.h winslots.h xgccache.h xintrinsic.h
+redisplay-xlike-inc.o: $(CONFIG_H) $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h EmacsFrame.h EmacsFrameP.h buffer.h bufslots.h casetab.h charset.h chartab.h coding-system-slots.h compiler.h conslots.h console-gtk-impl.h console-gtk.h console-impl.h console-x-impl.h console-x.h console-xlike-inc.h console.h debug.h device-impl.h device.h devslots.h dumper.h faces.h file-coding.h frame-impl.h frame.h frameslots.h gc.h gccache-gtk.h general-slots.h glyphs-gtk.h glyphs-x.h glyphs.h gutter.h lisp-disunion.h lisp-union.h lisp.h lrecord.h mc-alloc.h mule-ccl.h number-gmp.h number-mp.h number.h objects-gtk-impl.h objects-gtk.h objects-impl.h objects-x-impl.h objects-x.h objects.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysdep.h sysgtk.h sysproc.h syssignal.h systime.h text.h vdb.h window-impl.h window.h winslots.h xgccache.h xintrinsic.h xintrinsicp.h xmotif.h xmprimitivep.h
 #endif
 #if defined(HAVE_X_WINDOWS)
 EmacsFrame.o: $(CONFIG_H) $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h EmacsFrame.h EmacsFrameP.h EmacsManager.h charset.h compiler.h conslots.h console-impl.h console-x-impl.h console-x.h console.h device-impl.h device.h devslots.h dumper.h faces.h frame-impl.h frame.h frameslots.h gc.h general-slots.h glyphs-x.h glyphs.h lisp-disunion.h lisp-union.h lisp.h lrecord.h mc-alloc.h number-gmp.h number-mp.h number.h objects-x.h objects.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h text.h toolbar.h vdb.h window-impl.h window.h winslots.h xintrinsic.h xintrinsicp.h xmotif.h xmprimitivep.h
@@ -50,8 +50,8 @@
 gui-x.o: $(CONFIG_H) $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h buffer.h bufslots.h casetab.h charset.h chartab.h compiler.h conslots.h console-impl.h console-x-impl.h console-x.h console.h device-impl.h device.h devslots.h dumper.h events.h frame.h gc.h general-slots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lisp.h lrecord.h mc-alloc.h menubar.h number-gmp.h number-mp.h number.h opaque.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h systime.h text.h vdb.h window-impl.h window.h winslots.h xintrinsic.h xmotif.h
 intl-x.o: $(CONFIG_H) $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h compiler.h console-x.h console.h dumper.h gc.h general-slots.h lisp-disunion.h lisp-union.h lisp.h lrecord.h mc-alloc.h number-gmp.h number-mp.h number.h symeval.h symsinit.h text.h vdb.h xintrinsic.h
 menubar-x.o: $(CONFIG_H) $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h EmacsFrame.h buffer.h bufslots.h casetab.h charset.h chartab.h commands.h compiler.h conslots.h console-impl.h console-x-impl.h console-x.h console.h device-impl.h device.h devslots.h dumper.h events.h frame-impl.h frame.h frameslots.h gc.h general-slots.h gui.h keymap.h lisp-disunion.h lisp-union.h lisp.h lrecord.h mc-alloc.h menubar.h number-gmp.h number-mp.h number.h opaque.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h systime.h text.h vdb.h window-impl.h window.h winslots.h xintrinsic.h
-objects-x.o: $(CONFIG_H) $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h charset.h compiler.h conslots.h console-impl.h console-x-impl.h console-x.h console.h device-impl.h device.h devslots.h dumper.h elhash.h font-mgr.h gc.h general-slots.h insdel.h lisp-disunion.h lisp-union.h lisp.h lrecord.h mc-alloc.h number-gmp.h number-mp.h number.h objects-impl.h objects-x-impl.h objects-x.h objects-xlike-inc.c objects.h specifier.h symeval.h symsinit.h text.h vdb.h xintrinsic.h
-redisplay-x.o: $(CONFIG_H) $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h EmacsFrame.h EmacsFrameP.h buffer.h bufslots.h casetab.h charset.h chartab.h coding-system-slots.h compiler.h conslots.h console-gtk-impl.h console-gtk.h console-impl.h console-x-impl.h console-x.h console.h debug.h device-impl.h device.h devslots.h dumper.h faces.h file-coding.h frame-impl.h frame.h frameslots.h gc.h gccache-gtk.h general-slots.h glyphs-gtk.h glyphs-x.h glyphs.h gutter.h lisp-disunion.h lisp-union.h lisp.h lrecord.h mc-alloc.h mule-ccl.h number-gmp.h number-mp.h number.h objects-gtk-impl.h objects-gtk.h objects-impl.h objects-x-impl.h objects-x.h objects.h redisplay-xlike-inc.c redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysdep.h sysproc.h syssignal.h systime.h text.h vdb.h window-impl.h window.h winslots.h xgccache.h xintrinsic.h xintrinsicp.h xmotif.h xmprimitivep.h
+objects-x.o: $(CONFIG_H) $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h charset.h compiler.h conslots.h console-gtk-impl.h console-gtk.h console-impl.h console-x-impl.h console-x.h console-xlike-inc.h console.h device-impl.h device.h devslots.h dumper.h elhash.h font-mgr.h gc.h gccache-gtk.h general-slots.h glyphs-gtk.h glyphs-x.h glyphs.h insdel.h lisp-disunion.h lisp-union.h lisp.h lrecord.h mc-alloc.h number-gmp.h number-mp.h number.h objects-gtk-impl.h objects-gtk.h objects-impl.h objects-x-impl.h objects-x.h objects-xlike-inc.c objects.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysgtk.h text.h vdb.h window-impl.h window.h winslots.h xgccache.h xintrinsic.h
+redisplay-x.o: $(CONFIG_H) $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h EmacsFrame.h EmacsFrameP.h buffer.h bufslots.h casetab.h charset.h chartab.h coding-system-slots.h compiler.h conslots.h console-gtk-impl.h console-gtk.h console-impl.h console-x-impl.h console-x.h console-xlike-inc.h console.h debug.h device-impl.h device.h devslots.h dumper.h faces.h file-coding.h frame-impl.h frame.h frameslots.h gc.h gccache-gtk.h general-slots.h glyphs-gtk.h glyphs-x.h glyphs.h gutter.h lisp-disunion.h lisp-union.h lisp.h lrecord.h mc-alloc.h mule-ccl.h number-gmp.h number-mp.h number.h objects-gtk-impl.h objects-gtk.h objects-impl.h objects-x-impl.h objects-x.h objects.h redisplay-xlike-inc.c redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysdep.h sysgtk.h sysproc.h syssignal.h systime.h text.h vdb.h window-impl.h window.h winslots.h xgccache.h xintrinsic.h xintrinsicp.h xmotif.h xmprimitivep.h
 scrollbar-x.o: $(CONFIG_H) $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h EmacsFrame.h compiler.h conslots.h console-impl.h console-x-impl.h console-x.h console.h device-impl.h device.h devslots.h dumper.h frame-impl.h frame.h frameslots.h gc.h general-slots.h glyphs-x.h glyphs.h lisp-disunion.h lisp-union.h lisp.h lrecord.h mc-alloc.h number-gmp.h number-mp.h number.h redisplay.h scrollbar-x.h scrollbar.h specifier.h symeval.h symsinit.h text.h vdb.h window-impl.h window.h winslots.h xintrinsic.h
 select-x.o: $(CONFIG_H) $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h charset.h compiler.h conslots.h console-impl.h console-x-impl.h console-x.h console.h device-impl.h device.h devslots.h dumper.h frame-impl.h frame.h frameslots.h gc.h general-slots.h lisp-disunion.h lisp-union.h lisp.h lrecord.h mc-alloc.h number-gmp.h number-mp.h number.h objects-x.h objects.h opaque.h redisplay.h select-common.h select.h specifier.h symeval.h symsinit.h systime.h text.h vdb.h xintrinsic.h xmotif.h
 toolbar-x.o: $(CONFIG_H) $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h EmacsFrame.h EmacsFrameP.h charset.h compiler.h conslots.h console-impl.h console-x-impl.h console-x.h console.h dumper.h faces.h frame-impl.h frame.h frameslots.h gc.h general-slots.h glyphs-x.h glyphs.h lisp-disunion.h lisp-union.h lisp.h lrecord.h mc-alloc.h number-gmp.h number-mp.h number.h objects-x.h objects.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h text.h toolbar-common.h toolbar.h vdb.h window-impl.h window.h winslots.h xintrinsic.h xintrinsicp.h xmotif.h xmprimitivep.h
@@ -66,28 +66,28 @@
 redisplay-tty.o: $(CONFIG_H) $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h compiler.h conslots.h console-impl.h console-tty-impl.h console-tty.h console.h device-impl.h device.h devslots.h dumper.h events.h faces.h frame-impl.h frame.h frameslots.h gc.h general-slots.h glyphs.h lisp-disunion.h lisp-union.h lisp.h lrecord.h lstream.h mc-alloc.h number-gmp.h number-mp.h number.h objects-impl.h objects-tty-impl.h objects-tty.h objects.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysdep.h syssignal.h systime.h systty.h text.h vdb.h window-impl.h window.h winslots.h
 #endif
 #if defined(HAVE_GTK)
-console-gtk.o: $(CONFIG_H) $(LISP_H) charset.h compiler.h conslots.h console-gtk-impl.h console-gtk.h console-impl.h console.h dumper.h elhash.h gc.h general-slots.h lisp-disunion.h lisp-union.h lisp.h lrecord.h mc-alloc.h number-gmp.h number-mp.h number.h process.h redisplay.h specifier.h symeval.h symsinit.h text.h vdb.h
-device-gtk.o: $(CONFIG_H) $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h compiler.h conslots.h console-gtk-impl.h console-gtk.h console-impl.h console.h device-impl.h device.h devslots.h dumper.h elhash.h events.h faces.h frame-impl.h frame.h frameslots.h gc.h gccache-gtk.h general-slots.h glyphs-gtk.h glyphs.h gtk-xemacs.h intl-auto-encap-win32.h lisp-disunion.h lisp-union.h lisp.h lrecord.h mc-alloc.h number-gmp.h number-mp.h number.h objects-gtk.h objects.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysdep.h sysfile.h systime.h syswindows.h text.h vdb.h window-impl.h window.h winslots.h
-dialog-gtk.o: $(CONFIG_H) $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h commands.h compiler.h conslots.h console-gtk-impl.h console-gtk.h console-impl.h console.h dumper.h events.h frame.h gc.h general-slots.h gui.h lisp-disunion.h lisp-union.h lisp.h lrecord.h mc-alloc.h number-gmp.h number-mp.h number.h opaque.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h systime.h text.h vdb.h window.h
+console-gtk.o: $(CONFIG_H) $(LISP_H) charset.h compiler.h conslots.h console-gtk-impl.h console-gtk.h console-impl.h console.h dumper.h elhash.h gc.h general-slots.h lisp-disunion.h lisp-union.h lisp.h lrecord.h mc-alloc.h number-gmp.h number-mp.h number.h process.h redisplay.h specifier.h symeval.h symsinit.h sysgtk.h text.h vdb.h
+device-gtk.o: $(CONFIG_H) $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h compiler.h conslots.h console-gtk-impl.h console-gtk.h console-impl.h console.h device-impl.h device.h devslots.h dumper.h elhash.h events.h faces.h frame-impl.h frame.h frameslots.h gc.h gccache-gtk.h general-slots.h glyphs-gtk.h glyphs.h gtk-xemacs.h intl-auto-encap-win32.h lisp-disunion.h lisp-union.h lisp.h lrecord.h mc-alloc.h number-gmp.h number-mp.h number.h objects-gtk.h objects.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysdep.h sysfile.h sysgdkx.h sysgtk.h systime.h syswindows.h text.h vdb.h window-impl.h window.h winslots.h
+dialog-gtk.o: $(CONFIG_H) $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h commands.h compiler.h conslots.h console-gtk-impl.h console-gtk.h console-impl.h console.h dumper.h events.h frame.h gc.h general-slots.h gui.h lisp-disunion.h lisp-union.h lisp.h lrecord.h mc-alloc.h number-gmp.h number-mp.h number.h opaque.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysgtk.h systime.h text.h vdb.h window.h
 emacs-marshals.o: hash.h
 emacs-widget-accessors.o: 
-event-gtk.o: $(CONFIG_H) $(LISP_H) blocktype.h buffer.h bufslots.h casetab.h charset.h chartab.h coding-system-slots.h commands.h compiler.h conslots.h console-gtk-impl.h console-gtk.h console-impl.h console-tty.h console.h device-impl.h device.h devslots.h dragdrop.h dumper.h elhash.h event-gtk.h event-xlike-inc.c events.h file-coding.h frame-impl.h frame.h frameslots.h gc.h general-slots.h gtk-xemacs.h gui.h lisp-disunion.h lisp-union.h lisp.h lrecord.h lstream.h mc-alloc.h menubar.h number-gmp.h number-mp.h number.h objects-gtk.h objects.h process.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysproc.h syssignal.h systime.h systty.h text.h vdb.h window.h
-frame-gtk.o: $(CONFIG_H) $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h compiler.h conslots.h console-gtk-impl.h console-gtk.h console-impl.h console.h device-impl.h device.h devslots.h dragdrop.h dumper.h elhash.h events.h extents.h faces.h frame-impl.h frame.h frameslots.h gc.h general-slots.h glyphs-gtk.h glyphs.h gtk-xemacs.h lisp-disunion.h lisp-union.h lisp.h lrecord.h mc-alloc.h number-gmp.h number-mp.h number.h objects-gtk-impl.h objects-gtk.h objects-impl.h objects.h redisplay.h scrollbar-gtk.h scrollbar.h specifier.h symeval.h symsinit.h sysdll.h systime.h text.h ui-gtk.h vdb.h window-impl.h window.h winslots.h
-gccache-gtk.o: $(CONFIG_H) $(LISP_H) compiler.h dumper.h gc.h gccache-gtk.h general-slots.h hash.h lisp-disunion.h lisp-union.h lisp.h lrecord.h mc-alloc.h number-gmp.h number-mp.h number.h symeval.h symsinit.h text.h vdb.h
+event-gtk.o: $(CONFIG_H) $(LISP_H) blocktype.h buffer.h bufslots.h casetab.h charset.h chartab.h coding-system-slots.h commands.h compiler.h conslots.h console-gtk-impl.h console-gtk.h console-impl.h console-tty.h console.h device-impl.h device.h devslots.h dragdrop.h dumper.h elhash.h event-xlike-inc.c events.h file-coding.h frame-impl.h frame.h frameslots.h gc.h general-slots.h gtk-xemacs.h gui.h lisp-disunion.h lisp-union.h lisp.h lrecord.h lstream.h mc-alloc.h menubar.h number-gmp.h number-mp.h number.h objects-gtk.h objects.h process.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysgdkx.h sysgtk.h sysproc.h syssignal.h systime.h systty.h text.h vdb.h window.h
+frame-gtk.o: $(CONFIG_H) $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h compiler.h conslots.h console-gtk-impl.h console-gtk.h console-impl.h console.h device-impl.h device.h devslots.h dragdrop.h dumper.h elhash.h events.h extents.h faces.h frame-impl.h frame.h frameslots.h gc.h general-slots.h glyphs-gtk.h glyphs.h gtk-xemacs.h lisp-disunion.h lisp-union.h lisp.h lrecord.h mc-alloc.h number-gmp.h number-mp.h number.h objects-gtk-impl.h objects-gtk.h objects-impl.h objects.h redisplay.h scrollbar-gtk.h scrollbar.h specifier.h symeval.h symsinit.h sysdll.h sysgdkx.h sysgtk.h systime.h text.h ui-gtk.h vdb.h window-impl.h window.h winslots.h
+gccache-gtk.o: $(CONFIG_H) $(LISP_H) compiler.h dumper.h gc.h gccache-gtk.h general-slots.h hash.h lisp-disunion.h lisp-union.h lisp.h lrecord.h mc-alloc.h number-gmp.h number-mp.h number.h symeval.h symsinit.h sysgtk.h text.h vdb.h
 glade.o: bytecode.h
-glyphs-gtk.o: $(CONFIG_H) $(LISP_H) bitmaps.h buffer.h bufslots.h casetab.h charset.h chartab.h coding-system-slots.h compiler.h conslots.h console-gtk-impl.h console-gtk.h console-impl.h console.h device-impl.h device.h devslots.h dumper.h elhash.h events.h faces.h file-coding.h frame-impl.h frame.h frameslots.h gc.h general-slots.h glyphs-gtk.h glyphs.h gui.h imgproc.h insdel.h intl-auto-encap-win32.h lisp-disunion.h lisp-union.h lisp.h lrecord.h lstream.h mc-alloc.h number-gmp.h number-mp.h number.h objects-gtk-impl.h objects-gtk.h objects-impl.h objects.h opaque.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysdll.h sysfile.h systime.h syswindows.h text.h ui-gtk.h vdb.h window-impl.h window.h winslots.h
-gtk-glue.o: objects-gtk-impl.h objects-gtk.h objects-impl.h objects.h specifier.h
-gtk-xemacs.o: $(CONFIG_H) $(LISP_H) charset.h compiler.h conslots.h console-gtk-impl.h console-gtk.h console-impl.h console.h device-impl.h device.h devslots.h dumper.h event-gtk.h faces.h frame-impl.h frame.h frameslots.h gc.h general-slots.h glyphs.h gtk-xemacs.h lisp-disunion.h lisp-union.h lisp.h lrecord.h mc-alloc.h number-gmp.h number-mp.h number.h objects-gtk.h objects.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h text.h vdb.h window-impl.h window.h winslots.h
-gui-gtk.o: $(CONFIG_H) $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h compiler.h conslots.h console-gtk-impl.h console-gtk.h console-impl.h console.h device-impl.h device.h devslots.h dumper.h frame.h gc.h general-slots.h gui.h lisp-disunion.h lisp-union.h lisp.h lrecord.h mc-alloc.h number-gmp.h number-mp.h number.h opaque.h redisplay.h specifier.h symeval.h symsinit.h text.h vdb.h
-menubar-gtk.o: $(CONFIG_H) $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h commands.h compiler.h conslots.h console-gtk-impl.h console-gtk.h console-impl.h console.h device-impl.h device.h devslots.h dumper.h events.h frame-impl.h frame.h frameslots.h gc.h general-slots.h gui.h lisp-disunion.h lisp-union.h lisp.h lrecord.h mc-alloc.h menubar.h number-gmp.h number-mp.h number.h opaque.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysdll.h systime.h text.h ui-gtk.h vdb.h window-impl.h window.h winslots.h
-native-gtk-toolbar.o: $(CONFIG_H) $(LISP_H) charset.h compiler.h console-gtk.h console.h dumper.h faces.h frame.h gc.h general-slots.h glyphs-gtk.h glyphs.h lisp-disunion.h lisp-union.h lisp.h lrecord.h mc-alloc.h number-gmp.h number-mp.h number.h objects-gtk.h objects.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h text.h toolbar.h vdb.h window-impl.h window.h winslots.h
-objects-gtk.o: $(CONFIG_H) $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h compiler.h conslots.h console-gtk-impl.h console-gtk.h console-impl.h console.h device-impl.h device.h devslots.h dumper.h gc.h general-slots.h insdel.h lisp-disunion.h lisp-union.h lisp.h lrecord.h mc-alloc.h number-gmp.h number-mp.h number.h objects-gtk-impl.h objects-gtk.h objects-impl.h objects-xlike-inc.c objects.h specifier.h symeval.h symsinit.h text.h vdb.h
-redisplay-gtk.o: $(CONFIG_H) $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h EmacsFrame.h EmacsFrameP.h buffer.h bufslots.h casetab.h charset.h chartab.h coding-system-slots.h compiler.h conslots.h console-gtk-impl.h console-gtk.h console-impl.h console-x-impl.h console-x.h console.h debug.h device-impl.h device.h devslots.h dumper.h faces.h file-coding.h frame-impl.h frame.h frameslots.h gc.h gccache-gtk.h general-slots.h glyphs-gtk.h glyphs-x.h glyphs.h gutter.h lisp-disunion.h lisp-union.h lisp.h lrecord.h mc-alloc.h mule-ccl.h number-gmp.h number-mp.h number.h objects-gtk-impl.h objects-gtk.h objects-impl.h objects-x-impl.h objects-x.h objects.h redisplay-xlike-inc.c redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysdep.h sysproc.h syssignal.h systime.h text.h vdb.h window-impl.h window.h winslots.h xgccache.h xintrinsic.h xintrinsicp.h xmotif.h xmprimitivep.h
-scrollbar-gtk.o: $(CONFIG_H) $(LISP_H) compiler.h conslots.h console-gtk-impl.h console-gtk.h console-impl.h console.h dumper.h frame-impl.h frame.h frameslots.h gc.h general-slots.h glyphs-gtk.h glyphs.h lisp-disunion.h lisp-union.h lisp.h lrecord.h mc-alloc.h number-gmp.h number-mp.h number.h redisplay.h scrollbar-gtk.h scrollbar.h specifier.h symeval.h symsinit.h text.h vdb.h window-impl.h window.h winslots.h
-select-gtk.o: $(CONFIG_H) $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h compiler.h conslots.h console-gtk-impl.h console-gtk.h console-impl.h console.h device-impl.h device.h devslots.h dumper.h events.h frame.h gc.h general-slots.h lisp-disunion.h lisp-union.h lisp.h lrecord.h mc-alloc.h number-gmp.h number-mp.h number.h opaque.h redisplay.h select-common.h select.h specifier.h symeval.h symsinit.h systime.h text.h vdb.h
-toolbar-gtk.o: $(CONFIG_H) $(LISP_H) compiler.h conslots.h console-gtk-impl.h console-gtk.h console-impl.h console.h dumper.h frame.h gc.h general-slots.h lisp-disunion.h lisp-union.h lisp.h lrecord.h mc-alloc.h number-gmp.h number-mp.h number.h redisplay.h specifier.h symeval.h symsinit.h text.h toolbar-common.h vdb.h
+glyphs-gtk.o: $(CONFIG_H) $(LISP_H) bitmaps.h buffer.h bufslots.h casetab.h charset.h chartab.h coding-system-slots.h compiler.h conslots.h console-gtk-impl.h console-gtk.h console-impl.h console.h device-impl.h device.h devslots.h dumper.h elhash.h events.h faces.h file-coding.h frame-impl.h frame.h frameslots.h gc.h general-slots.h glyphs-gtk.h glyphs.h gui.h imgproc.h insdel.h intl-auto-encap-win32.h lisp-disunion.h lisp-union.h lisp.h lrecord.h lstream.h mc-alloc.h number-gmp.h number-mp.h number.h objects-gtk-impl.h objects-gtk.h objects-impl.h objects.h opaque.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysdll.h sysfile.h sysgdkx.h sysgtk.h systime.h syswindows.h text.h ui-gtk.h vdb.h window-impl.h window.h winslots.h
+gtk-glue.o: console-gtk.h console.h objects-gtk-impl.h objects-gtk.h objects-impl.h objects.h specifier.h sysgtk.h
+gtk-xemacs.o: $(CONFIG_H) $(LISP_H) charset.h compiler.h conslots.h console-gtk-impl.h console-gtk.h console-impl.h console.h device-impl.h device.h devslots.h dumper.h faces.h frame-impl.h frame.h frameslots.h gc.h general-slots.h glyphs.h gtk-xemacs.h lisp-disunion.h lisp-union.h lisp.h lrecord.h mc-alloc.h number-gmp.h number-mp.h number.h objects-gtk.h objects.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysgtk.h text.h vdb.h window-impl.h window.h winslots.h
+gui-gtk.o: $(CONFIG_H) $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h compiler.h conslots.h console-gtk-impl.h console-gtk.h console-impl.h console.h device-impl.h device.h devslots.h dumper.h frame.h gc.h general-slots.h gui.h lisp-disunion.h lisp-union.h lisp.h lrecord.h mc-alloc.h number-gmp.h number-mp.h number.h opaque.h redisplay.h specifier.h symeval.h symsinit.h sysgtk.h text.h vdb.h
+menubar-gtk.o: $(CONFIG_H) $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h commands.h compiler.h conslots.h console-gtk-impl.h console-gtk.h console-impl.h console.h device-impl.h device.h devslots.h dumper.h events.h frame-impl.h frame.h frameslots.h gc.h general-slots.h gui.h lisp-disunion.h lisp-union.h lisp.h lrecord.h mc-alloc.h menubar.h number-gmp.h number-mp.h number.h opaque.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysdll.h sysgtk.h systime.h text.h ui-gtk.h vdb.h window-impl.h window.h winslots.h
+native-gtk-toolbar.o: $(CONFIG_H) $(LISP_H) charset.h compiler.h console-gtk.h console.h dumper.h faces.h frame.h gc.h general-slots.h glyphs-gtk.h glyphs.h lisp-disunion.h lisp-union.h lisp.h lrecord.h mc-alloc.h number-gmp.h number-mp.h number.h objects-gtk.h objects.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysgtk.h text.h toolbar.h vdb.h window-impl.h window.h winslots.h
+objects-gtk.o: $(CONFIG_H) $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h buffer.h bufslots.h casetab.h charset.h chartab.h compiler.h conslots.h console-gtk-impl.h console-gtk.h console-impl.h console-x-impl.h console-x.h console-xlike-inc.h console.h device-impl.h device.h devslots.h dumper.h gc.h gccache-gtk.h general-slots.h glyphs-gtk.h glyphs-x.h glyphs.h insdel.h lisp-disunion.h lisp-union.h lisp.h lrecord.h mc-alloc.h number-gmp.h number-mp.h number.h objects-gtk-impl.h objects-gtk.h objects-impl.h objects-x-impl.h objects-x.h objects-xlike-inc.c objects.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysgdkx.h sysgtk.h text.h vdb.h window-impl.h window.h winslots.h xgccache.h xintrinsic.h
+redisplay-gtk.o: $(CONFIG_H) $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h EmacsFrame.h EmacsFrameP.h buffer.h bufslots.h casetab.h charset.h chartab.h coding-system-slots.h compiler.h conslots.h console-gtk-impl.h console-gtk.h console-impl.h console-x-impl.h console-x.h console-xlike-inc.h console.h debug.h device-impl.h device.h devslots.h dumper.h faces.h file-coding.h frame-impl.h frame.h frameslots.h gc.h gccache-gtk.h general-slots.h glyphs-gtk.h glyphs-x.h glyphs.h gutter.h lisp-disunion.h lisp-union.h lisp.h lrecord.h mc-alloc.h mule-ccl.h number-gmp.h number-mp.h number.h objects-gtk-impl.h objects-gtk.h objects-impl.h objects-x-impl.h objects-x.h objects.h redisplay-xlike-inc.c redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysdep.h sysgtk.h sysproc.h syssignal.h systime.h text.h vdb.h window-impl.h window.h winslots.h xgccache.h xintrinsic.h xintrinsicp.h xmotif.h xmprimitivep.h
+scrollbar-gtk.o: $(CONFIG_H) $(LISP_H) compiler.h conslots.h console-gtk-impl.h console-gtk.h console-impl.h console.h dumper.h frame-impl.h frame.h frameslots.h gc.h general-slots.h glyphs-gtk.h glyphs.h lisp-disunion.h lisp-union.h lisp.h lrecord.h mc-alloc.h number-gmp.h number-mp.h number.h redisplay.h scrollbar-gtk.h scrollbar.h specifier.h symeval.h symsinit.h sysgtk.h text.h vdb.h window-impl.h window.h winslots.h
+select-gtk.o: $(CONFIG_H) $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h compiler.h conslots.h console-gtk-impl.h console-gtk.h console-impl.h console.h device-impl.h device.h devslots.h dumper.h events.h frame.h gc.h general-slots.h lisp-disunion.h lisp-union.h lisp.h lrecord.h mc-alloc.h number-gmp.h number-mp.h number.h opaque.h redisplay.h select-common.h select.h specifier.h symeval.h symsinit.h sysgtk.h systime.h text.h vdb.h
+toolbar-gtk.o: $(CONFIG_H) $(LISP_H) compiler.h conslots.h console-gtk-impl.h console-gtk.h console-impl.h console.h dumper.h frame.h gc.h general-slots.h lisp-disunion.h lisp-union.h lisp.h lrecord.h mc-alloc.h number-gmp.h number-mp.h number.h redisplay.h specifier.h symeval.h symsinit.h sysgtk.h text.h toolbar-common.h vdb.h
 ui-byhand.o: gui.h
-ui-gtk.o: $(CONFIG_H) $(LISP_H) buffer.h bufslots.h bytecode.h casetab.h charset.h chartab.h compiler.h conslots.h console-gtk-impl.h console-gtk.h console-impl.h console.h device.h dumper.h elhash.h emacs-marshals.c emacs-widget-accessors.c event-gtk.h events.h faces.h gc.h general-slots.h glade.c glyphs-gtk.h glyphs.h gtk-glue.c gui.h hash.h lisp-disunion.h lisp-union.h lisp.h lrecord.h mc-alloc.h number-gmp.h number-mp.h number.h objects-gtk-impl.h objects-gtk.h objects-impl.h objects.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysdll.h systime.h text.h ui-byhand.c ui-gtk.h vdb.h window-impl.h window.h winslots.h
+ui-gtk.o: $(CONFIG_H) $(LISP_H) buffer.h bufslots.h bytecode.h casetab.h charset.h chartab.h compiler.h conslots.h console-gtk-impl.h console-gtk.h console-impl.h console.h device.h dumper.h elhash.h emacs-marshals.c emacs-widget-accessors.c events.h faces.h gc.h general-slots.h glade.c glyphs-gtk.h glyphs.h gtk-glue.c gui.h hash.h lisp-disunion.h lisp-union.h lisp.h lrecord.h mc-alloc.h number-gmp.h number-mp.h number.h objects-gtk-impl.h objects-gtk.h objects-impl.h objects.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysdll.h sysgtk.h systime.h text.h ui-byhand.c ui-gtk.h vdb.h window-impl.h window.h winslots.h
 #endif
 #if defined(HAVE_DATABASE)
 database.o: $(CONFIG_H) $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h coding-system-slots.h compiler.h database.h dumper.h file-coding.h gc.h general-slots.h intl-auto-encap-win32.h lisp-disunion.h lisp-union.h lisp.h lrecord.h mc-alloc.h number-gmp.h number-mp.h number.h symeval.h symsinit.h sysfile.h syswindows.h text.h vdb.h
@@ -170,7 +170,7 @@
 hpplay.o: $(CONFIG_H) $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h compiler.h dumper.h gc.h general-slots.h lisp-disunion.h lisp-union.h lisp.h lrecord.h mc-alloc.h number-gmp.h number-mp.h number.h sound.h symeval.h symsinit.h text.h vdb.h
 imgproc.o: $(CONFIG_H) $(LISP_H) compiler.h dumper.h gc.h general-slots.h imgproc.h lisp-disunion.h lisp-union.h lisp.h lrecord.h mc-alloc.h number-gmp.h number-mp.h number.h symeval.h symsinit.h text.h vdb.h
 indent.o: $(CONFIG_H) $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h compiler.h console.h device.h dumper.h extents.h faces.h frame.h gc.h general-slots.h glyphs.h insdel.h lisp-disunion.h lisp-union.h lisp.h lrecord.h mc-alloc.h number-gmp.h number-mp.h number.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h text.h vdb.h window-impl.h window.h winslots.h
-inline.o: $(CONFIG_H) $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h buffer.h bufslots.h bytecode.h casetab.h charset.h chartab.h coding-system-slots.h compiler.h conslots.h console-gtk.h console-impl.h console-msw.h console.h database.h device-impl.h device.h devslots.h dumper.h elhash.h events.h extents-impl.h extents.h faces.h file-coding.h font-mgr.h frame-impl.h frame.h frameslots.h gc.h general-slots.h glyphs-x.h glyphs.h gui.h intl-auto-encap-win32.h keymap.h lisp-disunion.h lisp-union.h lisp.h lrecord.h lstream.h mc-alloc.h number-gmp.h number-mp.h number.h objects-impl.h objects.h opaque.h process.h rangetab.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h syntax.h sysdll.h sysfile.h systime.h syswindows.h text.h toolbar.h tooltalk.h ui-gtk.h vdb.h window-impl.h window.h winslots.h xintrinsic.h
+inline.o: $(CONFIG_H) $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h buffer.h bufslots.h bytecode.h casetab.h charset.h chartab.h coding-system-slots.h compiler.h conslots.h console-gtk.h console-impl.h console-msw.h console.h database.h device-impl.h device.h devslots.h dumper.h elhash.h events.h extents-impl.h extents.h faces.h file-coding.h font-mgr.h frame-impl.h frame.h frameslots.h gc.h general-slots.h glyphs-x.h glyphs.h gui.h intl-auto-encap-win32.h keymap.h lisp-disunion.h lisp-union.h lisp.h lrecord.h lstream.h mc-alloc.h number-gmp.h number-mp.h number.h objects-impl.h objects.h opaque.h process.h rangetab.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h syntax.h sysdll.h sysfile.h sysgtk.h systime.h syswindows.h text.h toolbar.h tooltalk.h ui-gtk.h vdb.h window-impl.h window.h winslots.h xintrinsic.h
 input-method-motif.o: $(CONFIG_H) $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h EmacsFrame.h compiler.h conslots.h console-impl.h console-x-impl.h console-x.h console.h device.h dumper.h frame-impl.h frame.h frameslots.h gc.h general-slots.h lisp-disunion.h lisp-union.h lisp.h lrecord.h mc-alloc.h number-gmp.h number-mp.h number.h redisplay.h specifier.h symeval.h symsinit.h text.h vdb.h xintrinsic.h xmotif.h
 input-method-xlib.o: $(CONFIG_H) $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h EmacsFrame.h buffer.h bufslots.h casetab.h charset.h chartab.h compiler.h conslots.h console-impl.h console-x-impl.h console-x.h console.h device-impl.h device.h devslots.h dumper.h events.h frame-impl.h frame.h frameslots.h gc.h general-slots.h lisp-disunion.h lisp-union.h lisp.h lrecord.h mc-alloc.h number-gmp.h number-mp.h number.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h systime.h text.h vdb.h window-impl.h window.h winslots.h xintrinsic.h
 insdel.o: $(CONFIG_H) $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h compiler.h console.h device.h dumper.h extents.h frame.h gc.h general-slots.h insdel.h line-number.h lisp-disunion.h lisp-union.h lisp.h lrecord.h lstream.h mc-alloc.h number-gmp.h number-mp.h number.h redisplay.h symeval.h symsinit.h text.h vdb.h
@@ -233,7 +233,7 @@
 terminfo.o: $(CONFIG_H)
 tests.o: $(CONFIG_H) $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h coding-system-slots.h compiler.h dumper.h elhash.h file-coding.h gc.h general-slots.h lisp-disunion.h lisp-union.h lisp.h lrecord.h lstream.h mc-alloc.h number-gmp.h number-mp.h number.h opaque.h symeval.h symsinit.h text.h vdb.h
 text.o: $(CONFIG_H) $(LISP_H) backtrace.h buffer.h bufslots.h casetab.h charset.h chartab.h coding-system-slots.h compiler.h dumper.h file-coding.h gc.h general-slots.h lisp-disunion.h lisp-union.h lisp.h lrecord.h lstream.h mc-alloc.h number-gmp.h number-mp.h number.h profile.h symeval.h symsinit.h text.h vdb.h
-toolbar-common.o: $(CONFIG_H) $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h charset.h compiler.h conslots.h console-gtk-impl.h console-gtk.h console-impl.h console-x-impl.h console-x.h console.h device-impl.h device.h devslots.h dumper.h faces.h frame-impl.h frame.h frameslots.h gc.h general-slots.h glyphs.h lisp-disunion.h lisp-union.h lisp.h lrecord.h mc-alloc.h number-gmp.h number-mp.h number.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h text.h toolbar-common.h toolbar.h vdb.h window-impl.h window.h winslots.h xintrinsic.h
+toolbar-common.o: $(CONFIG_H) $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h charset.h compiler.h conslots.h console-gtk-impl.h console-gtk.h console-impl.h console-x-impl.h console-x.h console.h device-impl.h device.h devslots.h dumper.h faces.h frame-impl.h frame.h frameslots.h gc.h general-slots.h glyphs.h lisp-disunion.h lisp-union.h lisp.h lrecord.h mc-alloc.h number-gmp.h number-mp.h number.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysgtk.h text.h toolbar-common.h toolbar.h vdb.h window-impl.h window.h winslots.h xintrinsic.h
 toolbar.o: $(CONFIG_H) $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h compiler.h conslots.h console-impl.h console.h device-impl.h device.h devslots.h dumper.h frame-impl.h frame.h frameslots.h gc.h general-slots.h glyphs.h lisp-disunion.h lisp-union.h lisp.h lrecord.h mc-alloc.h number-gmp.h number-mp.h number.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h text.h toolbar.h vdb.h window-impl.h window.h winslots.h
 tooltalk.o: $(CONFIG_H) $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h compiler.h dumper.h elhash.h gc.h general-slots.h lisp-disunion.h lisp-union.h lisp.h lrecord.h mc-alloc.h number-gmp.h number-mp.h number.h process.h symeval.h symsinit.h syssignal.h text.h tooltalk.h vdb.h
 tparam.o: $(CONFIG_H) $(LISP_H) compiler.h dumper.h gc.h general-slots.h lisp-disunion.h lisp-union.h lisp.h lrecord.h mc-alloc.h number-gmp.h number-mp.h number.h symeval.h symsinit.h text.h vdb.h
--- a/src/device-gtk.c	Mon Feb 01 01:05:28 2010 -0600
+++ b/src/device-gtk.c	Mon Feb 01 02:15:28 2010 -0600
@@ -746,7 +746,8 @@
   Qgtk_seen_characters = Qnil;
 }
 
-#include <gdk/gdkx.h>
+#include "sysgdkx.h"
+
 static void
 gtk_device_init_x_specific_cruft (struct device *d)
 {
--- a/src/event-gtk.c	Mon Feb 01 01:05:28 2010 -0600
+++ b/src/event-gtk.c	Mon Feb 01 02:15:28 2010 -0600
@@ -49,11 +49,11 @@
 
 #include "gtk-xemacs.h"
 
+#include "sysgdkx.h"
+
 #include "systime.h"
 #include "sysproc.h" /* for MAXDESC */
 
-#include <gdk/gdkkeysyms.h>
-
 #ifdef HAVE_DRAGNDROP
 #include "dragdrop.h"
 #endif
@@ -62,10 +62,6 @@
 # include "menubar.h"
 #endif
 
-#include <gdk/gdkx.h>
-
-#include "event-gtk.h"
-
 static struct event_stream *gtk_event_stream;
 
 #ifdef WIN32_ANY
@@ -1582,8 +1578,6 @@
 /*                      input pending / C-g checking                    */
 /************************************************************************/
 
-#include <gdk/gdkx.h>
-
 static void
 emacs_gtk_drain_queue (void)
 
@@ -1692,7 +1686,7 @@
 /* This is down at the bottom of the file so I can avoid polluting the
    generic code with this X specific CRAP! */
 
-#include <gdk/gdkx.h>
+#include "sysgdkx.h"
 #include <X11/keysym.h>
 /* #### BILL!!! Fix this please! */
 
--- a/src/event-gtk.h	Mon Feb 01 01:05:28 2010 -0600
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,36 +0,0 @@
-/* Header file for miscellaneous event functions for GTK.
-   Copyright (C) 2002 William Perry.
-
-This file is part of XEmacs.
-
-XEmacs is free software; you can redistribute it and/or modify it
-under the terms of the GNU General Public License as published by the
-Free Software Foundation; either version 2, or (at your option) any
-later version.
-
-XEmacs is distributed in the hope that it will be useful, but WITHOUT
-ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-for more details.
-
-You should have received a copy of the GNU General Public License
-along with XEmacs; see the file COPYING.  If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA.  */
-
-#ifndef __EVENT_GTK_H__
-#define __EVENT_GTK_H__
-
-int gtk_event_to_emacs_event (struct frame *frame,
-			      GdkEvent *gdk_event,
-			      struct Lisp_Event *emacs_event);
-
-gint emacs_gtk_key_event_handler(GtkWidget *widget, GdkEventKey *event);
-gint emacs_gtk_button_event_handler(GtkWidget *widget, GdkEventButton *event);
-gint emacs_gtk_motion_event_handler (GtkWidget *widget, GdkEventMotion *event);
-
-gboolean emacs_shell_event_handler (GtkWidget *wid /* unused */,
-				    GdkEvent *event,
-				    gpointer closure);
-
-#endif /* __EVENT-GTK_H__ */
--- a/src/event-xlike-inc.c	Mon Feb 01 01:05:28 2010 -0600
+++ b/src/event-xlike-inc.c	Mon Feb 01 02:15:28 2010 -0600
@@ -1,4 +1,4 @@
-/* Shared event code between X and GTK -- include file.
+/* Common code between X and GTK -- event-related.
    Copyright (C) 1991-5, 1997 Free Software Foundation, Inc.
    Copyright (C) 1995 Sun Microsystems, Inc.
    Copyright (C) 1996, 2001, 2002, 2003 Ben Wing.
@@ -22,10 +22,11 @@
 
 /* Synched up with: Not in FSF. */
 
-/* For some code it's reasonable to have only one copy and conditionalize
-   at run-time.  For other code it isn't. #### Perhaps all code should be
-   included here, not in event-xlike.c.  However, event-xlike.c is always
-   X-specific, whereas the following code isn't, in the GTK case. */
+/* Before including this file, you need to define either THIS_IS_X or
+   THIS_IS_GTK.  */
+
+/* See comment at top of redisplay-xlike-inc.c for an explanation of
+   how this file works. */
 
 static int
 #ifdef THIS_IS_GTK
@@ -160,7 +161,7 @@
   return 0;
 }
 
-#if defined(THIS_IS_X) || !defined(__GDK_KEYS_H__)
+#if defined (THIS_IS_X) || !defined (__GDK_KEYS_H__)
 
 /* Use an appropriate map to Unicode within x_keysym_to_character. Arguments
    are evaluated multiple times.
@@ -169,11 +170,11 @@
 
 #define USE_UNICODE_MAP(keysym, map)					\
   if (keysym >= FIRST_KNOWN_##map					\
-      && (keysym < (FIRST_KNOWN_##map + countof(map)))			\
+      && (keysym < (FIRST_KNOWN_##map + countof (map)))			\
       && map[keysym - FIRST_KNOWN_##map ]) do				\
     {									\
       keysym -= FIRST_KNOWN_##map ;					\
-      return Funicode_to_char(make_int(map[keysym]), Qnil);		\
+      return Funicode_to_char (make_int (map[keysym]), Qnil);		\
     } while (0)
 
 /* Maps to Unicode for X11 KeySyms, where we don't have a direct internal
@@ -588,10 +589,10 @@
 
 #ifndef THIS_IS_GTK
 static Lisp_Object
-x_keysym_to_character(KeySym keysym)
+x_keysym_to_character (KeySym keysym)
 #else
 Lisp_Object
-gtk_keysym_to_character(guint keysym)
+gtk_keysym_to_character (guint keysym)
 #endif
 {
   Lisp_Object charset = Qzero;
@@ -604,7 +605,7 @@
      #x01000000-#x01000100. */
 
   if (keysym >= 0x01000000 && keysym <= 0x0110FFFF)
-    return Funicode_to_char (make_int(keysym & 0xffffff), Qnil);
+    return Funicode_to_char (make_int (keysym & 0xffffff), Qnil);
 
   if ((keysym & 0xff) < 0xa0)
     return Qnil;
@@ -642,7 +643,7 @@
       break;
     case 6: /* Cyrillic */
       {
-	USE_UNICODE_MAP(keysym, CYRILLIC);
+	USE_UNICODE_MAP (keysym, CYRILLIC);
 	break;
       }
     case 7: /* Greek */
@@ -665,16 +666,16 @@
 	break;
       }
     case 8: 
-      USE_UNICODE_MAP(keysym, TECHNICAL);
+      USE_UNICODE_MAP (keysym, TECHNICAL);
       break;
     case 9: 
-      USE_UNICODE_MAP(keysym, SPECIAL);
+      USE_UNICODE_MAP (keysym, SPECIAL);
       break;
     case 10:
-      USE_UNICODE_MAP(keysym, PUBLISHING);
+      USE_UNICODE_MAP (keysym, PUBLISHING);
       break;
     case 11:
-      USE_UNICODE_MAP(keysym, APL);
+      USE_UNICODE_MAP (keysym, APL);
       break;
     case 12: /* Hebrew */
       USE_CHARSET (charset, HEBREW_ISO8859_8);
@@ -698,7 +699,7 @@
     case 32: /* Currency. The lower sixteen bits of these keysyms happily
 		correspond exactly to the Unicode code points of the
 		associated characters */
-      return Funicode_to_char(make_int(keysym & 0xffff), Qnil);
+      return Funicode_to_char (make_int (keysym & 0xffff), Qnil);
       break;
     default:
       break;
@@ -722,4 +723,4 @@
 #endif
 }
 
-#endif /* defined(THIS_IS_X) || !defined(__GDK_KEYS_H__) */
+#endif /* defined (THIS_IS_X) || !defined (__GDK_KEYS_H__) */
--- a/src/frame-gtk.c	Mon Feb 01 01:05:28 2010 -0600
+++ b/src/frame-gtk.c	Mon Feb 01 02:15:28 2010 -0600
@@ -61,7 +61,7 @@
 #define STUPID_X_SPECIFIC_GTK_STUFF
 
 #ifdef STUPID_X_SPECIFIC_GTK_STUFF
-#include <gdk/gdkx.h>
+#include "sysgdkx.h"
 #endif
 
 /* Default properties to use when creating frames.  */
--- a/src/gccache-gtk.c	Mon Feb 01 01:05:28 2010 -0600
+++ b/src/gccache-gtk.c	Mon Feb 01 02:15:28 2010 -0600
@@ -21,7 +21,7 @@
 
 /* Synched up with: Not in FSF. */
 
-/* Emacs uses a lot of different display attributes; for example, assume
+/* XEmacs uses a lot of different display attributes; for example, assume
    that only four fonts are in use (normal, bold, italic, and bold-italic).
    Then assume that one stipple or background is used for text selections,
    and another is used for highlighting mousable regions.  That makes 16
@@ -53,19 +53,15 @@
  */
 
 #include <config.h>
-#include <gtk/gtk.h>
 #include "lisp.h"
+#include "hash.h"
+
 #include "gccache-gtk.h"
 
 #define GC_CACHE_SIZE 100
 
 #define GCCACHE_HASH
 
-#ifdef GCCACHE_HASH
-#include "lisp.h"
-#include "hash.h"
-#endif
-
 struct gcv_and_mask {
 	GdkGCValues gcv;
 	unsigned long mask; /* contains a GdkGCValuesMask bitmask. */
--- a/src/gccache-gtk.h	Mon Feb 01 01:05:28 2010 -0600
+++ b/src/gccache-gtk.h	Mon Feb 01 02:15:28 2010 -0600
@@ -27,6 +27,8 @@
 #ifndef _GCCACHE_GTK_H_
 #define _GCCACHE_GTK_H_
 
+#include "sysgtk.h"
+
 struct gc_cache;
 struct gc_cache *make_gc_cache (GtkWidget *);
 void free_gc_cache (struct gc_cache *cache);
--- a/src/glyphs-gtk.c	Mon Feb 01 01:05:28 2010 -0600
+++ b/src/glyphs-gtk.c	Mon Feb 01 02:15:28 2010 -0600
@@ -2955,7 +2955,7 @@
 }
 
 /* X specific crap */
-#include <gdk/gdkx.h>
+#include "sysgdkx.h"
 /* #### Should remove all this X specific stuff when GTK/GDK matures a
    bit more and provides an abstraction for it. */
 static int
--- a/src/glyphs-gtk.h	Mon Feb 01 01:05:28 2010 -0600
+++ b/src/glyphs-gtk.h	Mon Feb 01 02:15:28 2010 -0600
@@ -28,11 +28,10 @@
 #define _XEMACS_GLYPHS_GTK_H_
 
 #include "glyphs.h"
+#include "sysgtk.h"
 
 #ifdef HAVE_GTK
 
-#include <gtk/gtk.h>
-
 /****************************************************************************
  *                         Image-Instance Object                            *
  ****************************************************************************/
--- a/src/glyphs.c	Mon Feb 01 01:05:28 2010 -0600
+++ b/src/glyphs.c	Mon Feb 01 02:15:28 2010 -0600
@@ -2936,7 +2936,7 @@
 #ifdef HAVE_GTK
 /* Gtk has to be gratuitously different, eh? */
 Lisp_Object
-pixmap_to_lisp_data (Lisp_Object name, int ok_if_data_invalid)
+pixmap_to_lisp_data (Lisp_Object name, int UNUSED (ok_if_data_invalid))
 {
   return (make_string_from_file (name));
 }
--- a/src/gtk-glue.c	Mon Feb 01 01:05:28 2010 -0600
+++ b/src/gtk-glue.c	Mon Feb 01 02:15:28 2010 -0600
@@ -25,6 +25,7 @@
 GtkType GTK_TYPE_OBJECT_LIST = 0;
 GtkType GTK_TYPE_GDK_GC = 0;
 
+#include "console-gtk.h"
 #include "objects-gtk-impl.h"
 
 static GtkType
@@ -86,7 +87,7 @@
 	  temp = XCDR (temp);
 	}
 
-      GTK_VALUE_POINTER(*arg) = strings;
+      GTK_VALUE_POINTER (*arg) = strings;
     }
   else if (arg->type == GTK_TYPE_OBJECT_LIST)
     {
@@ -107,11 +108,11 @@
 	  temp = XCDR (temp);
 	}
 
-      GTK_VALUE_POINTER(*arg) = objects;
+      GTK_VALUE_POINTER (*arg) = objects;
     }
   else
     {
-      ABORT();
+      ABORT ();
     }
 }
 
@@ -148,7 +149,7 @@
 	}
       else
 	{
-	  ABORT();
+	  ABORT ();
 	}
     }
   return (rval);
@@ -182,41 +183,42 @@
 	temp = XCDR (temp);					\
       }								\
 								\
-    GTK_VALUE_POINTER(*arg) = array;				\
+    GTK_VALUE_POINTER (*arg) = array;				\
   } while (0);
   
   if (arg->type == GTK_TYPE_STRING_ARRAY)
     {
-      FROB(gchar *, CHECK_STRING, (gchar*) XSTRING_DATA);
+      FROB (gchar *, CHECK_STRING, (gchar*) XSTRING_DATA);
     }
   else if (arg->type == GTK_TYPE_FLOAT_ARRAY)
     {
-      FROB(gfloat, CHECK_FLOAT, extract_float);
+      FROB (gfloat, CHECK_FLOAT, extract_float);
     }
   else if (arg->type == GTK_TYPE_INT_ARRAY)
     {
-      FROB(gint, CHECK_INT, XINT);
+      FROB (gint, CHECK_INT, XINT);
     }
   else
     {
-      ABORT();
+      ABORT ();
     }
 #undef FROB
 }
 
-extern GdkGC *gtk_get_gc (struct device *d, Lisp_Object font, Lisp_Object fg, Lisp_Object bg,
-			  Lisp_Object bg_pmap, Lisp_Object lwidth);
-
 static GdkGC *
 face_to_gc (Lisp_Object face)
 {
   Lisp_Object device = Fselected_device (Qnil);
 
   return (gtk_get_gc (XDEVICE (device),
-		      Fspecifier_instance (Fget (face, Qfont, Qnil), device, Qnil, Qnil),
-		      Fspecifier_instance (Fget (face, Qforeground, Qnil), device, Qnil, Qnil),
-		      Fspecifier_instance (Fget (face, Qbackground, Qnil), device, Qnil, Qnil),
-		      Fspecifier_instance (Fget (face, Qbackground_pixmap, Qnil), device, Qnil, Qnil),
+		      Fspecifier_instance (Fget (face, Qfont, Qnil),
+					   device, Qnil, Qnil),
+		      Fspecifier_instance (Fget (face, Qforeground, Qnil),
+					   device, Qnil, Qnil),
+		      Fspecifier_instance (Fget (face, Qbackground, Qnil),
+					   device, Qnil, Qnil),
+		      Fspecifier_instance (Fget (face, Qbackground_pixmap,
+						 Qnil), device, Qnil, Qnil),
 		      Qnil));
 }
 
@@ -227,17 +229,24 @@
   GtkStyle *style = gtk_style_new ();
   int i;
 
-  Lisp_Object font = Fspecifier_instance (Fget (face, Qfont, Qnil), device, Qnil, Qnil);
-  Lisp_Object fg = Fspecifier_instance (Fget (face, Qforeground, Qnil), device, Qnil, Qnil);
-  Lisp_Object bg = Fspecifier_instance (Fget (face, Qbackground, Qnil), device, Qnil, Qnil);
-  Lisp_Object pm = Fspecifier_instance (Fget (face, Qbackground_pixmap, Qnil), device, Qnil, Qnil);
+  Lisp_Object font = Fspecifier_instance (Fget (face, Qfont, Qnil),
+					  device, Qnil, Qnil);
+  Lisp_Object fg = Fspecifier_instance (Fget (face, Qforeground, Qnil),
+					device, Qnil, Qnil);
+  Lisp_Object bg = Fspecifier_instance (Fget (face, Qbackground, Qnil),
+					device, Qnil, Qnil);
+  Lisp_Object pm = Fspecifier_instance (Fget (face, Qbackground_pixmap,
+					      Qnil), device, Qnil, Qnil);
 
-  for (i = 0; i < 5; i++) style->fg[i] = * COLOR_INSTANCE_GTK_COLOR (XCOLOR_INSTANCE (fg));
-  for (i = 0; i < 5; i++) style->bg[i] = * COLOR_INSTANCE_GTK_COLOR (XCOLOR_INSTANCE (bg));
+  for (i = 0; i < 5; i++)
+    style->fg[i] = *COLOR_INSTANCE_GTK_COLOR (XCOLOR_INSTANCE (fg));
+  for (i = 0; i < 5; i++)
+    style->bg[i] = *COLOR_INSTANCE_GTK_COLOR (XCOLOR_INSTANCE (bg));
 
   if (IMAGE_INSTANCEP (pm))
     {
-      for (i = 0; i < 5; i++) style->bg_pixmap[i] = XIMAGE_INSTANCE_GTK_PIXMAP (pm);
+      for (i = 0; i < 5; i++)
+	style->bg_pixmap[i] = XIMAGE_INSTANCE_GTK_PIXMAP (pm);
     }
 
   style->font = FONT_INSTANCE_GTK_FONT (XFONT_INSTANCE (font));
@@ -246,7 +255,7 @@
 }
 
 static Lisp_Object
-gdk_event_to_emacs_event(GdkEvent *ev)
+gdk_event_to_emacs_event (GdkEvent *ev)
 {
   Lisp_Object event = Qnil;
 
--- a/src/gtk-xemacs.c	Mon Feb 01 01:05:28 2010 -0600
+++ b/src/gtk-xemacs.c	Mon Feb 01 02:15:28 2010 -0600
@@ -21,22 +21,21 @@
 ** along with XEmacs; see the file COPYING.  If not, write to
 ** the Free Software Foundation, Inc., 51 Franklin Street - Fifth Floor,
 ** Boston, MA 02111-1301, USA.  */
-*/
 
 #include <config.h>
 
 #include "lisp.h"
-#include "console-gtk.h"
-#include "objects-gtk.h"
-#include "gtk-xemacs.h"
+
 #include "device.h"
+#include "faces.h"
 #include "glyphs.h"
 #include "window.h"
-#include "faces.h"
-#include "event-gtk.h"
+
 #include "frame-impl.h"
 #include "console-gtk-impl.h"
 #include "device-impl.h"
+#include "gtk-xemacs.h"
+#include "objects-gtk.h"
 
 extern Lisp_Object Vmodeline_face;
 extern Lisp_Object Vscrollbar_on_left_p;
--- a/src/gtk-xemacs.h	Mon Feb 01 01:05:28 2010 -0600
+++ b/src/gtk-xemacs.h	Mon Feb 01 02:15:28 2010 -0600
@@ -21,16 +21,10 @@
 ** along with XEmacs; see the file COPYING.  If not, write to
 ** the Free Software Foundation, Inc., 51 Franklin Street - Fifth Floor,
 ** Boston, MA 02111-1301, USA.  */
-*/
 
 #ifndef __GTK_XEMACS_H__
 #define __GTK_XEMACS_H__
 
-#include <config.h>
-#include "frame.h"
-#include <gdk/gdk.h>
-#include <gtk/gtkfixed.h>
-
 BEGIN_C_DECLS
 
 #define GTK_XEMACS(obj)			GTK_CHECK_CAST (obj, gtk_xemacs_get_type (), GtkXEmacs)
@@ -38,22 +32,22 @@
 #define GTK_IS_XEMACS(obj)		GTK_CHECK_TYPE (obj, gtk_xemacs_get_type ())
 #define GTK_XEMACS_FRAME(obj)	GTK_XEMACS (obj)->f
 
-	typedef struct _GtkXEmacs GtkXEmacs;
-	typedef struct _GtkXEmacsClass GtkXEmacsClass;
+typedef struct _GtkXEmacs GtkXEmacs;
+typedef struct _GtkXEmacsClass GtkXEmacsClass;
 
-	struct _GtkXEmacs
-	{
-		GtkFixed fixed;
-		struct frame *f;
-	};
+struct _GtkXEmacs
+{
+  GtkFixed fixed;
+  struct frame *f;
+};
 
-	struct _GtkXEmacsClass
-	{
-		GtkFixedClass parent_class;
-	};
+struct _GtkXEmacsClass
+{
+  GtkFixedClass parent_class;
+};
 
-	guint gtk_xemacs_get_type (void);
-	GtkWidget *gtk_xemacs_new (struct frame *f);
+guint gtk_xemacs_get_type (void);
+GtkWidget *gtk_xemacs_new (struct frame *f);
 
 END_C_DECLS
 
--- a/src/objects-gtk.c	Mon Feb 01 01:05:28 2010 -0600
+++ b/src/objects-gtk.c	Mon Feb 01 02:15:28 2010 -0600
@@ -39,7 +39,7 @@
 #include "objects-gtk-impl.h"
 
 /* sigh */
-#include <gdk/gdkx.h>
+#include "sysgdkx.h"
 
 /* XListFonts doesn't allocate memory unconditionally based on this. (For
    XFree86 in 2005, at least. */
--- a/src/objects-xlike-inc.c	Mon Feb 01 01:05:28 2010 -0600
+++ b/src/objects-xlike-inc.c	Mon Feb 01 02:15:28 2010 -0600
@@ -1,4 +1,4 @@
-/* Shared object code between X and GTK -- include file.
+/* Common code between X and GTK -- fonts and colors.
    Copyright (C) 1991-5, 1997 Free Software Foundation, Inc.
    Copyright (C) 1995 Sun Microsystems, Inc.
    Copyright (C) 1996, 2001, 2002, 2003 Ben Wing.
@@ -22,10 +22,18 @@
 
 /* Synched up with: Not in FSF. */
 
+/* Before including this file, you need to define either THIS_IS_X or
+   THIS_IS_GTK. */
+
+/* See comment at top of console-xlike-inc.h for an explanation of
+   how this file works. */
+
 /* Pango is ready for prime-time now, as far as I understand it. The GTK
    people should be using that. Oh well. (Aidan Kehoe, Sat Nov 4 12:41:12
    CET 2006) */
 
+#include "console-xlike-inc.h"
+
 #if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901)
 
 #ifdef DEBUG_XEMACS
@@ -78,19 +86,11 @@
 }
 
 static int
-#ifdef THIS_IS_GTK
-gtk_font_spec_matches_charset (struct device * USED_IF_XFT (d),
-			       Lisp_Object charset,
-			       const Ibyte *nonreloc, Lisp_Object reloc,
-			       Bytecount offset, Bytecount length,
-			       enum font_specifier_matchspec_stages stage)
-#else
-x_font_spec_matches_charset (struct device * USED_IF_XFT (d),
-			     Lisp_Object charset,
-			     const Ibyte *nonreloc, Lisp_Object reloc,
-			     Bytecount offset, Bytecount length,
-			     enum font_specifier_matchspec_stages stage)
-#endif
+XFUN (font_spec_matches_charset) (struct device * USED_IF_XFT (d),
+				  Lisp_Object charset,
+				  const Ibyte *nonreloc, Lisp_Object reloc,
+				  Bytecount offset, Bytecount length,
+				  enum font_specifier_matchspec_stages stage)
 {
   Lisp_Object registries = Qnil;
   long i, registries_len;
@@ -198,12 +198,7 @@
   int count = 0, i;
   DECLARE_EISTRING(ei_single_result);
 
-  names = XListFonts (
-#ifdef THIS_IS_GTK
-		      GDK_DISPLAY (),
-#else
-		      DEVICE_X_DISPLAY (XDEVICE (device)),
-#endif
+  names = XListFonts (GET_XLIKE_DISPLAY (XDEVICE (device)),
 		      xlfd, MAX_FONT_COUNT, &count);
 
   for (i = 0; i < count; ++i)
@@ -664,14 +659,9 @@
 /* find a font spec that matches font spec FONT and also matches
    (the registry of) CHARSET. */
 static Lisp_Object
-#ifdef THIS_IS_GTK
-gtk_find_charset_font (Lisp_Object device, Lisp_Object font,
-		       Lisp_Object charset,
-		       enum font_specifier_matchspec_stages stage)
-#else
-x_find_charset_font (Lisp_Object device, Lisp_Object font, Lisp_Object charset,
-		     enum font_specifier_matchspec_stages stage)
-#endif
+XFUN (find_charset_font) (Lisp_Object device, Lisp_Object font,
+			  Lisp_Object charset,
+			  enum font_specifier_matchspec_stages stage)
 {
   Lisp_Object result = Qnil, registries = Qnil;
   int j, hyphen_count, registries_len = 0;
--- a/src/redisplay-gtk.c	Mon Feb 01 01:05:28 2010 -0600
+++ b/src/redisplay-gtk.c	Mon Feb 01 02:15:28 2010 -0600
@@ -23,75 +23,50 @@
 
 /* Synched up with:  Not in FSF. */
 
+#define THIS_IS_GTK
 #include "redisplay-xlike-inc.c"
 
 /*****************************************************************************
- gtk_bevel_modeline
+ Draw a shadow around the given area using the standard theme engine routines.
+ ****************************************************************************/
 
- Draw a 3d border around the modeline on window W.
- ****************************************************************************/
 static void
-gtk_bevel_modeline (struct window *w, struct display_line *dl)
+XLIKE_bevel_area (struct window *w, face_index UNUSED (findex),
+		  int x, int y, int width, int height,
+		  int shadow_thickness, int UNUSED (edges),
+		  enum edge_style style)
 {
   struct frame *f = XFRAME (w->frame);
-  int shadow_thickness = MODELINE_SHADOW_THICKNESS (w);
-  int x,y, width, height;
-
-  x = WINDOW_MODELINE_LEFT (w);
-  width = WINDOW_MODELINE_RIGHT (w) - x;
-  y = dl->ypos - dl->ascent - shadow_thickness;
-  height = dl->ascent + dl->descent + 2 * shadow_thickness;
-
-  gtk_output_shadows (f, x, y, width, height, shadow_thickness);
-}
-
-/*****************************************************************************
- gtk_output_shadows
+  GdkWindow *x_win = GET_GTK_WIDGET_WINDOW (FRAME_GTK_TEXT_WIDGET (f));
+  GtkStyle *gstyle = FRAME_GTK_TEXT_WIDGET (f)->style;
+  GtkShadowType stype;
 
- Draw a shadow around the given area using the standard theme engine routines.
- ****************************************************************************/
-void
-gtk_output_shadows (struct frame *f, int x, int y, int width, int height,
-		    int shadow_thickness)
-{
-  GdkWindow *x_win = GET_GTK_WIDGET_WINDOW (FRAME_GTK_TEXT_WIDGET (f));
-  GtkStyle *style = FRAME_GTK_TEXT_WIDGET (f)->style;
-  GtkShadowType stype = GTK_SHADOW_OUT;
-
-  if (shadow_thickness < 0)
-  {
-      stype = GTK_SHADOW_IN;
-  }
-  else if (shadow_thickness == 0)
-  {
-      stype = GTK_SHADOW_NONE;
-  }
+  if (shadow_thickness == 0)
+    stype = GTK_SHADOW_NONE;
+  else
+    switch (style)
+      {
+      case EDGE_BEVEL_IN: style = GTK_SHADOW_IN; break;
+      case EDGE_BEVEL_OUT: style = GTK_SHADOW_OUT; break;
+      case EDGE_ETCHED_IN: style = GTK_SHADOW_ETCHED_IN; break;
+      case EDGE_ETCHED_OUT: style = GTK_SHADOW_ETCHED_OUT; break;
+      default: ABORT (); style = GTK_SHADOW_OUT;
+      }
 
   /* Do we want to have some magic constants to set
      GTK_SHADOW_ETCHED_IN or GTK_SHADOW_ETCHED_OUT? */
 
-  gtk_paint_shadow (style, x_win, GTK_STATE_NORMAL, stype, NULL,
+  gtk_paint_shadow (gstyle, x_win, GTK_STATE_NORMAL, stype, NULL,
 		    FRAME_GTK_TEXT_WIDGET (f), "modeline",
 		    x, y, width, height);
 }
 
-static void
-gtk_bevel_area (struct window *w, face_index UNUSED (findex),
-		int x, int y, int width, int height,
-		int shadow_thickness, int UNUSED (edges),
-		enum edge_style UNUSED (style))
-{
-  struct frame *f = XFRAME (w->frame);
-
-  gtk_output_shadows (f, x, y, width, height, shadow_thickness);
-}
-
 
 
 /* Make audible bell.  */
 static void
-gtk_ring_bell (struct device *UNUSED (d), int volume, int UNUSED (pitch),
-	       int UNUSED (duration))
+XLIKE_ring_bell (struct device *UNUSED (d), int volume, int UNUSED (pitch),
+		 int UNUSED (duration))
 {
   /* Gdk does not allow us to control the duration / pitch / volume */
   if (volume > 0)
@@ -106,16 +81,16 @@
    single $#!%@ing piece of text, which I do NOT want to do. */
 #define USE_X_SPECIFIC_DRAW_ROUTINES 1
 
-#include <gdk/gdkx.h>
+#include "sysgdkx.h"
 
-static
-void gdk_draw_text_image (GdkDrawable *drawable,
-			  GdkFont     *font,
-			  GdkGC       *gc,
-			  gint         x,
-			  gint         y,
-			  const gchar *text,
-			  gint         text_length)
+static void
+gdk_draw_text_image (GdkDrawable *drawable,
+		     GdkFont     *font,
+		     GdkGC       *gc,
+		     gint         x,
+		     gint         y,
+		     const gchar *text,
+		     gint         text_length)
 {
 #if !USE_X_SPECIFIC_DRAW_ROUTINES
   int width = gdk_text_measure (font, text, text_length);
--- a/src/redisplay-x.c	Mon Feb 01 01:05:28 2010 -0600
+++ b/src/redisplay-x.c	Mon Feb 01 02:15:28 2010 -0600
@@ -32,8 +32,12 @@
 int x_interline_space; /* #### this needs to be implemented, but per-font */
 
 #define THIS_IS_X
+#include "redisplay-xlike-inc.c"
 
-#include "redisplay-xlike-inc.c"
+static void x_output_shadows (struct frame *f, int x, int y, int width,
+			      int height, GC top_shadow_gc,
+			      GC bottom_shadow_gc, GC background_gc,
+			      int shadow_thickness, int edges);
 
 /*****************************************************************************
  x_window_output_begin
@@ -41,7 +45,7 @@
  Perform any necessary initialization prior to an update.
  ****************************************************************************/
 static void
-x_window_output_begin (struct window *UNUSED (w))
+XLIKE_window_output_begin (struct window *UNUSED (w))
 {
 }
 
@@ -51,7 +55,7 @@
  Perform any necessary flushing of queues when an update has completed.
  ****************************************************************************/
 static void
-x_window_output_end (struct window *w)
+XLIKE_window_output_end (struct window *w)
 {
   if (!(check_if_pending_expose_event (WINDOW_XDEVICE (w))))
     XFlush (DEVICE_X_DISPLAY (WINDOW_XDEVICE (w)));
@@ -63,9 +67,9 @@
  Draw shadows for the given area in the given face.
  ****************************************************************************/
 static void
-x_bevel_area (struct window *w, face_index findex,
-	      int x, int y, int width, int height,
-	      int shadow_thickness, int edges, enum edge_style style)
+XLIKE_bevel_area (struct window *w, face_index findex,
+		  int x, int y, int width, int height,
+		  int shadow_thickness, int edges, enum edge_style style)
 {
   struct frame *f = XFRAME (w->frame);
   struct device *d = XDEVICE (f->device);
@@ -188,7 +192,7 @@
  Draw a shadow around the given area using the given GC's.  It is the
  callers responsibility to set the GC's appropriately.
  ****************************************************************************/
-void
+static void
 x_output_shadows (struct frame *f, int x, int y, int width, int height,
 		  GC top_shadow_gc, GC bottom_shadow_gc,
 		  GC UNUSED (background_gc), int shadow_thickness, int edges)
@@ -338,7 +342,7 @@
 /* Make audible bell.  */
 
 static void
-x_ring_bell (struct device *d, int volume, int pitch, int duration)
+XLIKE_ring_bell (struct device *d, int volume, int pitch, int duration)
 {
   Display *display = DEVICE_X_DISPLAY (d);
 
--- a/src/redisplay-xlike-inc.c	Mon Feb 01 01:05:28 2010 -0600
+++ b/src/redisplay-xlike-inc.c	Mon Feb 01 02:15:28 2010 -0600
@@ -1,4 +1,4 @@
-/* Common code between X and GTK.
+/* Common code between X and GTK -- redisplay-related.
    Copyright (C) 1994, 1995 Board of Trustees, University of Illinois.
    Copyright (C) 1994 Lucid, Inc.
    Copyright (C) 1995 Sun Microsystems, Inc.
@@ -29,6 +29,9 @@
 
 /* Lots of work done by Ben Wing for Mule */
 
+/* Before including this file, you need to define either THIS_IS_X or
+   THIS_IS_GTK.  See comments in console-xlike-inc.h. */
+
 #include <config.h>
 #include "lisp.h"
 
@@ -48,288 +51,46 @@
 #endif
 #include "charset.h"
 
-#ifdef THIS_IS_X
-#include "console-x-impl.h"
-#include "glyphs-x.h"
-#include "objects-x-impl.h"
-#include "xgccache.h"
-#else /* THIS_IS_GTK */
-#include "console-gtk-impl.h"
-#include "gccache-gtk.h"
-#include "glyphs-gtk.h"
-#include "objects-gtk-impl.h"
-#endif /* THIS_IS_GTK */
-
-#include "EmacsFrame.h"
-#include "EmacsFrameP.h"
+#define NEED_GCCACHE_H
+#define NEED_GLYPHS_H
+#define NEED_OBJECTS_IMPL_H
+#include "console-xlike-inc.h"
 
 #include "sysproc.h" /* for select() */
 
 #ifdef THIS_IS_X
+#include "EmacsFrame.h"
+#include "EmacsFrameP.h"
+
 #include <X11/bitmaps/gray>
 #endif /* THIS_IS_X */
 
 #define EOL_CURSOR_WIDTH	5
 
-/* About some of the types below:
-
-   X has two ways of representing a color: (a) as an unsigned long
-   representing a color pixel value, i.e. the actual value stored in memory
-   or a file at a particular pixel location to indicate that the pixel
-   takes on a specific color; and (b) an XColor structure, which
-   encapsulates both the RGB components of a color and the associated color
-   pixel value.
-
-   We call the former type XLIKE_PIXCOLOR and the latter XLIKE_COLOR.
-   GTK uses the same GdkColor structure for both, and normally passes in
-   a pointer.  We provide routines to handle the two logical color types.  */
-
-#ifdef THIS_IS_X
-
-/***************************************************************************/
-/*               Definitions implementing X flavor of XLIKE                */
-/***************************************************************************/
-
-#define XLIKE_NAME x
-#define USED_IF_X(var) var
-
-/* types */
-#define XLIKE_DISPLAY Display *
-#define XLIKE_WINDOW Window
-#define XLIKE_GC GC
-#define XLIKE_RECTANGLE XRectangle
-#define XLIKE_GCVALUES XGCValues
-#define XLIKE_COLOR XColor
-#define XLIKE_PIXCOLOR unsigned long
-
-/* constants */
-#define XLIKE_NONE None
-#define XLIKE_FALSE False
-
-#define XLIKE_GC_BACKGROUND GCBackground
-#define XLIKE_GC_CLIP_MASK GCClipMask
-#define XLIKE_GC_CLIP_X_ORIGIN GCClipXOrigin
-#define XLIKE_GC_CLIP_Y_ORIGIN GCClipYOrigin
-#define XLIKE_GC_EXPOSURES GCGraphicsExposures
-#define XLIKE_GC_FILL GCFillStyle
-#define XLIKE_GC_FONT GCFont
-#define XLIKE_GC_FOREGROUND GCForeground
-#define XLIKE_GC_FUNCTION GCFunction
-#define XLIKE_GC_LINE_WIDTH GCLineWidth
-#define XLIKE_GC_STIPPLE GCStipple
-#define XLIKE_GC_TILE GCTile
-
-#define XLIKE_GX_COPY GXcopy
-#define XLIKE_GX_XOR GXxor
-
-#define XLIKE_FILL_MEMBER fill_style
-#define XLIKE_FILL_STIPPLED FillStippled
-#define XLIKE_FILL_OPAQUE_STIPPLED FillOpaqueStippled
-#define XLIKE_FILL_TILED FillTiled
-#define XLIKE_FILL_SOLID FillSolid
-
-/* functions */
-#define GET_XLIKE_DISPLAY(d) DEVICE_X_DISPLAY (d)
-#define GET_XLIKE_WINDOW(w) XtWindow (FRAME_X_TEXT_WIDGET (f))
-#define XLIKE_FILL_RECTANGLE(dpy, x_win, gc, x, y, width, height) \
-  XFillRectangle (dpy, x_win, gc, x, y, width, height)
-#define XLIKE_DRAW_RECTANGLE(dpy, x_win, gc, x, y, width, height) \
-  XDrawRectangle (dpy, x_win, gc, x, y, width, height)
-#define XLIKE_DRAW_LINE(dpy, x_win, gc, x1, y1, x2, y2) \
-  XDrawLine (dpy, x_win, gc, x1, y1, x2, y2)
-#define XLIKE_OUTPUT_XLIKE_PIXMAP x_output_x_pixmap
-
-#define XLIKE_DISPLAY_LINE_HEIGHT(dl) DISPLAY_LINE_HEIGHT (dl)
-#define XLIKE_DISPLAY_LINE_YPOS(dl) DISPLAY_LINE_YPOS (dl)
-#define XLIKE_DISPLAY_LINE_TOP_CLIP(dl) ((dl)->top_clip)
-#define XLIKE_SET_CLIP_RECTANGLE(dpy, gc, xorig, yorig, prect)		\
-  /* #### why not Unsorted? */						\
-  XSetClipRectangles (dpy, gc, xorig, yorig, prect, 1, YXBanded)
-#define XLIKE_CLEAR_CLIP_MASK(dpy, gc)		\
-do						\
-  {						\
-    XSetClipMask (dpy, gc, None);		\
-    XSetClipOrigin (dpy, gc, 0, 0);		\
-  }						\
-while (0)
-#define XLIKE_FLUSH(dpy) XSync (dpy, False)
-#define XLIKE_CLEAR_AREA(dpy, win, x, y, width, height) \
-  XClearArea (dpy, win, x, y, width, height, False)
- 
-#define IMAGE_INSTANCE_XLIKE_MASK IMAGE_INSTANCE_X_MASK
-#define XIMAGE_INSTANCE_XLIKE_PIXMAP XIMAGE_INSTANCE_X_PIXMAP
-#define COLOR_INSTANCE_XLIKE_COLOR COLOR_INSTANCE_X_COLOR
-#define FONT_INSTANCE_XLIKE_FONT FONT_INSTANCE_X_FONT
-#define DEVICE_XLIKE_GC_CACHE DEVICE_X_GC_CACHE
-#define DEVICE_XLIKE_GRAY_PIXMAP DEVICE_X_GRAY_PIXMAP
-#define XLIKE_COLOR_TO_PIXCOLOR(ci) ((ci).pixel)
-#define XLIKE_SET_PIXCOLOR_COPY(lval, rval) ((lval) = (rval))
-#define XLIKE_SET_PIXCOLOR_NUM(lval, rval) ((lval) = (rval))
-#define XLIKE_FONT_NUM(val) ((val)->fid)
-
-#define XLIKE_OUTPUT_XLIKE_PIXMAP x_output_x_pixmap
-
-/************ End X flavor of XLIKE **********/
-
-
-
-
-#else /* THIS_IS_GTK */
-
-/***************************************************************************/
-/*              Definitions implementing GTK flavor of XLIKE               */
-/***************************************************************************/
-
-#define XLIKE_NAME gtk
-#define USED_IF_X(var) UNUSED (var)
-
-/*types */
-#define XLIKE_DISPLAY void *
-#define XLIKE_WINDOW GdkWindow *
-#define XLIKE_GC GdkGC *
-#define XLIKE_RECTANGLE GdkRectangle
-#define XLIKE_GCVALUES GdkGCValues
-#define XLIKE_COLOR GdkColor *
-#define XLIKE_PIXCOLOR GdkColor *
-
-/* constants */
-#define XLIKE_NONE 0
-#define XLIKE_FALSE FALSE
-
-#define XLIKE_GC_BACKGROUND GDK_GC_BACKGROUND
-#define XLIKE_GC_CLIP_MASK GDK_GC_CLIP_MASK
-#define XLIKE_GC_CLIP_X_ORIGIN GDK_GC_CLIP_X_ORIGIN
-#define XLIKE_GC_CLIP_Y_ORIGIN GDK_GC_CLIP_Y_ORIGIN
-#define XLIKE_GC_EXPOSURES GDK_GC_EXPOSURES
-#define XLIKE_GC_FILL GDK_GC_FILL
-#define XLIKE_GC_FONT GDK_GC_FONT
-#define XLIKE_GC_FOREGROUND GDK_GC_FOREGROUND
-#define XLIKE_GC_FUNCTION GDK_GC_FUNCTION
-#define XLIKE_GC_LINE_WIDTH GDK_GC_LINE_WIDTH
-#define XLIKE_GC_STIPPLE GDK_GC_STIPPLE
-#define XLIKE_GC_TILE GDK_GC_TILE
-
-#define XLIKE_GX_COPY GDK_COPY
-#define XLIKE_GX_XOR GDK_XOR
-
-#define XLIKE_FILL_MEMBER fill
-#define XLIKE_FILL_STIPPLED GDK_STIPPLED
-#define XLIKE_FILL_OPAQUE_STIPPLED GDK_OPAQUE_STIPPLED
-#define XLIKE_FILL_TILED GDK_TILED
-#define XLIKE_FILL_SOLID GDK_SOLID
-
-/* functions */
-
-#define GET_XLIKE_DISPLAY(d) NULL
-#define GET_XLIKE_WINDOW(w) GET_GTK_WIDGET_WINDOW (FRAME_GTK_TEXT_WIDGET (w))
-#define XLIKE_FILL_RECTANGLE(dpy, x_win, gc, x, y, width, height) \
-  gdk_draw_rectangle (GDK_DRAWABLE (x_win), gc, TRUE, x, y, width, height)
-#define XLIKE_DRAW_RECTANGLE(dpy, x_win, gc, x, y, width, height) \
-  gdk_draw_rectangle (GDK_DRAWABLE (x_win), gc, FALSE, x, y, width, height)
-#define XLIKE_DRAW_LINE(dpy, x_win, gc, x1, y1, x2, y2) \
-  gdk_draw_line (GDK_DRAWABLE (x_win), gc, x1, y1, x2, y2)
-#define XLIKE_OUTPUT_XLIKE_PIXMAP gtk_output_gdk_pixmap
-
-/* FIXME: This is totally bogus.  It removes dl->top_clip from the
-   equations.  If there is a bug involving this, fix it properly!
-   Or just ensure that top_clip is 0. */
-#define XLIKE_DISPLAY_LINE_HEIGHT(dl) \
-  ((dl)->ascent + ((dl)->descent - (dl)->clip)
-#define XLIKE_DISPLAY_LINE_YPOS(dl) ((dl)->ypos - (dl)->ascent)
-#define XLIKE_DISPLAY_LINE_TOP_CLIP(dl) ((0)
-#define XLIKE_SET_CLIP_RECTANGLE(dpy, gc, xorig, yorig, prect)	\
-do								\
-  {								\
-    gdk_gc_set_clip_rectangle (gc, prect);			\
-    gdk_gc_set_clip_origin (gc, xorig, yorig);			\
-  }								\
-while (0)
-#define XLIKE_CLEAR_CLIP_MASK(dpy, gc)		\
-do						\
-  {						\
-    gdk_gc_set_clip_rectangle (gc, NULL);	\
-    gdk_gc_set_clip_origin (gc, 0, 0);		\
-  }						\
-while (0)
-#define XLIKE_FLUSH(dpy) gdk_flush ()
-#define XLIKE_CLEAR_AREA(dpy, win, x, y, width, height) \
-  gdk_window_clear_area (win, x, y, width, height)
-
-#define IMAGE_INSTANCE_XLIKE_MASK IMAGE_INSTANCE_GTK_MASK
-#define XIMAGE_INSTANCE_XLIKE_PIXMAP XIMAGE_INSTANCE_GTK_PIXMAP
-#define COLOR_INSTANCE_XLIKE_COLOR COLOR_INSTANCE_GTK_COLOR
-#define FONT_INSTANCE_XLIKE_FONT FONT_INSTANCE_GTK_FONT
-#define DEVICE_XLIKE_GRAY_PIXMAP DEVICE_GTK_GRAY_PIXMAP
-#define DEVICE_XLIKE_GC_CACHE DEVICE_GTK_GC_CACHE
-#define XLIKE_COLOR_TO_PIXCOLOR(ci) (ci)
-#define XLIKE_SET_PIXCOLOR_COPY(lval, rval) ((lval) = *(rval))
-#define XLIKE_SET_PIXCOLOR_NUM(lval, rval) ((lval).pixel = (rval))
-#define XLIKE_FONT_NUM(val) (val)
-
-#define XLIKE_OUTPUT_XLIKE_PIXMAP gtk_output_gdk_pixmap
-
-static void gtk_output_pixmap (struct window *w,
-			       Lisp_Object image_instance,
-			       struct display_box *db,
-			       struct display_glyph_area *dga,
-			       face_index findex,
-			       int cursor_start,
-			       int cursor_width,
-			       int cursor_height,
-			       int bgpixmap);
-static void gtk_clear_region (Lisp_Object locale, struct device* d,
-			      struct frame* f, face_index findex, int x, int y,
-			      int width, int height, Lisp_Object fcolor,
-			      Lisp_Object bcolor,
-			      Lisp_Object background_pixmap);
-static void gtk_bevel_modeline (struct window *w, struct display_line *dl);
-
-#if 0
-static void __describe_gc (GdkGC *);
-#endif
-
-/************ End GTK flavor of XLIKE **********/
-
-#endif /* (not) THIS_IS_X */
-
-
-
-/***************************************************************************/
-/*                           Common definitions                            */
-/***************************************************************************/
-
-#define XCOLOR_INSTANCE_XLIKE_COLOR(x) \
-  COLOR_INSTANCE_XLIKE_COLOR (XCOLOR_INSTANCE (x))
-
-#define XLIKE_PASTE_1(a,b) a##_##b
-#define XLIKE_PASTE(a,b) XLIKE_PASTE_1(a,b)
-#define XLIKE_CONSOLE_HAS_METHOD_1(xlike, name) CONSOLE_HAS_METHOD (xlike, name)
-#define XLIKE_CONSOLE_HAS_METHOD(name) \
-  XLIKE_CONSOLE_HAS_METHOD_1 (XLIKE_NAME, name)
-
 /* Device methods */
 
-#define XLIKE_text_width XLIKE_PASTE (XLIKE_NAME, text_width)
-#define XLIKE_output_display_block XLIKE_PASTE (XLIKE_NAME, output_display_block)
-#define XLIKE_divider_height XLIKE_PASTE (XLIKE_NAME, divider_height)
-#define XLIKE_eol_cursor_width XLIKE_PASTE (XLIKE_NAME, eol_cursor_width)
-#define XLIKE_output_vertical_divider XLIKE_PASTE (XLIKE_NAME, output_vertical_divider)
-#define XLIKE_clear_region XLIKE_PASTE (XLIKE_NAME, clear_region)
-#define XLIKE_clear_frame XLIKE_PASTE (XLIKE_NAME, clear_frame)
-#define XLIKE_flash XLIKE_PASTE (XLIKE_NAME, flash)
-#define XLIKE_ring_bell XLIKE_PASTE (XLIKE_NAME, ring_bell)
-#define XLIKE_bevel_area XLIKE_PASTE (XLIKE_NAME, bevel_area)
-#define XLIKE_output_string XLIKE_PASTE (XLIKE_NAME, output_string)
-#define XLIKE_output_pixmap XLIKE_PASTE (XLIKE_NAME, output_pixmap)
-#define XLIKE_window_output_begin XLIKE_PASTE (XLIKE_NAME, window_output_begin)
-#define XLIKE_window_output_end XLIKE_PASTE (XLIKE_NAME, window_output_end)
+#define XLIKE_text_width XFUN (text_width)
+#define XLIKE_output_display_block XFUN (output_display_block)
+#define XLIKE_divider_height XFUN (divider_height)
+#define XLIKE_eol_cursor_width XFUN (eol_cursor_width)
+#define XLIKE_output_vertical_divider XFUN (output_vertical_divider)
+#define XLIKE_clear_region XFUN (clear_region)
+#define XLIKE_clear_frame XFUN (clear_frame)
+#define XLIKE_flash XFUN (flash)
+#define XLIKE_ring_bell XFUN (ring_bell)
+#define XLIKE_bevel_area XFUN (bevel_area)
+#define XLIKE_output_string XFUN (output_string)
+#define XLIKE_output_pixmap XFUN (output_pixmap)
+#define XLIKE_output_xlike_pixmap XFUN (output_xlike_pixmap)
+#define XLIKE_window_output_begin XFUN (window_output_begin)
+#define XLIKE_window_output_end XFUN (window_output_end)
 
 /* Miscellaneous split functions */
 
 #define console_type_create_redisplay_XLIKE XLIKE_PASTE (console_type_create_redisplay, XLIKE_NAME)
-#define XLIKE_get_gc XLIKE_PASTE (XLIKE_NAME, get_gc)
-#define XLIKE_output_blank XLIKE_PASTE (XLIKE_NAME, output_blank)
-#define XLIKE_text_width_single_run XLIKE_PASTE (XLIKE_NAME, text_width_single_run)
+#define XLIKE_get_gc XFUN (get_gc)
+#define XLIKE_output_blank XFUN (output_blank)
+#define XLIKE_text_width_single_run XFUN (text_width_single_run)
 
 static void XLIKE_output_blank (struct window *w, struct display_line *dl,
 				struct rune *rb, int start_pixpos,
@@ -337,16 +98,10 @@
 static void XLIKE_output_horizontal_line (struct window *w,
 					  struct display_line *dl,
 					  struct rune *rb);
-
-static void XLIKE_output_vertical_divider (struct window *w, int clear);
-
 static void XLIKE_output_eol_cursor (struct window *w,
 				     struct display_line *dl,
 				     int xpos, face_index findex);
-static void XLIKE_clear_frame (struct frame *f);
 static void XLIKE_clear_frame_windows (Lisp_Object window);
-static void XLIKE_window_output_begin (struct window *w);
-static void XLIKE_window_output_end (struct window *w);
 static void XLIKE_bevel_area (struct window *w, face_index findex,
 			      int x, int y, int width, int height,
 			      int shadow_thickness, int edges,
@@ -354,6 +109,12 @@
 static void XLIKE_ring_bell (struct device *d, int volume, int pitch,
 			     int duration);
 
+#ifdef THIS_IS_X
+static void XLIKE_window_output_begin (struct window *UNUSED (w));
+static void XLIKE_window_output_end (struct window *w);
+#endif /* THIS_IS_X */
+
+
 /****************************************************************************/
 /*                                                                          */
 /*                           Separate textual runs                          */
@@ -735,24 +496,14 @@
     {
       if (run->dimension == 2)
 	{	
-#ifdef THIS_IS_X
-	  return XTextWidth16 (FONT_INSTANCE_X_FONT (fi),
-			       (XChar2b *) run->ptr, run->len);
-#else /* THIS_IS_GTK */
 	  /* stderr_out ("Measuring wide characters\n"); */
-	  return gdk_text_width_wc (FONT_INSTANCE_GTK_FONT (fi),
-				    (GdkWChar *) run->ptr, run->len);
-#endif /* THIS_IS_GTK */
+	  return XLIKE_TEXT_WIDTH_WIDE (FONT_INSTANCE_XLIKE_FONT (fi),
+					run->ptr, run->len);
 	}
       else
 	{
-#ifdef THIS_IS_X
-	  return XTextWidth (FONT_INSTANCE_X_FONT (fi),
-			     (char *) run->ptr, run->len);
-#else /* THIS_IS_GTK */
-	  return gdk_text_width (FONT_INSTANCE_GTK_FONT (fi),
-				 (char *) run->ptr, run->len);
-#endif /* THIS_IS_GTK */
+	  return XLIKE_TEXT_WIDTH (FONT_INSTANCE_XLIKE_FONT (fi),
+				   run->ptr, run->len);
 	}
     }
   else
@@ -760,6 +511,7 @@
   return 0;			/* shut up GCC */
 }
 
+
 /*
    XLIKE_text_width
 
@@ -768,10 +520,10 @@
    */
 
 /* #### Break me out into a separate header */
-int XLIKE_text_width (struct frame *USED_IF_X (f), struct face_cachel *cachel,
+int XLIKE_text_width (struct frame *f, struct face_cachel *cachel,
 		      const Ichar *str, Charcount len);
 int
-XLIKE_text_width (struct frame *USED_IF_X (f), struct face_cachel *cachel,
+XLIKE_text_width (struct frame *f, struct face_cachel *cachel,
 		  const Ichar *str, Charcount len)
 {
   /* !!#### Needs review */
@@ -1060,12 +812,18 @@
   Dynarr_free (buf);
 }
 
+/* Called as gtk_get_gc from gtk-glue.c */
+
+XLIKE_GC XLIKE_get_gc (struct device *d, Lisp_Object font, Lisp_Object fg, 
+		       Lisp_Object bg, Lisp_Object bg_pmap,
+		       Lisp_Object lwidth);
+
 /*****************************************************************************
  XLIKE_get_gc
 
  Given a number of parameters return a GC with those properties.
  ****************************************************************************/
-static XLIKE_GC
+XLIKE_GC
 XLIKE_get_gc (struct device *d, Lisp_Object font, Lisp_Object fg, 
 	      Lisp_Object bg, Lisp_Object bg_pmap, Lisp_Object lwidth)
 {
@@ -1079,7 +837,7 @@
   gcv.clip_mask = XLIKE_NONE;
   gcv.clip_x_origin = 0;
   gcv.clip_y_origin = 0;
-  gcv.XLIKE_FILL_MEMBER = XLIKE_FILL_SOLID;
+  XLIKE_SET_GC_FILL (gcv, XLIKE_FILL_SOLID);
   mask = XLIKE_GC_EXPOSURES | XLIKE_GC_CLIP_MASK | XLIKE_GC_CLIP_X_ORIGIN | XLIKE_GC_CLIP_Y_ORIGIN;
   mask |= XLIKE_GC_FILL;
 
@@ -1109,22 +867,18 @@
   if (!NILP (fg))
     {
       if (COLOR_INSTANCEP (fg))
-	XLIKE_SET_PIXCOLOR_COPY
-	  (gcv.foreground,
-	   XLIKE_COLOR_TO_PIXCOLOR (XCOLOR_INSTANCE_XLIKE_COLOR (fg)));
+	XLIKE_SET_GC_COLOR (gcv.foreground, XCOLOR_INSTANCE_XLIKE_COLOR (fg));
       else
-	XLIKE_SET_PIXCOLOR_NUM (gcv.foreground, XINT (fg));
+	XLIKE_SET_GC_PIXEL (gcv.foreground, XINT (fg));
       mask |= XLIKE_GC_FOREGROUND;
     }
 
   if (!NILP (bg))
     {
       if (COLOR_INSTANCEP (bg))
-	XLIKE_SET_PIXCOLOR_COPY
-	  (gcv.background,
-	   XLIKE_COLOR_TO_PIXCOLOR (XCOLOR_INSTANCE_XLIKE_COLOR (bg)));
+	XLIKE_SET_GC_COLOR (gcv.background, XCOLOR_INSTANCE_XLIKE_COLOR (bg));
       else
-	XLIKE_SET_PIXCOLOR_NUM (gcv.background, XINT (bg));
+	XLIKE_SET_GC_PIXEL (gcv.background, XINT (bg));
       mask |= XLIKE_GC_BACKGROUND;
     }
 
@@ -1134,7 +888,7 @@
     {
       assert (DEVICE_XLIKE_GRAY_PIXMAP (d) != XLIKE_NONE);
 
-      gcv.XLIKE_FILL_MEMBER = XLIKE_FILL_STIPPLED;
+      XLIKE_SET_GC_FILL (gcv, XLIKE_FILL_STIPPLED);
       gcv.stipple = DEVICE_XLIKE_GRAY_PIXMAP (d);
       mask |= (XLIKE_GC_FILL | XLIKE_GC_STIPPLE);
     }
@@ -1143,13 +897,13 @@
     {
       if (XIMAGE_INSTANCE_PIXMAP_DEPTH (bg_pmap) == 0)
 	{
-	  gcv.XLIKE_FILL_MEMBER = XLIKE_FILL_OPAQUE_STIPPLED;
+	  XLIKE_SET_GC_FILL (gcv, XLIKE_FILL_OPAQUE_STIPPLED);
 	  gcv.stipple = XIMAGE_INSTANCE_XLIKE_PIXMAP (bg_pmap);
 	  mask |= (XLIKE_GC_STIPPLE | XLIKE_GC_FILL);
 	}
       else
 	{
-	  gcv.XLIKE_FILL_MEMBER = XLIKE_FILL_TILED;
+	  XLIKE_SET_GC_FILL (gcv, XLIKE_FILL_TILED);
 	  gcv.tile = XIMAGE_INSTANCE_XLIKE_PIXMAP (bg_pmap);
 	  mask |= (XLIKE_GC_TILE | XLIKE_GC_FILL);
 	}
@@ -1264,10 +1018,9 @@
   /* #### This will probably cause asserts when passed a Lisp integer for a
      color.  See ca. line 759 this file.
      #### Maybe xft_convert_color should take an XColor, not a pixel. */
-#define XFT_FROB_LISP_COLOR(color, dim) \
-  xft_convert_color (dpy, cmap, visual, \
-		     COLOR_INSTANCE_X_COLOR (XCOLOR_INSTANCE (color)).pixel, \
-		     (dim))
+#define XFT_FROB_LISP_COLOR(color, dim)					\
+  xft_convert_color (dpy, cmap, visual,					\
+		     XCOLOR_INSTANCE_X_COLOR (color).pixel, (dim))
 #endif /* USE_XFT */
 
   if (width < 0)
@@ -1850,11 +1603,11 @@
 #endif /* THIS_IS_GTK */
 
 
-void
-XLIKE_OUTPUT_XLIKE_PIXMAP (struct frame *f, Lisp_Image_Instance *p, int x,
+static void
+XLIKE_output_xlike_pixmap (struct frame *f, Lisp_Image_Instance *p, int x,
 			   int y, int xoffset, int yoffset,
 			   int width, int height,
-			   XLIKE_PIXCOLOR fg, XLIKE_PIXCOLOR bg,
+			   XLIKE_COLOR fg, XLIKE_COLOR bg,
 			   XLIKE_GC override_gc)
 {
   struct device *d = XDEVICE (f->device);
@@ -1868,8 +1621,8 @@
     {
       memset (&gcv, ~0, sizeof (gcv));
       gcv.graphics_exposures = XLIKE_FALSE;
-      XLIKE_SET_PIXCOLOR_COPY (gcv.foreground, fg);
-      XLIKE_SET_PIXCOLOR_COPY (gcv.background, bg);
+      XLIKE_SET_GC_COLOR (gcv.foreground, fg);
+      XLIKE_SET_GC_COLOR (gcv.background, bg);
       pixmap_mask = XLIKE_GC_FOREGROUND | XLIKE_GC_BACKGROUND | XLIKE_GC_EXPOSURES;
 
       if (IMAGE_INSTANCE_XLIKE_MASK (p))
@@ -1916,6 +1669,7 @@
 		 yoffset, width,
 		 height, x, y);
 #else /* THIS_IS_GTK */
+      USED (dpy);
       gdk_draw_pixmap (GDK_DRAWABLE (x_win), gc,
 		       IMAGE_INSTANCE_GTK_PIXMAP (p),
 		       xoffset, yoffset, x, y, width, height);
@@ -1928,6 +1682,7 @@
 		  (p, IMAGE_INSTANCE_PIXMAP_SLICE (p)), x_win, gc,
 		  xoffset, yoffset, width, height, x, y, 1L);
 #else /* THIS_IS_GTK */
+      USED (dpy);
       our_draw_bitmap (GDK_DRAWABLE (x_win), gc,
 		       IMAGE_INSTANCE_GTK_PIXMAP (p),
 		       xoffset, yoffset, x, y, width, height);
@@ -1957,11 +1712,10 @@
     tmp_pixel = WINDOW_FACE_CACHEL_BACKGROUND (w, findex);
     tmp_bcolor = XCOLOR_INSTANCE_XLIKE_COLOR (tmp_pixel);
 
-    XLIKE_OUTPUT_XLIKE_PIXMAP (f, p, db->xpos, db->ypos,
+    XLIKE_output_xlike_pixmap (f, p, db->xpos, db->ypos,
 			       dga->xoffset, dga->yoffset,
 			       dga->width, dga->height,
-			       XLIKE_COLOR_TO_PIXCOLOR (tmp_fcolor),
-			       XLIKE_COLOR_TO_PIXCOLOR (tmp_bcolor), 0);
+			       tmp_fcolor, tmp_bcolor, 0);
   }
 
   /* Draw a cursor over top of the pixmap. */
@@ -2008,9 +1762,7 @@
   Lisp_Object tmp_pixel;
   XLIKE_GCVALUES gcv;
   XLIKE_GC background_gc;
-#ifdef THIS_IS_X
   enum edge_style style;
-#endif /* THIS_IS_X */
   unsigned long mask;
   int x, y1, y2, width, shadow_thickness, spacing, line_width;
   face_index div_face =
@@ -2029,9 +1781,7 @@
   tmp_pixel = WINDOW_FACE_CACHEL_BACKGROUND (w, div_face);
 
   /* First, get the GC's. */
-  XLIKE_SET_PIXCOLOR_COPY
-    (gcv.background,
-     XLIKE_COLOR_TO_PIXCOLOR (XCOLOR_INSTANCE_XLIKE_COLOR (tmp_pixel)));
+  XLIKE_SET_GC_COLOR (gcv.background, XCOLOR_INSTANCE_XLIKE_COLOR (tmp_pixel));
   gcv.foreground = gcv.background;
   gcv.graphics_exposures = XLIKE_FALSE;
   mask = XLIKE_GC_FOREGROUND | XLIKE_GC_BACKGROUND | XLIKE_GC_EXPOSURES;
@@ -2044,6 +1794,7 @@
   if (clear)
     XClearArea (dpy, x_win, x, y1, width, y2 - y1, False);
 #else /* THIS_IS_GTK */
+  USED (dpy);
   /* if (clear) */
   gdk_draw_rectangle (GDK_DRAWABLE (x_win), background_gc, TRUE,
 		      x, y1, width, y2 - y1);
@@ -2055,9 +1806,8 @@
   XLIKE_FILL_RECTANGLE (dpy, x_win, background_gc,
 			x + spacing + shadow_thickness, y1,
 			line_width, y2 - y1);
+#endif /* not THIS_IS_GTK */
 
-  /* This code not formerly present in GTK version, maybe the omittal
-     is intentional? */
   if (shadow_thickness < 0)
     {
       shadow_thickness = -shadow_thickness;
@@ -2067,18 +1817,11 @@
     {
       style = EDGE_BEVEL_OUT;
     }
-#endif /* not THIS_IS_GTK */
 
   /* Draw the shadows around the divider line */
-#ifdef THIS_IS_X
-  x_bevel_area (w, div_face, x + spacing, y1,
-		width - 2 * spacing, y2 - y1,
-		shadow_thickness, EDGE_ALL, style);
-#else /* THIS_IS_GTK */
-  gtk_output_shadows (f, x + spacing, y1, 
-		      width - 2 * spacing, y2 - y1,
-		      shadow_thickness);
-#endif /* THIS_IS_GTK */
+  XLIKE_bevel_area (w, div_face, x + spacing, y1,
+		    width - 2 * spacing, y2 - y1,
+		    shadow_thickness, EDGE_ALL, style);
 }
 
 /*****************************************************************************
@@ -2430,7 +2173,7 @@
   XLIKE_WINDOW win = GET_XLIKE_WINDOW (f);
   XLIKE_GC gc = NULL;
   XLIKE_GCVALUES gcv;
-  XLIKE_COLOR tmp_fcolor, tmp_bcolor;
+  XLIKE_PIXEL tmp_fcolor, tmp_bcolor;
   Lisp_Object tmp_pixel, frame;
   struct window *w = XWINDOW (FRAME_ROOT_WINDOW (f));
   int flash_height;
@@ -2438,14 +2181,11 @@
   frame = wrap_frame (f);
 
   tmp_pixel = FACE_FOREGROUND (Vdefault_face, frame);
-  XLIKE_SET_PIXCOLOR_COPY (tmp_fcolor,
-			   XCOLOR_INSTANCE_XLIKE_COLOR (tmp_pixel));
+  tmp_fcolor = XLIKE_COLOR_TO_PIXEL (XCOLOR_INSTANCE_XLIKE_COLOR (tmp_pixel));
   tmp_pixel = FACE_BACKGROUND (Vdefault_face, frame);
-  XLIKE_SET_PIXCOLOR_COPY (tmp_bcolor,
-			   XCOLOR_INSTANCE_XLIKE_COLOR (tmp_pixel));
+  tmp_bcolor = XLIKE_COLOR_TO_PIXEL (XCOLOR_INSTANCE_XLIKE_COLOR (tmp_pixel));
   memset (&gcv, ~0, sizeof (gcv)); /* initialize all slots to ~0 */
-  XLIKE_SET_PIXCOLOR_NUM (gcv.foreground,
-			  (tmp_fcolor.pixel ^ tmp_bcolor.pixel));
+  XLIKE_SET_GC_PIXEL (gcv.foreground, tmp_fcolor ^ tmp_bcolor);
   gcv.function = XLIKE_GX_XOR;
   gcv.graphics_exposures = XLIKE_FALSE;
   gc = gc_cache_lookup (DEVICE_XLIKE_GC_CACHE (XDEVICE (f->device)), &gcv,
--- a/src/symsinit.h	Mon Feb 01 01:05:28 2010 -0600
+++ b/src/symsinit.h	Mon Feb 01 02:15:28 2010 -0600
@@ -1,6 +1,6 @@
 /* Various initialization function prototypes.
    Copyright (C) 1995 Board of Trustees, University of Illinois.
-   Copyright (C) 2001, 2002 Ben Wing.
+   Copyright (C) 2001, 2002, 2010 Ben Wing.
 
 This file is part of XEmacs.
 
@@ -21,6 +21,9 @@
 
 /* Synched up with: Not in FSF. */
 
+/* There is no need to put ifdefs around the prototypes here.  Extra
+prototypes won't hurt anything. */
+
 #ifndef INCLUDED_symsinit_h_
 #define INCLUDED_symsinit_h_
 
@@ -31,10 +34,10 @@
 void init_data_very_early (void);
 void init_floatfns_very_early (void);
 void init_free_hook (void);
+void init_mswindows_dde_very_early (void);
 void init_process_times_very_early (void);
 void init_ralloc (void);
 void init_signals_very_early (void);
-void init_mswindows_dde_very_early (void);
 
 /* Early Lisp-engine initialization -- dump-time only for init, dump-time
    and post-pdump-load-time for reinit.  We call the reinit() routine
@@ -43,16 +46,16 @@
    to call the routine is tricky -- the init routine might need to do some
    stuff, call the reinit() routine, and do some more stuff.) */
 
+void reinit_alloc_early (void);
 void init_alloc_once_early (void);
-void reinit_alloc_early (void);
-void init_symbols_once_early (void);
-void reinit_symbols_early (void);
+void reinit_eistring_early (void);
+void init_eistring_once_early (void);
+void init_elhash_once_early (void);
 void init_errors_once_early (void);
 void reinit_opaque_early (void);
 void init_opaque_once_early (void);
-void init_elhash_once_early (void);
-void init_eistring_once_early (void);
-void reinit_eistring_early (void);
+void reinit_symbols_early (void);
+void init_symbols_once_early (void);
 
 /* Reset the Lisp engine.  Called both at dump-time, run-time and
    run-temacs-time; at dump-time, it's called early, before any of the
@@ -73,6 +76,7 @@
 void syms_of_buffer (void);
 void syms_of_bytecode (void);
 void syms_of_callint (void);
+EXTERN_C void syms_of_canna_api (void);
 void syms_of_casefiddle (void);
 void syms_of_casetab (void);
 void syms_of_chartab (void);
@@ -85,10 +89,12 @@
 void syms_of_database (void);
 void syms_of_debug (void);
 void syms_of_device (void);
+void syms_of_device_gtk (void);
 void syms_of_device_mswindows (void);
 void syms_of_device_tty (void);
 void syms_of_device_x (void);
 void syms_of_dialog (void);
+void syms_of_dialog_gtk (void);
 void syms_of_dialog_mswindows (void);
 void syms_of_dialog_x (void);
 void syms_of_dired (void);
@@ -101,6 +107,7 @@
 void syms_of_emacs (void);
 void syms_of_eval (void);
 void syms_of_event_Xt (void);
+void syms_of_event_gtk (void);
 void syms_of_event_mswindows (void);
 void syms_of_event_stream (void);
 void syms_of_events (void);
@@ -111,10 +118,10 @@
 void syms_of_filelock (void);
 void syms_of_floatfns (void);
 void syms_of_fns (void);
-#ifdef USE_C_FONT_LOCK
 void syms_of_font_lock (void);
-#endif /* USE_C_FONT_LOCK */
+void syms_of_font_mgr (void);
 void syms_of_frame (void);
+void syms_of_frame_gtk (void);
 void syms_of_frame_mswindows (void);
 void syms_of_frame_tty (void);
 void syms_of_frame_x (void);
@@ -122,12 +129,14 @@
 void syms_of_general (void);
 void syms_of_glyphs (void);
 void syms_of_glyphs_eimage (void);
+void syms_of_glyphs_gtk (void);
 void syms_of_glyphs_mswindows (void);
 void syms_of_glyphs_shared (void);
 void syms_of_glyphs_widget (void);
 void syms_of_glyphs_x (void);
 void syms_of_gpmevent (void);
 void syms_of_gui (void);
+void syms_of_gui_gtk (void);
 void syms_of_gui_mswindows (void);
 void syms_of_gui_x (void);
 void syms_of_gutter (void);
@@ -140,16 +149,14 @@
 void syms_of_lread (void);
 void syms_of_macros (void);
 void syms_of_marker (void);
-#ifdef NEW_GC
 void syms_of_mc_alloc (void);
-#endif /* NEW_GC */
 void syms_of_md5 (void);
 void syms_of_menubar (void);
+void syms_of_menubar_gtk (void);
 void syms_of_menubar_mswindows (void);
 void syms_of_menubar_x (void);
 void syms_of_minibuf (void);
 void syms_of_module (void);
-EXTERN_C void syms_of_canna_api (void);
 void syms_of_mule_ccl (void);
 void syms_of_mule_charset (void);
 void syms_of_mule_coding (void);
@@ -157,10 +164,10 @@
 void syms_of_nt (void);
 void syms_of_number (void);
 void syms_of_objects (void);
+void syms_of_objects_gtk (void);
 void syms_of_objects_mswindows (void);
 void syms_of_objects_tty (void);
 void syms_of_objects_x (void);
-void syms_of_font_mgr (void);
 EXTERN_C void syms_of_postgresql (void);
 void syms_of_print (void);
 void syms_of_process (void);
@@ -173,6 +180,7 @@
 void syms_of_scrollbar_mswindows(void);
 void syms_of_search (void);
 void syms_of_select (void);
+void syms_of_select_gtk (void);
 void syms_of_select_mswindows (void);
 void syms_of_select_x (void);
 void syms_of_signal (void);
@@ -185,9 +193,12 @@
 void syms_of_text (void);
 void syms_of_toolbar (void);
 void syms_of_tooltalk (void);
+void syms_of_ui_byhand (void);
+void syms_of_ui_gtk (void);
 void syms_of_undo (void);
 void syms_of_unicode (void);
 void syms_of_widget (void);
+void syms_of_widget_accessors (void);
 void syms_of_win32 (void);
 void syms_of_window (void);
 
@@ -195,49 +206,61 @@
    post-pdump-load-time only for reinit_). */
 
 void console_type_create (void);
-void console_type_create_stream (void);
-void reinit_console_type_create_stream (void);
-void console_type_create_tty (void);
-void reinit_console_type_create_tty (void);
+void console_type_create_device_gtk (void);
+void console_type_create_device_mswindows (void);
 void console_type_create_device_tty (void);
-void console_type_create_frame_tty (void);
-void console_type_create_objects_tty (void);
-void console_type_create_redisplay_tty (void);
-void console_type_create_x (void);
-void reinit_console_type_create_x (void);
 void console_type_create_device_x (void);
 void reinit_console_type_create_device_x (void);
+void console_type_create_dialog_gtk (void);
+void console_type_create_dialog_mswindows (void);
+void console_type_create_dialog_x (void);
+void console_type_create_frame_gtk (void);
+void console_type_create_frame_mswindows (void);
+void console_type_create_frame_tty (void);
 void console_type_create_frame_x (void);
+void console_type_create_glyphs_gtk (void);
+void console_type_create_glyphs_mswindows (void);
 void console_type_create_glyphs_x (void);
+void console_type_create_gtk (void);
+void reinit_console_type_create_gtk (void);
+void console_type_create_menubar_gtk (void);
+void console_type_create_menubar_mswindows (void);
 void console_type_create_menubar_x (void);
-void console_type_create_objects_x (void);
-void console_type_create_redisplay_x (void);
-void console_type_create_scrollbar_x (void);
-void console_type_create_select_x (void);
-void console_type_create_toolbar_x (void);
-void console_type_create_dialog_x (void);
 void console_type_create_mswindows (void);
 void reinit_console_type_create_mswindows (void);
-void console_type_create_device_mswindows (void);
-void console_type_create_frame_mswindows (void);
-void console_type_create_menubar_mswindows (void);
+void console_type_create_objects_gtk (void);
 void console_type_create_objects_mswindows (void);
+void console_type_create_objects_tty (void);
+void console_type_create_objects_x (void);
+void console_type_create_redisplay_gtk (void);
 void console_type_create_redisplay_mswindows (void);
+void console_type_create_redisplay_tty (void);
+void console_type_create_redisplay_x (void);
+void console_type_create_scrollbar_gtk (void);
 void console_type_create_scrollbar_mswindows (void);
+void console_type_create_scrollbar_x (void);
+void console_type_create_select_gtk (void);
+void console_type_create_select_mswindows (void);
+void console_type_create_select_x (void);
+void console_type_create_stream (void);
+void reinit_console_type_create_stream (void);
+void console_type_create_toolbar_gtk (void);
 void console_type_create_toolbar_mswindows (void);
-void console_type_create_glyphs_mswindows (void);
-void console_type_create_dialog_mswindows (void);
-void console_type_create_select_mswindows (void);
+void console_type_create_toolbar_x (void);
+void console_type_create_tty (void);
+void reinit_console_type_create_tty (void);
+void console_type_create_x (void);
+void reinit_console_type_create_x (void);
 
 /* Initialize the specifier types (dump-time only for specifier_type_(),
    post-pdump-load-time only for reinit_). */
 
 void specifier_type_create (void);
 void reinit_specifier_type_create (void);
+void specifier_type_create_gutter (void);
+void reinit_specifier_type_create_gutter (void);
 void specifier_type_create_image (void);
 void reinit_specifier_type_create_image (void);
-void specifier_type_create_gutter (void);
-void reinit_specifier_type_create_gutter (void);
 void specifier_type_create_objects (void);
 void reinit_specifier_type_create_objects (void);
 void specifier_type_create_toolbar (void);
@@ -248,36 +271,37 @@
 
 void coding_system_type_create (void);
 void reinit_coding_system_type_create (void);
-void coding_system_type_create_unicode (void);
-void reinit_coding_system_type_create_unicode (void);
 void coding_system_type_create_intl_win32 (void);
 void reinit_coding_system_type_create_intl_win32 (void);
 void coding_system_type_create_mule_coding (void);
 void reinit_coding_system_type_create_mule_coding (void);
+void coding_system_type_create_unicode (void);
+void reinit_coding_system_type_create_unicode (void);
 
 /* Initialize the structure types (dump-time only). */
 
 void structure_type_create (void);
 void structure_type_create_chartab (void);
 void structure_type_create_faces (void);
+void structure_type_create_hash_table (void);
 void structure_type_create_rangetab (void);
-void structure_type_create_hash_table (void);
 
 /* Initialize the image instantiator types (dump-time only). */
 
 void image_instantiator_format_create (void);
 void image_instantiator_format_create_glyphs_eimage (void);
+void image_instantiator_format_create_glyphs_gtk (void);
+void image_instantiator_format_create_glyphs_mswindows (void);
+void image_instantiator_format_create_glyphs_tty (void);
 void image_instantiator_format_create_glyphs_widget (void);
 void image_instantiator_format_create_glyphs_x (void);
-void image_instantiator_format_create_glyphs_mswindows (void);
-void image_instantiator_format_create_glyphs_tty (void);
 
 /* Initialize the lstream types (dump-time only). */
 
 void lstream_type_create (void);
 void lstream_type_create_file_coding (void);
+void lstream_type_create_mswindows_selectable (void);
 void lstream_type_create_print (void);
-void lstream_type_create_mswindows_selectable (void);
 
 /* Initialize process types */
 
@@ -288,6 +312,18 @@
 
 void init_provide_once (void);
 
+/* Lisp interactive function to sort groups of initialization functions by
+   name, ignoring any reinit_ or init_ at the beginning.  Put the cursor
+   after the last right paren, type C-x C-e, then select some text and
+   M-x sort-symsinit.
+
+   (defun sort-symsinit (start end)
+     (interactive "r")
+     (sort-regexp-fields nil "^.*?void \\(?:re\\)?\\(init_\\)?\\([A-Za-z0-9_]+\\).*$" "\\2"
+			 start end))
+
+*/
+
 /* Initialize most variables (dump-time for vars_, dump-time and
    post-pdump-load-time for reinit_vars). */
 
@@ -298,13 +334,15 @@
 void reinit_vars_of_buffer (void);
 void vars_of_bytecode (void);
 void vars_of_callint (void);
+EXTERN_C void vars_of_canna_api (void);
 void vars_of_chartab (void);
 void vars_of_cmdloop (void);
 void vars_of_cmds (void);
 void vars_of_console (void);
 void reinit_vars_of_console (void);
+void vars_of_console_gtk (void);
+void vars_of_console_mswindows (void);
 void vars_of_console_stream (void);
-void vars_of_console_mswindows (void);
 void vars_of_console_tty (void);
 void vars_of_console_x (void);
 void vars_of_data (void);
@@ -313,28 +351,33 @@
 void reinit_vars_of_debug (void);
 void vars_of_device (void);
 void reinit_vars_of_device (void);
+void vars_of_device_gtk (void);
 void vars_of_device_mswindows (void);
 void vars_of_device_x (void);
 void reinit_vars_of_device_x (void);
 void vars_of_dialog (void);
+void vars_of_dialog_gtk (void);
+void vars_of_dialog_mswindows (void);
 void vars_of_dialog_x (void);
-void vars_of_dialog_mswindows (void);
 void vars_of_dired (void);
 void vars_of_dired_mswindows (void);
 void vars_of_doc (void);
 void vars_of_dragdrop (void);
 void vars_of_editfns (void);
+EXTERN_C void vars_of_eldap (void);
 void vars_of_emacs (void);
 void vars_of_eval (void);
 void reinit_vars_of_eval (void);
+void vars_of_event_Xt (void);
+void reinit_vars_of_event_Xt (void);
+void vars_of_event_gtk (void);
+void reinit_vars_of_event_gtk (void);
+void vars_of_event_mswindows (void);
+void reinit_vars_of_event_mswindows (void);
 void vars_of_event_stream (void);
 void reinit_vars_of_event_stream (void);
 void vars_of_event_tty (void);
 void reinit_vars_of_event_tty (void);
-void vars_of_event_mswindows (void);
-void reinit_vars_of_event_mswindows (void);
-void vars_of_event_Xt (void);
-void reinit_vars_of_event_Xt (void);
 void vars_of_events (void);
 void reinit_vars_of_events (void);
 void vars_of_extents (void);
@@ -343,33 +386,39 @@
 void vars_of_file_coding (void);
 void reinit_vars_of_file_coding (void);
 void vars_of_fileio (void);
+#ifdef USE_C_FONT_LOCK
 void reinit_vars_of_fileio (void);
 void vars_of_filelock (void);
+#endif /* USE_C_FONT_LOCK */
 void vars_of_floatfns (void);
 void vars_of_fns (void);
-#ifdef USE_C_FONT_LOCK
 void vars_of_font_lock (void);
 void reinit_vars_of_font_lock (void);
-#endif /* USE_C_FONT_LOCK */
-void vars_of_frame_tty (void);
+void vars_of_font_mgr (void);
+void reinit_vars_of_font_mgr (void);
+void vars_of_frame (void);
+void vars_of_frame_gtk (void);
 void vars_of_frame_mswindows (void);
 void reinit_vars_of_frame_mswindows (void);
+void vars_of_frame_tty (void);
 void vars_of_frame_x (void);
-void vars_of_frame (void);
-void vars_of_glyphs_x (void);
+void vars_of_glyphs (void);
+void reinit_vars_of_glyphs (void);
 void vars_of_glyphs_eimage (void);
+void vars_of_glyphs_gtk (void);
+void vars_of_glyphs_mswindows (void);
 void vars_of_glyphs_widget (void);
 void reinit_vars_of_glyphs_widget (void);
-void vars_of_glyphs_mswindows (void);
-void vars_of_glyphs (void);
-void reinit_vars_of_glyphs (void);
+void vars_of_glyphs_x (void);
+void vars_of_gpmevent (void);
+void vars_of_gui (void);
+void vars_of_gui_gtk (void);
 void vars_of_gui_x (void);
 void reinit_vars_of_gui_x (void);
-void vars_of_gui (void);
 void vars_of_gutter (void);
+void vars_of_indent (void);
 void vars_of_input_method_motif (void);
 void vars_of_input_method_xlib (void);
-void vars_of_indent (void);
 void vars_of_insdel (void);
 void reinit_vars_of_insdel (void);
 void vars_of_intl (void);
@@ -381,15 +430,16 @@
 void reinit_vars_of_lstream (void);
 void vars_of_macros (void);
 void vars_of_md5 (void);
+void vars_of_menubar (void);
+void vars_of_menubar_gtk (void);
+void reinit_vars_of_menubar_gtk (void);
+void vars_of_menubar_mswindows (void);
 void vars_of_menubar_x (void);
 void reinit_vars_of_menubar_x (void);
-void vars_of_menubar (void);
-void vars_of_menubar_mswindows (void);
 void vars_of_minibuf (void);
 void reinit_vars_of_minibuf (void);
 void vars_of_module (void);
 void reinit_vars_of_module (void);
-EXTERN_C void vars_of_canna_api (void);
 void vars_of_mule_ccl(void);
 void vars_of_mule_charset (void);
 void vars_of_mule_coding (void);
@@ -399,14 +449,14 @@
 void vars_of_nt (void);
 void vars_of_number (void);
 void reinit_vars_of_number (void);
+void reinit_vars_of_object_mswindows (void);
 void vars_of_objects (void);
-void vars_of_font_mgr (void);
-void reinit_vars_of_font_mgr (void);
 void reinit_vars_of_objects (void);
-void vars_of_objects_tty (void);
+void vars_of_objects_gtk (void);
 void vars_of_objects_mswindows (void);
-void reinit_vars_of_object_mswindows (void);
+void vars_of_objects_tty (void);
 void vars_of_objects_x (void);
+EXTERN_C void vars_of_postgresql (void);
 void vars_of_print (void);
 void reinit_vars_of_print (void);
 void vars_of_process (void);
@@ -417,14 +467,18 @@
 void vars_of_realpath (void);
 void vars_of_redisplay (void);
 void vars_of_regex (void);
+void vars_of_scrollbar (void);
+void vars_of_scrollbar_gtk (void);
+void vars_of_scrollbar_mswindows (void);
 void vars_of_scrollbar_x (void);
 void reinit_vars_of_scrollbar_x (void);
-void vars_of_scrollbar (void);
-void vars_of_scrollbar_mswindows (void);
 void vars_of_search (void);
 void reinit_vars_of_search (void);
 void vars_of_select (void);
+void vars_of_select_gtk (void);
 void vars_of_select_mswindows (void);
+void vars_of_select_x (void);
+void reinit_vars_of_select_x (void);
 void vars_of_sound (void);
 void vars_of_specifier (void);
 void vars_of_sunpro (void);
@@ -435,17 +489,13 @@
 void reinit_vars_of_text (void);
 void vars_of_toolbar (void);
 void vars_of_tooltalk (void);
+void vars_of_ui_gtk (void);
 void vars_of_undo (void);
 void reinit_vars_of_undo (void);
 void vars_of_unicode (void);
+void vars_of_win32 (void);
 void vars_of_window (void);
 void reinit_vars_of_window (void);
-void vars_of_win32 (void);
-void vars_of_select_x (void);
-void reinit_vars_of_select_x (void);
-EXTERN_C void vars_of_eldap (void);
-EXTERN_C void vars_of_postgresql (void);
-void vars_of_gpmevent (void);
 
 /* Initialize specifier variables (dump-time only). */
 
@@ -466,28 +516,29 @@
 
 void complex_vars_of_alloc (void);
 void complex_vars_of_buffer (void);
+void reinit_complex_vars_of_buffer_runtime_only (void);
 void complex_vars_of_casetab (void);
 void complex_vars_of_chartab (void);
 void complex_vars_of_console (void);
+void reinit_complex_vars_of_console_runtime_only (void);
 void complex_vars_of_emacs (void);
 void complex_vars_of_faces (void);
 void complex_vars_of_file_coding (void);
 void complex_vars_of_font_mgr (void);
 void complex_vars_of_frame (void);
 void complex_vars_of_glyphs (void);
+void complex_vars_of_glyphs_gtk (void);
 void complex_vars_of_glyphs_mswindows (void);
 void complex_vars_of_glyphs_x (void);
 void complex_vars_of_intl_win32 (void);
 void complex_vars_of_keymap (void);
 void complex_vars_of_menubar (void);
 void complex_vars_of_minibuf (void);
+void reinit_complex_vars_of_minibuf (void);
 void complex_vars_of_mule_charset (void);
 void complex_vars_of_scrollbar (void);
 void complex_vars_of_syntax (void);
 void complex_vars_of_unicode (void);
-void reinit_complex_vars_of_buffer_runtime_only (void);
-void reinit_complex_vars_of_console_runtime_only (void);
-void reinit_complex_vars_of_minibuf (void);
 
 /* Late initialization -- stuff pertaining only to interactive usage,
    I/O, or Lisp reading. (Dump-time and run-time, but the code itself
@@ -499,6 +550,7 @@
 void init_device_tty (void);
 void init_editfns (void);
 void init_event_Xt_late (void);
+void init_event_gtk_late (void);
 void init_event_mswindows_late (void);
 void init_event_stream (void);
 void init_event_tty_late (void);
@@ -518,47 +570,6 @@
 void init_win32 (void);
 void init_xemacs_process (void);
 
-void syms_of_device_gtk (void);
-void syms_of_dialog_gtk (void);
-void syms_of_event_gtk (void);
-void syms_of_frame_gtk (void);
-void syms_of_glyphs_gtk (void);
-void syms_of_gui_gtk (void);
-void syms_of_menubar_gtk (void);
-void syms_of_objects_gtk (void);
-void syms_of_select_gtk (void);
-void syms_of_ui_gtk (void);
-void syms_of_widget_accessors (void);
-void syms_of_ui_byhand (void);
-void console_type_create_gtk (void);
-void reinit_console_type_create_gtk (void);
-void console_type_create_device_gtk (void);
-void console_type_create_frame_gtk (void);
-void console_type_create_glyphs_gtk (void);
-void console_type_create_menubar_gtk (void);
-void console_type_create_objects_gtk (void);
-void console_type_create_redisplay_gtk (void);
-void console_type_create_scrollbar_gtk (void);
-void console_type_create_toolbar_gtk (void);
-void console_type_create_dialog_gtk (void);
-void image_instantiator_format_create_glyphs_gtk (void);
-void vars_of_device_gtk (void);
-void vars_of_dialog_gtk (void);
-void vars_of_event_gtk (void);
-void reinit_vars_of_event_gtk (void);
-void vars_of_frame_gtk (void);
-void vars_of_glyphs_gtk (void);
-void vars_of_gui_gtk (void);
-void vars_of_menubar_gtk (void);
-void reinit_vars_of_menubar_gtk (void);
-void vars_of_objects_gtk (void);
-void vars_of_scrollbar_gtk (void);
-void vars_of_select_gtk (void);
-void vars_of_ui_gtk (void);
-void complex_vars_of_glyphs_gtk (void);
-void init_event_gtk_late (void);
-void console_type_create_select_gtk (void);
-
 /* Enhanced number initialization: must be done only at runtime due to complex
    interactions with the supporting libraries. */
 void init_number (void);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/sysgdkx.h	Mon Feb 01 02:15:28 2010 -0600
@@ -0,0 +1,36 @@
+/* Basic wrapper file around gdk/gdkx.h.
+
+   Copyright (C) 2010 Ben Wing.
+
+This file is part of XEmacs.
+
+XEmacs is free software; you can redistribute it and/or modify it
+under the terms of the GNU General Public License as published by the
+Free Software Foundation; either version 2, or (at your option) any
+later version.
+
+XEmacs is distributed in the hope that it will be useful, but WITHOUT
+ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License
+along with XEmacs; see the file COPYING.  If not, write to
+the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA.  */
+
+/* Synched up with: Not in FSF. */
+
+/* Authorship:
+
+   Ben Wing, 1-28-10 extracted out of console-gtk.h and various other
+   files.  We have a separate file rather than just putting it together
+   with sysgtk.h because Bill wanted to keep the X-specific stuff isolated.
+*/
+
+#ifndef INCLUDED_sysgdkx_h_
+#define INCLUDED_sysgdkx_h_
+
+#include <gdk/gdkx.h>
+
+#endif /* INCLUDED_sysgdkx_h_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/sysgtk.h	Mon Feb 01 02:15:28 2010 -0600
@@ -0,0 +1,38 @@
+/* Basic include file for GTK/GDK includes.
+
+   Copyright (C) 2010 Ben Wing.
+
+This file is part of XEmacs.
+
+XEmacs is free software; you can redistribute it and/or modify it
+under the terms of the GNU General Public License as published by the
+Free Software Foundation; either version 2, or (at your option) any
+later version.
+
+XEmacs is distributed in the hope that it will be useful, but WITHOUT
+ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License
+along with XEmacs; see the file COPYING.  If not, write to
+the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA.  */
+
+/* Synched up with: Not in FSF. */
+
+/* Authorship:
+
+   Ben Wing, 1-28-10 extracted out of console-gtk.h and various other
+   files.
+*/
+
+#ifndef INCLUDED_sysgtk_h_
+#define INCLUDED_sysgtk_h_
+
+#include <gtk/gtk.h>
+#include <gtk/gtkfixed.h>
+#include <gdk/gdk.h>
+#include <gdk/gdkkeysyms.h>
+
+#endif /* INCLUDED_sysgtk_h_ */
--- a/src/ui-gtk.c	Mon Feb 01 01:05:28 2010 -0600
+++ b/src/ui-gtk.c	Mon Feb 01 02:15:28 2010 -0600
@@ -21,24 +21,23 @@
 ** along with XEmacs; see the file COPYING.  If not, write to
 ** the Free Software Foundation, Inc., 51 Franklin Street - Fifth Floor,
 ** Boston, MA 02111-1301, USA.  */
-*/
 
 #include <config.h>
 #include "lisp.h"
 
 #include "buffer.h"
-#include "console-gtk-impl.h"
 #include "device.h"
 #include "elhash.h"
-#include "event-gtk.h"
 #include "events.h"
 #include "faces.h"
+#include "hash.h"
+#include "sysdll.h"
+#include "window.h"
+
+#include "console-gtk-impl.h"
 #include "glyphs-gtk.h"
-#include "hash.h"
 #include "objects-gtk.h"
-#include "sysdll.h"
 #include "ui-gtk.h"
-#include "window.h"
 
 /* XEmacs specific GTK types */
 #include "gtk-glue.c"
--- a/src/ui-gtk.h	Mon Feb 01 01:05:28 2010 -0600
+++ b/src/ui-gtk.h	Mon Feb 01 02:15:28 2010 -0600
@@ -21,15 +21,14 @@
 ** along with XEmacs; see the file COPYING.  If not, write to
 ** the Free Software Foundation, Inc., 51 Franklin Street - Fifth Floor,
 ** Boston, MA 02111-1301, USA.  */
-*/
 
 #ifndef __UI_GTK_H__
 #define __UI_GTK_H__
 
 /* Encapsulate a foreign function call */
-#include <gtk/gtk.h>
+
+#include "sysgtk.h"
 #include "sysdll.h"
-#include "lrecord.h"
 
 typedef void (*ffi_actual_function) (void);
 typedef void (*ffi_marshalling_function) (ffi_actual_function, GtkArg *);
--- a/src/xgccache.c	Mon Feb 01 01:05:28 2010 -0600
+++ b/src/xgccache.c	Mon Feb 01 02:15:28 2010 -0600
@@ -52,20 +52,15 @@
  */
 
 #include <config.h>
-#include <X11/Xlib.h>
+#include "lisp.h"
+#include "hash.h"
+
 #include "xgccache.h"
 
-
 #define GC_CACHE_SIZE 100
 
 #define GCCACHE_HASH
 
-
-#ifdef GCCACHE_HASH
-#include "lisp.h"
-#include "hash.h"
-#endif
-
 struct gcv_and_mask {
   XGCValues gcv;
   unsigned long mask;
--- a/src/xgccache.h	Mon Feb 01 01:05:28 2010 -0600
+++ b/src/xgccache.h	Mon Feb 01 02:15:28 2010 -0600
@@ -26,6 +26,8 @@
 #ifndef INCLUDED_xgccache_h_
 #define INCLUDED_xgccache_h_
 
+#include <X11/Xlib.h>
+
 struct gc_cache;
 struct gc_cache *make_gc_cache (Display *, Window);
 void free_gc_cache (struct gc_cache *cache);