]> code.delx.au - gnu-emacs/blobdiff - src/msdos.h
(redisplay_window): Fix last change. Don't recenter if
[gnu-emacs] / src / msdos.h
index c8ff29c2dd943235040e0505d28d978f7b39c869..8bfbcf2d10c55cd1402bf4c4acce45673d95cb77 100644 (file)
@@ -1,5 +1,6 @@
 /* MS-DOS specific C utilities, interface.
-   Copyright (C) 1993 Free Software Foundation, Inc.
+   Copyright (C) 1993, 2001, 2002, 2003, 2004,
+                 2005, 2006 Free Software Foundation, Inc.
 
 This file is part of GNU Emacs.
 
@@ -15,11 +16,11 @@ GNU General Public License for more details.
 
 You should have received a copy of the GNU General Public License
 along with GNU Emacs; see the file COPYING.  If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA.  */
+the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+Boston, MA 02110-1301, USA.  */
 
-#ifndef _MSDOS_H_
-#define _MSDOS_H_
+#ifndef EMACS_MSDOS_H
+#define EMACS_MSDOS_H
 
 #include <dpmi.h>
 
@@ -55,58 +56,62 @@ typedef int XRectangle;
 #define PIX_TYPE int
 #define XDISPLAY
 
+/* A stripped version of struct x_display_info in xterm.h, which see.  */
+struct display_info
+{
+  /* These variables describe the range of text currently shown in its
+     mouse-face, together with the window they apply to.  As long as
+     the mouse stays within this range, we need not redraw anything on
+     its account.  Rows and columns are glyph matrix positions in
+     MOUSE_FACE_WINDOW.  */
+  int mouse_face_beg_row, mouse_face_beg_col;
+  int mouse_face_end_row, mouse_face_end_col;
+  int mouse_face_past_end;
+  Lisp_Object mouse_face_window;
+  int mouse_face_face_id;
+
+  /* 1 if a mouse motion event came and we didn't handle it right away because
+     gc was in progress.  */
+  int mouse_face_deferred_gc;
+
+  /* FRAME and X, Y position of mouse when last checked for
+     highlighting.  X and Y can be negative or out of range for the frame.  */
+  struct frame *mouse_face_mouse_frame;
+  int mouse_face_mouse_x, mouse_face_mouse_y;
+
+  /* Nonzero means defer mouse-motion highlighting.  */
+  int mouse_face_defer;
+
+  /* Nonzero means that the mouse highlight should not be shown.  */
+  int mouse_face_hidden;
+};
+
+typedef struct display_info Display_Info;
+
 /* This is a cut-down version of the one in xterm.h, which see.  */
 struct x_output
 {
-  int left_pos;
-  int top_pos;
-  int line_height;
-  PIX_TYPE background_pixel;
-  PIX_TYPE foreground_pixel;
-  XFontStruct *font;
-  Window busy_window;
-  unsigned busy_p : 1;
-  struct face **param_faces;
-  int n_param_faces;
-  struct face **computed_faces;
-  int n_computed_faces;
-  int size_computed_faces;
+  PIX_TYPE background_pixel;   /* used in xfaces.c and lots of other places */
+  PIX_TYPE foreground_pixel;   /* ditto */
+  XFontStruct *font;           /* used in x-popup-menu (xmenu.c) */
+  Window hourglass_window;     /* currently unused (but maybe some day) */
+  unsigned hourglass_p : 1;    /* ditto */
+  struct display_info display_info; /* used for drawing mouse highlight */
 };
 
 extern struct x_output the_only_x_display;
