Mercurial > hg > xemacs-beta
diff src/frame.h @ 272:c5d627a313b1 r21-0b34
Import from CVS: tag r21-0b34
author | cvs |
---|---|
date | Mon, 13 Aug 2007 10:28:48 +0200 |
parents | b2472a1930f2 |
children | c42ec1d1cded |
line wrap: on
line diff
--- a/src/frame.h Mon Aug 13 10:27:41 2007 +0200 +++ b/src/frame.h Mon Aug 13 10:28:48 2007 +0200 @@ -38,10 +38,6 @@ MAYBE_CONTYPE_METH ((f)->framemeths, m, args) #define FRAMEMETH_OR_GIVEN(f, m, args, given) \ CONTYPE_METH_OR_GIVEN((f)->framemeths, m, args, given) -#define MAYBE_INT_FRAMEMETH(f, m, args) \ - MAYBE_INT_CONTYPE_METH ((f)->framemeths, m, args) -#define MAYBE_LISP_FRAMEMETH(f, m, args) \ - MAYBE_LISP_CONTYPE_METH ((f)->framemeths, m, args) struct frame { @@ -188,12 +184,35 @@ unsigned int subwindows_being_displayed :1; }; -/* If this is non-nil, it is the frame that make-frame is currently - creating. We can't set the current frame to this in case the - debugger goes off because it would try and display to it. However, - there are some places which need to reference it which have no - other way of getting it if it isn't the selected frame. */ -extern Lisp_Object Vframe_being_created; +EXFUN (Fdelete_frame, 2); +EXFUN (Fframe_iconified_p, 1); +EXFUN (Fframe_name, 1); +EXFUN (Fframe_property, 3); +EXFUN (Fmake_frame, 2); +EXFUN (Fmake_frame_visible, 1); +EXFUN (Fraise_frame, 1); +EXFUN (Fselect_frame, 1); +EXFUN (Fset_frame_pointer, 2); +EXFUN (Fset_frame_position, 3); +EXFUN (Fset_frame_size, 4); + +extern Lisp_Object Qbackground_toolbar_color, Qbell_volume, Qborder_color; +extern Lisp_Object Qborder_width, Qbottom_toolbar_shadow_color; +extern Lisp_Object Qbottom_toolbar_shadow_pixmap, Qdelete_frame; +extern Lisp_Object Qdeselect_frame_hook, Qdrag_and_drop_functions, Qgc_pointer; +extern Lisp_Object Qiconic, Qinitially_unmapped, Qinter_line_space; +extern Lisp_Object Qinternal_border_width, Qinvisible, Qmap_frame_hook; +extern Lisp_Object Qminibuffer, Qmodeline_pointer, Qmouse_enter_frame_hook; +extern Lisp_Object Qmouse_leave_frame_hook, Qpointer_background; +extern Lisp_Object Qpointer_color, Qpopup, Qscrollbar_placement; +extern Lisp_Object Qselect_frame_hook, Qspace_pointer; +extern Lisp_Object Qsynchronize_minibuffers, Qtext_pointer; +extern Lisp_Object Qtoolbar_shadow_thickness, Qtop_toolbar_shadow_color; +extern Lisp_Object Qtop_toolbar_shadow_pixmap, Qunmap_frame_hook; +extern Lisp_Object Qunsplittable, Quse_backing_store, Qvisible, Qvisual_bell; +extern Lisp_Object Vframe_icon_title_format, Vframe_title_format; +extern Lisp_Object Vmouse_motion_handler; + DECLARE_LRECORD (frame, struct frame); #define XFRAME(x) XRECORD (x, frame, struct frame) @@ -203,28 +222,30 @@ #define CHECK_FRAME(x) CHECK_RECORD (x, frame) #define CONCHECK_FRAME(x) CONCHECK_RECORD (x, frame) -#define CHECK_LIVE_FRAME(x) \ - do { CHECK_FRAME (x); \ - if (! FRAMEP (x) \ - || ! FRAME_LIVE_P (XFRAME (x))) \ - dead_wrong_type_argument (Qframe_live_p, (x)); } while (0) -#define CONCHECK_LIVE_FRAME(x) \ - do { CONCHECK_FRAME (x); \ - if (! FRAMEP (x) \ - || ! FRAME_LIVE_P (XFRAME (x))) \ - x = wrong_type_argument (Qframe_live_p, (x)); } while (0) +#define CHECK_LIVE_FRAME(x) do { \ + CHECK_FRAME (x); \ + if (! FRAME_LIVE_P (XFRAME (x))) \ + dead_wrong_type_argument (Qframe_live_p, (x)); \ +} while (0) +#define CONCHECK_LIVE_FRAME(x) do { \ + CONCHECK_FRAME (x); \ + if (! FRAME_LIVE_P (XFRAME (x))) \ + x = wrong_type_argument (Qframe_live_p, (x)); \ +} while (0) #define FRAME_TYPE_P(f, type) EQ (FRAME_TYPE (f), Q##type) #ifdef ERROR_CHECK_TYPECHECK -MAC_DECLARE_EXTERN (struct frame *, MTframe_data) +INLINE struct frame * +error_check_frame_type (struct frame * f, Lisp_Object sym); +INLINE struct frame * +error_check_frame_type (struct frame * f, Lisp_Object sym) +{ + assert (EQ (FRAME_TYPE (f), sym)); + return f; +} # define FRAME_TYPE_DATA(f, type) \ -MAC_BEGIN \ - MAC_DECLARE (struct frame *, MTframe_data, f) \ - assert (FRAME_TYPE_P (MTframe_data, type)) \ - MAC_SEP \ - (struct type##_frame *) MTframe_data->frame_data \ -MAC_END + ((struct type##_frame *) (error_check_frame_type (f, Q##type))->frame_data) #else # define FRAME_TYPE_DATA(f, type) \ ((struct type##_frame *) (f)->frame_data) @@ -263,69 +284,99 @@ #define FRAME_WIN_P(frm) CONSOLE_TYPESYM_WIN_P (FRAME_TYPE (frm)) -extern Lisp_Object Qframe_live_p; -extern Lisp_Object Qframe_x_p, Qframe_tty_p; -extern Lisp_Object Vframe_title_format, Vframe_icon_title_format; - extern int frame_changed; -#define MARK_FRAME_FACES_CHANGED(f) do { \ - (f)->faces_changed = 1; \ - (f)->modiff++; \ - if (!NILP ((f)->device)) \ - MARK_DEVICE_FACES_CHANGED (XDEVICE ((f)->device)); \ - else \ - faces_changed = 1; } while (0) +#define MARK_FRAME_FACES_CHANGED(f) do { \ + struct frame *mffc_f = (f); \ + mffc_f->faces_changed = 1; \ + mffc_f->modiff++; \ + if (!NILP (mffc_f->device)) \ + { \ + struct device *mffc_d = XDEVICE (mffc_f->device); \ + MARK_DEVICE_FACES_CHANGED (mffc_d); \ + } \ + else \ + faces_changed = 1; \ +} while (0) -#define MARK_FRAME_GLYPHS_CHANGED(f) do { \ - (f)->glyphs_changed = 1; \ - (f)->modiff++; \ - if (!NILP ((f)->device)) \ - MARK_DEVICE_GLYPHS_CHANGED (XDEVICE ((f)->device)); \ - else \ - glyphs_changed = 1; } while (0) +#define MARK_FRAME_GLYPHS_CHANGED(f) do { \ + struct frame *mfgc_f = (f); \ + mfgc_f->glyphs_changed = 1; \ + mfgc_f->modiff++; \ + if (!NILP (mfgc_f->device)) \ + { \ + struct device *mfgc_d = XDEVICE (mfgc_f->device); \ + MARK_DEVICE_GLYPHS_CHANGED (mfgc_d); \ + } \ + else \ + glyphs_changed = 1; \ +} while (0) -#define MARK_FRAME_TOOLBARS_CHANGED(f) do { \ - (f)->toolbar_changed = 1; \ - (f)->modiff++; \ - if (!NILP ((f)->device)) \ - MARK_DEVICE_TOOLBARS_CHANGED (XDEVICE ((f)->device)); \ - else \ - toolbar_changed = 1; } while (0) +#define MARK_FRAME_TOOLBARS_CHANGED(f) do { \ + struct frame *mftc_f = (f); \ + mftc_f->toolbar_changed = 1; \ + mftc_f->modiff++; \ + if (!NILP (mftc_f->device)) \ + { \ + struct device *mftc_d = XDEVICE (mftc_f->device); \ + MARK_DEVICE_TOOLBARS_CHANGED (mftc_d); \ + } \ + else \ + toolbar_changed = 1; \ +} while (0) -#define MARK_FRAME_SIZE_CHANGED(f) do { \ - (f)->size_changed = 1; \ - (f)->size_change_pending = 1; \ - (f)->modiff++; \ - if (!NILP ((f)->device)) \ - MARK_DEVICE_SIZE_CHANGED (XDEVICE ((f)->device)); \ - else \ - size_changed = 1; } while (0) - -#define MARK_FRAME_CHANGED(f) do { \ - (f)->frame_changed = 1; \ - (f)->modiff++; \ - if (!NILP ((f)->device)) \ - MARK_DEVICE_FRAME_CHANGED (XDEVICE ((f)->device)); \ - else \ - frame_changed = 1; } while (0) +#define MARK_FRAME_SIZE_CHANGED(f) do { \ + struct frame *mfsc_f = (f); \ + mfsc_f->size_changed = 1; \ + mfsc_f->size_change_pending = 1; \ + mfsc_f->modiff++; \ + if (!NILP (mfsc_f->device)) \ + { \ + struct device *mfsc_d = XDEVICE (mfsc_f->device); \ + MARK_DEVICE_SIZE_CHANGED (mfsc_d); \ + } \ + else \ + size_changed = 1; \ +} while (0) -#define MARK_FRAME_WINDOWS_CHANGED(f) do { \ - (f)->windows_changed = 1; \ - (f)->modiff++; \ - if (!NILP ((f)->device)) \ - MARK_DEVICE_WINDOWS_CHANGED (XDEVICE ((f)->device)); \ - else \ - windows_changed = 1; } while (0) +#define MARK_FRAME_CHANGED(f) do { \ + struct frame *mfc_f = (f); \ + mfc_f->frame_changed = 1; \ + mfc_f->modiff++; \ + if (!NILP (mfc_f->device)) \ + { \ + struct device *mfc_d = XDEVICE (mfc_f->device); \ + MARK_DEVICE_FRAME_CHANGED (mfc_d); \ + } \ + else \ + frame_changed = 1; \ +} while (0) -#define MARK_FRAME_WINDOWS_STRUCTURE_CHANGED(f) do { \ - (f)->windows_structure_changed = 1; \ - (f)->modiff++; \ - if (!NILP ((f)->device)) \ - MARK_DEVICE_WINDOWS_STRUCTURE_CHANGED (XDEVICE ((f)->device)); \ - else \ - windows_structure_changed = 1; } while (0) +#define MARK_FRAME_WINDOWS_CHANGED(f) do { \ + struct frame *mfwc_f = (f); \ + mfwc_f->windows_changed = 1; \ + mfwc_f->modiff++; \ + if (!NILP (mfwc_f->device)) \ + { \ + struct device *mfwc_d = XDEVICE (mfwc_f->device); \ + MARK_DEVICE_WINDOWS_CHANGED (mfwc_d); \ + } \ + else \ + windows_changed = 1; \ +} while (0) +#define MARK_FRAME_WINDOWS_STRUCTURE_CHANGED(f) do { \ + struct frame *fwsc_f = (f); \ + fwsc_f->windows_structure_changed = 1; \ + fwsc_f->modiff++; \ + if (!NILP (fwsc_f->device)) \ + { \ + struct device *fwsc_d = XDEVICE (fwsc_f->device); \ + MARK_DEVICE_WINDOWS_STRUCTURE_CHANGED (fwsc_d); \ + } \ + else \ + windows_structure_changed = 1; \ +} while (0) #define SET_FRAME_CLEAR(f) MARK_FRAME_CHANGED (f); (f)->clear = 1 #define FRAME_DEVICE(f) ((f)->device) @@ -586,8 +637,6 @@ DEVICE_LOOP_NO_BREAK (devcons, concons) \ DEVICE_FRAME_LOOP (frmcons, XDEVICE (XCAR (devcons))) -extern Lisp_Object Vdefault_frame_name; - void update_frame_title (struct frame *f); Lisp_Object next_frame (Lisp_Object f, Lisp_Object frametype, Lisp_Object console);