Upgraded to mh-e version 6.1.1.
[bpt/emacs.git] / src / frame.h
index ccbb29c..d28afde 100644 (file)
@@ -18,10 +18,12 @@ 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.  */
 
-/* Don't multiply include: dispextern.h includes macterm.h which includes frame.h 
-   some emacs source includes both dispextern.h and frame.h */
-#ifndef _XFRAME_H_
-#define _XFRAME_H_
+/* Don't multiply include: dispextern.h includes macterm.h which
+   includes frame.h some emacs source includes both dispextern.h and
+   frame.h */
+
+#ifndef EMACS_FRAME_H
+#define EMACS_FRAME_H
 
 \f
 /* Miscellanea.  */
@@ -55,7 +57,17 @@ enum vertical_scroll_bar_type
   vertical_scroll_bar_right
 };
 
-#if !defined(MSDOS) && !defined(WINDOWSNT) && !defined(macintosh)
+enum text_cursor_kinds
+{
+  DEFAULT_CURSOR = -2,
+  NO_CURSOR = -1,
+  FILLED_BOX_CURSOR,
+  HOLLOW_BOX_CURSOR,
+  BAR_CURSOR,
+  HBAR_CURSOR
+};
+
+#if !defined(MSDOS) && !defined(WINDOWSNT) && !defined(MAC_OS)
 
 #if !defined(HAVE_X_WINDOWS)
 
@@ -80,7 +92,7 @@ struct x_output
 /* A structure describing a termcap frame display.  */
 extern struct x_output tty_display;
 
-#endif /* ! MSDOS && ! WINDOWSNT && ! macintosh */
+#endif /* ! MSDOS && ! WINDOWSNT && ! MAC_OS */
 
 struct frame
 {
@@ -258,7 +270,7 @@ struct frame
   /* Number of lines of menu bar.  */
   int menu_bar_lines;
 
-#if defined (USE_X_TOOLKIT) || defined (HAVE_NTGUI) || defined (macintosh)
+#if defined (USE_X_TOOLKIT) || defined (HAVE_NTGUI) || defined (MAC_OS)
   /* Nonzero means using a menu bar that comes from the X toolkit.  */
   int external_menu_bar;
 #endif
@@ -320,6 +332,20 @@ struct frame
      actually display them on this frame.  */
   enum vertical_scroll_bar_type vertical_scroll_bar_type;
 
+  /* What kind of text cursor should we draw in the future?
+     This should always be filled_box_cursor or bar_cursor.  */
+  enum text_cursor_kinds desired_cursor;
+
+  /* Width of bar cursor (if we are using that).  */
+  int cursor_width;
+
+  /* What kind of text cursor should we draw when the cursor blinks off?
+     This can be filled_box_cursor or bar_cursor or no_cursor.  */
+  enum text_cursor_kinds blink_off_cursor;
+
+  /* Width of bar cursor (if we are using that) for blink-off state.  */
+  int blink_off_cursor_width;
+
   /* Non-0 means raise this frame to the top of the heap when selected.  */
   char auto_raise;
 
@@ -352,9 +378,6 @@ struct frame
   int scroll_bar_pixel_width;
   int scroll_bar_cols;
 
-  /* Width of area for drawing truncation marks and overlay arrow.  */
-  int trunc_area_pixel_width, trunc_area_cols;
-
   /* The baud rate that was used to calculate costs for this frame.  */
   int cost_calculation_baud_rate;
 
@@ -369,6 +392,10 @@ struct frame
 
   /* Additional space to put between text lines on this frame.  */
   int extra_line_spacing;
+
+  /* Set to non-zero in change_frame_size when size of frame changed
+     Clear the frame in clear_garbaged_frames if set.  */
+  unsigned resized_p : 1;
 };
 
 #ifdef MULTI_KBOARD
@@ -401,7 +428,7 @@ typedef struct frame *FRAME_PTR;
 #ifdef HAVE_NTGUI
 #define FRAME_WINDOW_P(f) FRAME_W32_P (f)
 #endif
-#ifdef macintosh
+#ifdef MAC_OS
 #define FRAME_WINDOW_P(f) FRAME_MAC_P (f)
 #endif
 #ifndef FRAME_WINDOW_P
@@ -441,7 +468,7 @@ typedef struct frame *FRAME_PTR;
 
 /* Nonzero if this frame should display a menu bar
    in a way that does not use any text lines.  */
-#if defined (USE_X_TOOLKIT) || defined (HAVE_NTGUI) || defined (macintosh)
+#if defined (USE_X_TOOLKIT) || defined (HAVE_NTGUI) || defined (MAC_OS)
 #define FRAME_EXTERNAL_MENU_BAR(f) (f)->external_menu_bar
 #else
 #define FRAME_EXTERNAL_MENU_BAR(f) 0