-extern Display *x_current_display;
-
-#define FRAME_PARAM_FACES(f) (the_only_x_display.param_faces)
-#define FRAME_N_PARAM_FACES(f) (the_only_x_display.n_param_faces)
-#define FRAME_DEFAULT_PARAM_FACE(f) (FRAME_PARAM_FACES (f)[0])
-#define FRAME_MODE_LINE_PARAM_FACE(f) (FRAME_PARAM_FACES (f)[1])
-#define FRAME_COMPUTED_FACES(f) (the_only_x_display.computed_faces)
-#define FRAME_N_COMPUTED_FACES(f) (the_only_x_display.n_computed_faces)
-#define FRAME_SIZE_COMPUTED_FACES(f) (the_only_x_display.size_computed_faces)
-#define FRAME_DEFAULT_FACE(f) (the_only_x_display.computed_faces[0])
-#define FRAME_MODE_LINE_FACE(f) (the_only_x_display.computed_faces[1])
+
 #define FRAME_X_DISPLAY(f) ((Display *) 0)
 #define FRAME_FOREGROUND_PIXEL(f) (the_only_x_display.foreground_pixel)
 #define FRAME_BACKGROUND_PIXEL(f) (the_only_x_display.background_pixel)
 #define FRAME_FONT(f) (the_only_x_display.font)
+#define FRAME_X_DISPLAY_INFO(f) (&the_only_x_display.display_info)
 
 /* Prototypes.  */
 
 /* Forward declarations for prototypes.  */
 struct frame;
 struct window;
-#if 0
-extern int face_name_id_number P_ ((struct frame *, Lisp_Object)); /* !!! */
-extern int compute_glyph_face P_ ((struct frame *, int, int)); /* !!! */
-#endif
-
-/* From xterm.c; emulated on msdos.c */
-
-extern void pixel_to_glyph_coords P_ ((struct frame *f, int pix_x, int pix_y,
-                                      int *x, int *y, XRectangle *bounds,
-                                      int noclip));
-extern void glyph_to_pixel_coords P_ ((struct frame *f, int x, int y,
-                                      int *pix_x, int *pix_y));
 
 /* Defined in xfns.c; emulated on msdos.c */
 
@@ -116,12 +121,11 @@ extern int x_pixel_width P_ ((struct frame *));
 extern int x_pixel_height P_ ((struct frame *));
 
 #define XFreeGC (void)
-#define unload_color(p1,p2)
 #define x_destroy_bitmap(p1,p2)
 #define load_pixmap(p1,p2,p3,p4) (0)
 #define XGetGeometry(p1,p2,p3,p4,p5,p6,p7,p8,p9)
-#define DisplayWidth(p1,p2) (selected_frame->width)
-#define DisplayHeight(p1,p2) (selected_frame->height)
+#define DisplayWidth(p1,p2) (SELECTED_FRAME()->text_cols)
+#define DisplayHeight(p1,p2) (SELECTED_FRAME()->text_lines)
 #define XMenuSetAEQ (void)
 #define XMenuSetFreeze (void)
 #define XMenuRecompute (void)
@@ -141,16 +145,21 @@ typedef struct x_menu_struct
   int allocated;
   int panecount;
   int width;
+  char **help_text;
 } XMenu;
 
 XMenu *XMenuCreate (Display *, Window, char *);
 int XMenuAddPane (Display *, XMenu *, char *, int);
-int XMenuAddSelection (Display *, XMenu *, int, int, char *, int);
+int XMenuAddSelection (Display *, XMenu *, int, int, char *, int, char *);
 void XMenuLocate (Display *, XMenu *, int, int, int, int,
                  int *, int *, int *, int *);
-int XMenuActivate (Display *, XMenu *, int *, int *, int, int, unsigned, char **);
+int XMenuActivate (Display *, XMenu *, int *, int *, int, int, unsigned,
+                  char **, void (*callback)(char *, int, int));
 void XMenuDestroy (Display *, XMenu *);
 
 #endif /* not HAVE_X_WINDOWS */
 
-#endif /* not _MSDOS_H_ */
+#endif /* not EMACS_MSDOS_H */
+
+/* arch-tag: ad21eeed-8fdb-4357-8007-36368a6bdbf3
+   (do not change this comment) */