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. */
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)
/* A structure describing a termcap frame display. */
extern struct x_output tty_display;
-#endif /* ! MSDOS && ! WINDOWSNT && ! macintosh */
+#endif /* ! MSDOS && ! WINDOWSNT && ! MAC_OS */
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
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;
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;
/* 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
#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
/* 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
#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) \
#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
(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))) \
extern Lisp_Object Qframep, Qframe_live_p, Qicon;
+extern Lisp_Object Qleft_fringe, Qright_fringe;
extern struct frame *last_nonminibuf_frame;
extern Lisp_Object Vdefault_frame_alist;
extern Lisp_Object Vterminal_frame;
+
+extern Lisp_Object Vmouse_highlight;
\f
/* Device-independent scroll bar stuff. */
#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 */
? 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 */