@@ -555,7 +582,7 @@ typedef struct frame *FRAME_PTR;
 #define FRAME_WINDOW_WIDTH_ARG(f, width)       \
      ((width)                                  \
       + FRAME_SCROLL_BAR_WIDTH (f)             \
-      + FRAME_FLAGS_AREA_COLS (f))
+      + FRAME_FRINGE_COLS (f))
 
 /* Maximum + 1 legitimate value for FRAME_CURSOR_X.  */
 #define FRAME_CURSOR_X_LIMIT(f) \
@@ -568,6 +595,11 @@ typedef struct frame *FRAME_PTR;
 #define FRAME_MENU_BAR_ITEMS(f) ((f)->menu_bar_items)
 #define FRAME_COST_BAUD_RATE(f) ((f)->cost_calculation_baud_rate)
 
+#define FRAME_DESIRED_CURSOR(f) ((f)->desired_cursor)
+#define FRAME_BLINK_OFF_CURSOR(f) ((f)->blink_off_cursor)
+#define FRAME_CURSOR_WIDTH(f) ((f)->cursor_width)
+#define FRAME_BLINK_OFF_CURSOR_WIDTH(f) ((f)->blink_off_cursor_width)
+
 /* Return a pointer to the face cache of frame F.  */
 
 #define FRAME_FACE_CACHE(F)    (F)->face_cache
@@ -608,13 +640,13 @@ typedef struct frame *FRAME_PTR;
    (f)->visible = (f)->async_visible, \
    (f)->iconified = (f)->async_iconified)
 
-#define CHECK_FRAME(x, i)                              \
+#define CHECK_FRAME(x)                                 \
      do {                                              \
        if (! FRAMEP (x))                               \
          x = wrong_type_argument (Qframep, (x));       \
      } while (0)
 
-#define CHECK_LIVE_FRAME(x, i)                         \
+#define CHECK_LIVE_FRAME(x)                            \
      do {                                              \
        if (! FRAMEP (x)                                        \
           || ! FRAME_LIVE_P (XFRAME (x)))              \
@@ -640,6 +672,7 @@ typedef struct frame *FRAME_PTR;
 
 
 extern Lisp_Object Qframep, Qframe_live_p, Qicon;
+extern Lisp_Object Qleft_fringe, Qright_fringe;
 
 extern struct frame *last_nonminibuf_frame;
 
@@ -657,6 +690,8 @@ extern Lisp_Object Vframe_list;
 extern Lisp_Object Vdefault_frame_alist;
 
 extern Lisp_Object Vterminal_frame;
+
+extern Lisp_Object Vmouse_highlight;
 \f
 /* Device-independent scroll bar stuff.  */
 
@@ -717,18 +752,21 @@ extern Lisp_Object selected_frame;
 
 #ifdef HAVE_WINDOW_SYSTEM
 
-#define FRAME_FLAGS_AREA_COLS(F) \
-     (FRAME_WINDOW_P (F) ? FRAME_X_FLAGS_AREA_COLS (F) : 0)
-#define FRAME_FLAGS_AREA_WIDTH(F) \
-     (FRAME_WINDOW_P (F) ? FRAME_X_FLAGS_AREA_WIDTH (F) : 0)
-#define FRAME_LEFT_FLAGS_AREA_WIDTH(F) \
-     (FRAME_WINDOW_P (F) ? FRAME_X_LEFT_FLAGS_AREA_WIDTH (F) : 0)
+#define FRAME_FRINGE_COLS(F) \
+     (FRAME_WINDOW_P (F) ? FRAME_X_FRINGE_COLS (F) : 0)
+#define FRAME_FRINGE_WIDTH(F) \
+     (FRAME_WINDOW_P (F) ? FRAME_X_FRINGE_WIDTH (F) : 0)
+#define FRAME_LEFT_FRINGE_WIDTH(F) \
+     (FRAME_WINDOW_P (F) ? FRAME_X_LEFT_FRINGE_WIDTH (F) : 0)
+#define FRAME_RIGHT_FRINGE_WIDTH(F) \
+     (FRAME_WINDOW_P (F) ? FRAME_X_RIGHT_FRINGE_WIDTH (F) : 0)
      
 #else /* not HAVE_WINDOW_SYSTEM */
 
-#define FRAME_FLAGS_AREA_WIDTH(F)      0
-#define FRAME_FLAGS_AREA_COLS(F)       0
-#define FRAME_LEFT_FLAGS_AREA_WIDTH(F)  0
+#define FRAME_FRINGE_WIDTH(F)  0
+#define FRAME_FRINGE_COLS(F)   0
+#define FRAME_LEFT_FRINGE_WIDTH(F)  0
+#define FRAME_RIGHT_FRINGE_WIDTH(F) 0
 
 #endif /* not HAVE_WINDOW_SYSTEM */
      
@@ -781,4 +819,4 @@ extern Lisp_Object selected_frame;
       ? make_float ((double) (Y) / CANON_Y_UNIT (F))   \
       : make_number ((Y) / CANON_Y_UNIT (F)))  
                             
-#endif /* not defined _FRAME_H_ */
+#endif /* not EMACS_FRAME_H */