diff options
| author | Dan Nicolaescu | 2008-07-27 18:24:48 +0000 |
|---|---|---|
| committer | Dan Nicolaescu | 2008-07-27 18:24:48 +0000 |
| commit | 9e2a2647758db83b490e2993aa31cd4607305a82 (patch) | |
| tree | 9c3d41b47bcd316c60d56bef8d7fd32789e59411 /src/macterm.h | |
| parent | 7f19297073b2dd6c28987bf5663933591f59e91e (diff) | |
| download | emacs-9e2a2647758db83b490e2993aa31cd4607305a82.tar.gz emacs-9e2a2647758db83b490e2993aa31cd4607305a82.zip | |
Remove support for Mac Carbon.
* mactoolbox.c:
* macterm.h:
* macterm.c:
* macselect.c:
* macmenu.c:
* macgui.h:
* macfns.c:
* mac.c: Remove file.
* s/darwin.h:
* m/intel386.h:
* xfaces.c:
* xdisp.c:
* window.c:
* tparam.c:
* termhooks.h:
* termcap.c:
* term.c:
* syssignal.h:
* sysselect.h:
* sysdep.c:
* process.c:
* lread.c:
* lisp.h:
* keyboard.c:
* image.c:
* fringe.c:
* frame.h:
* frame.c:
* fontset.c:
* font.h:
* font.c:
* fns.c:
* fileio.c:
* emacs.c:
* dispnew.c:
* dispextern.h:
* config.in:
* atimer.c:
* Makefile.in: Remove code for Carbon
* erc.el: Remove code for Carbon.
Remove support for Mac Carbon.
* term/mac-win.el: Remove file
* international/mule-cmds.el:
* version.el:
* startup.el:
* simple.el:
* mwheel.el:
* mouse.el:
* loadup.el:
* isearch.el:
* info.el:
* frame.el:
* faces.el:
* disp-table.el:
* cus-start.el:
* cus-face.el:
* cus-edit.el:
* Makefile.in: Remove code for Carbon.
Remove support for Mac Carbon.
* makefile.w32-in:
* emacsclient.c: Remove code for Carbon.
* PROBLEMS:
* MACHINES: Remove mentions of Mac Carbon.
* ns-emacs.texi:
* faq.texi: Remove mentions of Mac Carbon.
* os.texi:
* frames.texi:
* display.texi: Remove mentions of Mac Carbon.
* xresources.texi: Remove mentions of Mac Carbon.
* make-tarball.txt:
* admin.el:
* FOR-RELEASE:
* CPP-DEFINES: Remove mentions of Mac Carbon.
Remove support for Mac Carbon.
* mac: Remove directory.
* make-dist:
* configure.in:
* README:
* Makefile.in:
* INSTALL: Remove code for Carbon.
* configure: Regenerate.
Diffstat (limited to 'src/macterm.h')
| -rw-r--r-- | src/macterm.h | 795 |
1 files changed, 0 insertions, 795 deletions
diff --git a/src/macterm.h b/src/macterm.h deleted file mode 100644 index 28318a6d0b0..00000000000 --- a/src/macterm.h +++ /dev/null | |||
| @@ -1,795 +0,0 @@ | |||
| 1 | /* Display module for Mac OS. | ||
| 2 | Copyright (C) 2000, 2001, 2002, 2003, 2004, | ||
| 3 | 2005, 2006, 2007, 2008 Free Software Foundation, Inc. | ||
| 4 | |||
| 5 | This file is part of GNU Emacs. | ||
| 6 | |||
| 7 | GNU Emacs is free software: you can redistribute it and/or modify | ||
| 8 | it under the terms of the GNU General Public License as published by | ||
| 9 | the Free Software Foundation, either version 3 of the License, or | ||
| 10 | (at your option) any later version. | ||
| 11 | |||
| 12 | GNU Emacs is distributed in the hope that it will be useful, | ||
| 13 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 14 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 15 | GNU General Public License for more details. | ||
| 16 | |||
| 17 | You should have received a copy of the GNU General Public License | ||
| 18 | along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ | ||
| 19 | |||
| 20 | /* Contributed by Andrew Choi (akochoi@mac.com). */ | ||
| 21 | |||
| 22 | #include "macgui.h" | ||
| 23 | #include "frame.h" | ||
| 24 | |||
| 25 | #define RGB_TO_ULONG(r, g, b) (((r) << 16) | ((g) << 8) | (b)) | ||
| 26 | #define ARGB_TO_ULONG(a, r, g, b) (((a) << 24) | ((r) << 16) | ((g) << 8) | (b)) | ||
| 27 | |||
| 28 | #define ALPHA_FROM_ULONG(color) ((color) >> 24) | ||
| 29 | #define RED_FROM_ULONG(color) (((color) >> 16) & 0xff) | ||
| 30 | #define GREEN_FROM_ULONG(color) (((color) >> 8) & 0xff) | ||
| 31 | #define BLUE_FROM_ULONG(color) ((color) & 0xff) | ||
| 32 | |||
| 33 | /* Do not change `* 0x101' in the following lines to `<< 8'. If | ||
| 34 | changed, image masks in 1-bit depth will not work. */ | ||
| 35 | #define RED16_FROM_ULONG(color) (RED_FROM_ULONG(color) * 0x101) | ||
| 36 | #define GREEN16_FROM_ULONG(color) (GREEN_FROM_ULONG(color) * 0x101) | ||
| 37 | #define BLUE16_FROM_ULONG(color) (BLUE_FROM_ULONG(color) * 0x101) | ||
| 38 | |||
| 39 | #define BLACK_PIX_DEFAULT(f) RGB_TO_ULONG(0,0,0) | ||
| 40 | #define WHITE_PIX_DEFAULT(f) RGB_TO_ULONG(255,255,255) | ||
| 41 | |||
| 42 | #define FONT_WIDTH(f) ((f)->max_bounds.width) | ||
| 43 | #define FONT_HEIGHT(f) ((f)->ascent + (f)->descent) | ||
| 44 | #define FONT_BASE(f) ((f)->ascent) | ||
| 45 | #define FONT_DESCENT(f) ((f)->descent) | ||
| 46 | |||
| 47 | /* Structure recording bitmaps and reference count. | ||
| 48 | If REFCOUNT is 0 then this record is free to be reused. */ | ||
| 49 | |||
| 50 | struct mac_bitmap_record | ||
| 51 | { | ||
| 52 | char *bitmap_data; | ||
| 53 | char *file; | ||
| 54 | int refcount; | ||
| 55 | int height, width; | ||
| 56 | }; | ||
| 57 | |||
| 58 | |||
| 59 | /* For each display (currently only one on mac), we have a structure that | ||
| 60 | records information about it. */ | ||
| 61 | |||
| 62 | struct mac_display_info | ||
| 63 | { | ||
| 64 | /* Chain of all mac_display_info structures. */ | ||
| 65 | struct mac_display_info *next; | ||
| 66 | |||
| 67 | /* The generic display parameters corresponding to this X display. */ | ||
| 68 | struct terminal *terminal; | ||
| 69 | |||
| 70 | /* This is a cons cell of the form (NAME . FONT-LIST-CACHE). | ||
| 71 | The same cons cell also appears in x_display_name_list. */ | ||
| 72 | Lisp_Object name_list_element; | ||
| 73 | |||
| 74 | /* Number of frames that are on this display. */ | ||
| 75 | int reference_count; | ||
| 76 | |||
| 77 | /* Dots per inch of the screen. */ | ||
| 78 | double resx, resy; | ||
| 79 | |||
| 80 | /* Number of planes on this screen. */ | ||
| 81 | int n_planes; | ||
| 82 | |||
| 83 | /* Whether the screen supports color */ | ||
| 84 | int color_p; | ||
| 85 | |||
| 86 | /* Dimensions of this screen. */ | ||
| 87 | int height, width; | ||
| 88 | |||
| 89 | /* Mask of things that cause the mouse to be grabbed. */ | ||
| 90 | int grabbed; | ||
| 91 | |||
| 92 | #if 0 | ||
| 93 | /* Emacs bitmap-id of the default icon bitmap for this frame. | ||
| 94 | Or -1 if none has been allocated yet. */ | ||
| 95 | int icon_bitmap_id; | ||
| 96 | |||
| 97 | #endif | ||
| 98 | /* The root window of this screen. */ | ||
| 99 | Window root_window; | ||
| 100 | |||
| 101 | /* The cursor to use for vertical scroll bars. */ | ||
| 102 | Cursor vertical_scroll_bar_cursor; | ||
| 103 | |||
| 104 | /* Resource data base */ | ||
| 105 | XrmDatabase xrdb; | ||
| 106 | |||
| 107 | /* A table of all the fonts we have already loaded. */ | ||
| 108 | struct font_info *font_table; | ||
| 109 | |||
| 110 | /* The current capacity of font_table. */ | ||
| 111 | int font_table_size; | ||
| 112 | |||
| 113 | /* Minimum width over all characters in all fonts in font_table. */ | ||
| 114 | int smallest_char_width; | ||
| 115 | |||
| 116 | /* Minimum font height over all fonts in font_table. */ | ||
| 117 | int smallest_font_height; | ||
| 118 | |||
| 119 | /* Reusable Graphics Context for drawing a cursor in a non-default face. */ | ||
| 120 | GC scratch_cursor_gc; | ||
| 121 | |||
| 122 | /* These variables describe the range of text currently shown in its | ||
| 123 | mouse-face, together with the window they apply to. As long as | ||
| 124 | the mouse stays within this range, we need not redraw anything on | ||
| 125 | its account. Rows and columns are glyph matrix positions in | ||
| 126 | MOUSE_FACE_WINDOW. */ | ||
| 127 | int mouse_face_beg_row, mouse_face_beg_col; | ||
| 128 | int mouse_face_beg_x, mouse_face_beg_y; | ||
| 129 | int mouse_face_end_row, mouse_face_end_col; | ||
| 130 | int mouse_face_end_x, mouse_face_end_y; | ||
| 131 | int mouse_face_past_end; | ||
| 132 | Lisp_Object mouse_face_window; | ||
| 133 | int mouse_face_face_id; | ||
| 134 | Lisp_Object mouse_face_overlay; | ||
| 135 | |||
| 136 | /* 1 if a mouse motion event came and we didn't handle it right away because | ||
| 137 | gc was in progress. */ | ||
| 138 | int mouse_face_deferred_gc; | ||
| 139 | |||
| 140 | /* FRAME and X, Y position of mouse when last checked for | ||
| 141 | highlighting. X and Y can be negative or out of range for the frame. */ | ||
| 142 | struct frame *mouse_face_mouse_frame; | ||
| 143 | int mouse_face_mouse_x, mouse_face_mouse_y; | ||
| 144 | |||
| 145 | /* Nonzero means defer mouse-motion highlighting. */ | ||
| 146 | int mouse_face_defer; | ||
| 147 | |||
| 148 | /* Nonzero means that the mouse highlight should not be shown. */ | ||
| 149 | int mouse_face_hidden; | ||
| 150 | |||
| 151 | int mouse_face_image_state; | ||
| 152 | |||
| 153 | char *mac_id_name; | ||
| 154 | |||
| 155 | /* The number of fonts actually stored in the font table. | ||
| 156 | font_table[n] is used and valid if 0 <= n < n_fonts. 0 <= | ||
| 157 | n_fonts <= font_table_size and font_table[i].name != 0. */ | ||
| 158 | int n_fonts; | ||
| 159 | |||
| 160 | /* Pointer to bitmap records. */ | ||
| 161 | struct mac_bitmap_record *bitmaps; | ||
| 162 | |||
| 163 | /* Allocated size of bitmaps field. */ | ||
| 164 | int bitmaps_size; | ||
| 165 | |||
| 166 | /* Last used bitmap index. */ | ||
| 167 | int bitmaps_last; | ||
| 168 | |||
| 169 | /* The frame (if any) which has the window that has keyboard focus. | ||
| 170 | Zero if none. This is examined by Ffocus_frame in macfns.c. Note | ||
| 171 | that a mere EnterNotify event can set this; if you need to know the | ||
| 172 | last frame specified in a FocusIn or FocusOut event, use | ||
| 173 | x_focus_event_frame. */ | ||
| 174 | struct frame *x_focus_frame; | ||
| 175 | |||
| 176 | /* The last frame mentioned in a FocusIn or FocusOut event. This is | ||
| 177 | separate from x_focus_frame, because whether or not LeaveNotify | ||
| 178 | events cause us to lose focus depends on whether or not we have | ||
| 179 | received a FocusIn event for it. */ | ||
| 180 | struct frame *x_focus_event_frame; | ||
| 181 | |||
| 182 | /* The frame which currently has the visual highlight, and should get | ||
| 183 | keyboard input (other sorts of input have the frame encoded in the | ||
| 184 | event). It points to the focus frame's selected window's | ||
| 185 | frame. It differs from x_focus_frame when we're using a global | ||
| 186 | minibuffer. */ | ||
| 187 | struct frame *x_highlight_frame; | ||
| 188 | }; | ||
| 189 | |||
| 190 | /* This checks to make sure we have a display. */ | ||
| 191 | extern void check_mac P_ ((void)); | ||
| 192 | |||
| 193 | #define x_display_info mac_display_info | ||
| 194 | |||
| 195 | /* This is a chain of structures for all the X displays currently in use. */ | ||
| 196 | extern struct x_display_info *x_display_list; | ||
| 197 | |||
| 198 | /* This is a chain of structures for all the displays currently in use. */ | ||
| 199 | extern struct mac_display_info one_mac_display_info; | ||
| 200 | |||
| 201 | /* This is a list of cons cells, each of the form (NAME . FONT-LIST-CACHE), | ||
| 202 | one for each element of x_display_list and in the same order. | ||
| 203 | NAME is the name of the frame. | ||
| 204 | FONT-LIST-CACHE records previous values returned by x-list-fonts. */ | ||
| 205 | extern Lisp_Object x_display_name_list; | ||
| 206 | |||
| 207 | extern struct x_display_info *x_display_info_for_name P_ ((Lisp_Object)); | ||
| 208 | |||
| 209 | extern struct mac_display_info *mac_term_init P_ ((Lisp_Object, char *, char *)); | ||
| 210 | |||
| 211 | extern Lisp_Object x_list_fonts P_ ((struct frame *, Lisp_Object, int, int)); | ||
| 212 | extern struct font_info *x_get_font_info P_ ((struct frame *f, int)); | ||
| 213 | extern struct font_info *x_load_font P_ ((struct frame *, char *, int)); | ||
| 214 | extern struct font_info *x_query_font P_ ((struct frame *, char *)); | ||
| 215 | extern void x_find_ccl_program P_ ((struct font_info *)); | ||
| 216 | |||
| 217 | /* When Emacs uses a tty window, tty_display in frame.c points to an | ||
| 218 | x_output struct . */ | ||
| 219 | struct x_output | ||
| 220 | { | ||
| 221 | unsigned long background_pixel; | ||
| 222 | unsigned long foreground_pixel; | ||
| 223 | }; | ||
| 224 | |||
| 225 | /* The collection of data describing a window on the Mac. */ | ||
| 226 | struct mac_output | ||
| 227 | { | ||
| 228 | /* Placeholder for things accessed through output_data.x. Must | ||
| 229 | appear first. */ | ||
| 230 | struct x_output x_compatible; | ||
| 231 | |||
| 232 | /* Menubar "widget" handle. */ | ||
| 233 | int menubar_widget; | ||
| 234 | |||
| 235 | FRAME_PTR mFP; /* points back to the frame struct */ | ||
| 236 | |||
| 237 | /* Here are the Graphics Contexts for the default font. */ | ||
| 238 | GC normal_gc; /* Normal video */ | ||
| 239 | GC reverse_gc; /* Reverse video */ | ||
| 240 | GC cursor_gc; /* cursor drawing */ | ||
| 241 | |||
| 242 | /* The window used for this frame. | ||
| 243 | May be zero while the frame object is being created | ||
| 244 | and the window has not yet been created. */ | ||
| 245 | Window window_desc; | ||
| 246 | |||
| 247 | /* The window that is the parent of this window. | ||
| 248 | Usually this is a window that was made by the window manager, | ||
| 249 | but it can be the root window, and it can be explicitly specified | ||
| 250 | (see the explicit_parent field, below). */ | ||
| 251 | Window parent_desc; | ||
| 252 | |||
| 253 | /* Default ASCII font of this frame. */ | ||
| 254 | XFontStruct *font; | ||
| 255 | |||
| 256 | /* The baseline offset of the default ASCII font. */ | ||
| 257 | int baseline_offset; | ||
| 258 | |||
| 259 | /* If a fontset is specified for this frame instead of font, this | ||
| 260 | value contains an ID of the fontset, else -1. */ | ||
| 261 | int fontset; | ||
| 262 | |||
| 263 | /* Pixel values used for various purposes. | ||
| 264 | border_pixel may be -1 meaning use a gray tile. */ | ||
| 265 | unsigned long cursor_pixel; | ||
| 266 | unsigned long border_pixel; | ||
| 267 | unsigned long mouse_pixel; | ||
| 268 | unsigned long cursor_foreground_pixel; | ||
| 269 | |||
| 270 | #if 0 | ||
| 271 | /* Foreground color for scroll bars. A value of -1 means use the | ||
| 272 | default (black for non-toolkit scroll bars). */ | ||
| 273 | unsigned long scroll_bar_foreground_pixel; | ||
| 274 | |||
| 275 | /* Background color for scroll bars. A value of -1 means use the | ||
| 276 | default (background color of the frame for non-toolkit scroll | ||
| 277 | bars). */ | ||
| 278 | unsigned long scroll_bar_background_pixel; | ||
| 279 | #endif | ||
| 280 | |||
| 281 | /* Descriptor for the cursor in use for this window. */ | ||
| 282 | Cursor text_cursor; | ||
| 283 | Cursor nontext_cursor; | ||
| 284 | Cursor modeline_cursor; | ||
| 285 | Cursor hand_cursor; | ||
| 286 | Cursor hourglass_cursor; | ||
| 287 | Cursor horizontal_drag_cursor; | ||
| 288 | #if 0 | ||
| 289 | /* Window whose cursor is hourglass_cursor. This window is temporarily | ||
| 290 | mapped to display a hourglass-cursor. */ | ||
| 291 | Window hourglass_window; | ||
| 292 | |||
| 293 | /* Non-zero means hourglass cursor is currently displayed. */ | ||
| 294 | unsigned hourglass_p : 1; | ||
| 295 | |||
| 296 | /* Flag to set when the window needs to be completely repainted. */ | ||
| 297 | int needs_exposure; | ||
| 298 | |||
| 299 | #endif | ||
| 300 | |||
| 301 | #if TARGET_API_MAC_CARBON | ||
| 302 | /* The Mac control reference for the hourglass (progress indicator) | ||
| 303 | shown at the upper-right corner of the window. */ | ||
| 304 | ControlRef hourglass_control; | ||
| 305 | #endif | ||
| 306 | |||
| 307 | /* This is the Emacs structure for the display this frame is on. */ | ||
| 308 | /* struct w32_display_info *display_info; */ | ||
| 309 | |||
| 310 | /* Nonzero means our parent is another application's window | ||
| 311 | and was explicitly specified. */ | ||
| 312 | char explicit_parent; | ||
| 313 | |||
| 314 | /* Nonzero means tried already to make this frame visible. */ | ||
| 315 | char asked_for_visible; | ||
| 316 | |||
| 317 | /* Relief GCs, colors etc. */ | ||
| 318 | struct relief | ||
| 319 | { | ||
| 320 | GC gc; | ||
| 321 | unsigned long pixel; | ||
| 322 | int allocated_p; | ||
| 323 | } | ||
| 324 | black_relief, white_relief; | ||
| 325 | |||
| 326 | /* The background for which the above relief GCs were set up. | ||
| 327 | They are changed only when a different background is involved. */ | ||
| 328 | unsigned long relief_background; | ||
| 329 | |||
| 330 | /* Width of the internal border. */ | ||
| 331 | int internal_border_width; | ||
| 332 | |||
| 333 | /* Hints for the size and the position of a window. */ | ||
| 334 | XSizeHints *size_hints; | ||
| 335 | |||
| 336 | #if USE_MAC_TOOLBAR | ||
| 337 | /* This variable records the gravity value of the window position if | ||
| 338 | the window has an external tool bar when it is created. The | ||
| 339 | position of the window is adjusted using this information when | ||
| 340 | the tool bar is first redisplayed. Once the tool bar is | ||
| 341 | redisplayed, it is set to 0 in order to avoid further | ||
| 342 | adjustment. */ | ||
| 343 | int toolbar_win_gravity; | ||
| 344 | #endif | ||
| 345 | |||
| 346 | #if USE_CG_DRAWING | ||
| 347 | /* Quartz 2D graphics context. */ | ||
| 348 | CGContextRef cg_context; | ||
| 349 | #endif | ||
| 350 | }; | ||
| 351 | |||
| 352 | typedef struct mac_output mac_output; | ||
| 353 | |||
| 354 | /* Return the X output data for frame F. */ | ||
| 355 | #define FRAME_X_OUTPUT(f) ((f)->output_data.mac) | ||
| 356 | |||
| 357 | /* Return the Mac window used for displaying data in frame F. */ | ||
| 358 | #define FRAME_MAC_WINDOW(f) ((f)->output_data.mac->window_desc) | ||
| 359 | #define FRAME_X_WINDOW(f) ((f)->output_data.mac->window_desc) | ||
| 360 | |||
| 361 | #define FRAME_FONT(f) ((f)->output_data.mac->font) | ||
| 362 | #define FRAME_FONTSET(f) ((f)->output_data.mac->fontset) | ||
| 363 | |||
| 364 | #define FRAME_BASELINE_OFFSET(f) ((f)->output_data.mac->baseline_offset) | ||
| 365 | |||
| 366 | #define FRAME_SIZE_HINTS(f) ((f)->output_data.mac->size_hints) | ||
| 367 | |||
| 368 | /* This gives the mac_display_info structure for the display F is on. */ | ||
| 369 | #define FRAME_MAC_DISPLAY_INFO(f) (&one_mac_display_info) | ||
| 370 | #define FRAME_X_DISPLAY_INFO(f) (&one_mac_display_info) | ||
| 371 | |||
| 372 | /* This is the `Display *' which frame F is on. */ | ||
| 373 | #define FRAME_MAC_DISPLAY(f) (0) | ||
| 374 | #define FRAME_X_DISPLAY(f) (0) | ||
| 375 | |||
| 376 | /* This is the 'font_info *' which frame F has. */ | ||
| 377 | #define FRAME_MAC_FONT_TABLE(f) (FRAME_MAC_DISPLAY_INFO (f)->font_table) | ||
| 378 | |||
| 379 | /* Value is the smallest width of any character in any font on frame F. */ | ||
| 380 | |||
| 381 | #define FRAME_SMALLEST_CHAR_WIDTH(F) \ | ||
| 382 | FRAME_MAC_DISPLAY_INFO(F)->smallest_char_width | ||
| 383 | |||
| 384 | /* Value is the smallest height of any font on frame F. */ | ||
| 385 | |||
| 386 | #define FRAME_SMALLEST_FONT_HEIGHT(F) \ | ||
| 387 | FRAME_MAC_DISPLAY_INFO(F)->smallest_font_height | ||
| 388 | |||
| 389 | /* Mac-specific scroll bar stuff. */ | ||
| 390 | |||
| 391 | /* We represent scroll bars as lisp vectors. This allows us to place | ||
| 392 | references to them in windows without worrying about whether we'll | ||
| 393 | end up with windows referring to dead scroll bars; the garbage | ||
| 394 | collector will free it when its time comes. | ||
| 395 | |||
| 396 | We use struct scroll_bar as a template for accessing fields of the | ||
| 397 | vector. */ | ||
| 398 | |||
| 399 | struct scroll_bar { | ||
| 400 | |||
| 401 | /* These fields are shared by all vectors. */ | ||
| 402 | EMACS_INT size_from_Lisp_Vector_struct; | ||
| 403 | struct Lisp_Vector *next_from_Lisp_Vector_struct; | ||
| 404 | |||
| 405 | /* The window we're a scroll bar for. */ | ||
| 406 | Lisp_Object window; | ||
| 407 | |||
| 408 | /* The next and previous in the chain of scroll bars in this frame. */ | ||
| 409 | Lisp_Object next, prev; | ||
| 410 | |||
| 411 | /* The Mac control reference of this scroll bar. Since this is a | ||
| 412 | pointer value, we store it split into two Lisp integers. */ | ||
| 413 | Lisp_Object control_ref_low, control_ref_high; | ||
| 414 | |||
| 415 | /* The position and size of the scroll bar in pixels, relative to the | ||
| 416 | frame. */ | ||
| 417 | Lisp_Object top, left, width, height; | ||
| 418 | |||
| 419 | /* The starting and ending positions of the handle, relative to the | ||
| 420 | handle area (i.e. zero is the top position, not | ||
| 421 | SCROLL_BAR_TOP_BORDER). If they're equal, that means the handle | ||
| 422 | hasn't been drawn yet. | ||
| 423 | |||
| 424 | These are not actually the locations where the beginning and end | ||
| 425 | are drawn; in order to keep handles from becoming invisible when | ||
| 426 | editing large files, we establish a minimum height by always | ||
| 427 | drawing handle bottoms VERTICAL_SCROLL_BAR_MIN_HANDLE pixels below | ||
| 428 | where they would be normally; the bottom and top are in a | ||
| 429 | different co-ordinate system. */ | ||
| 430 | Lisp_Object start, end; | ||
| 431 | |||
| 432 | /* If the scroll bar handle is currently being dragged by the user, | ||
| 433 | this is the number of pixels from the top of the handle to the | ||
| 434 | place where the user grabbed it. If the handle is pressed but | ||
| 435 | not dragged yet, this is a negative integer whose absolute value | ||
| 436 | is the number of pixels plus 1. If the handle isn't currently | ||
| 437 | being dragged, this is Qnil. */ | ||
| 438 | Lisp_Object dragging; | ||
| 439 | |||
| 440 | #ifdef MAC_OSX | ||
| 441 | /* t if the background of the fringe that is adjacent to a scroll | ||
| 442 | bar is extended to the gap between the fringe and the bar. */ | ||
| 443 | Lisp_Object fringe_extended_p; | ||
| 444 | #endif | ||
| 445 | |||
| 446 | /* t if redraw needed in the next XTset_vertical_scroll_bar call. */ | ||
| 447 | Lisp_Object redraw_needed_p; | ||
| 448 | |||
| 449 | #ifdef USE_TOOLKIT_SCROLL_BARS | ||
| 450 | /* The position and size of the scroll bar handle track area in | ||
| 451 | pixels, relative to the frame. */ | ||
| 452 | Lisp_Object track_top, track_height; | ||
| 453 | |||
| 454 | /* Minimum length of the scroll bar handle, in pixels. */ | ||
| 455 | Lisp_Object min_handle; | ||
| 456 | #endif | ||
| 457 | }; | ||
| 458 | |||
| 459 | /* The number of elements a vector holding a struct scroll_bar needs. */ | ||
| 460 | #define SCROLL_BAR_VEC_SIZE \ | ||
| 461 | ((sizeof (struct scroll_bar) \ | ||
| 462 | - sizeof (EMACS_INT) - sizeof (struct Lisp_Vector *)) \ | ||
| 463 | / sizeof (Lisp_Object)) | ||
| 464 | |||
| 465 | /* Turning a lisp vector value into a pointer to a struct scroll_bar. */ | ||
| 466 | #define XSCROLL_BAR(vec) ((struct scroll_bar *) XVECTOR (vec)) | ||
| 467 | |||
| 468 | |||
| 469 | /* Building a C long integer from two lisp integers. */ | ||
| 470 | #define SCROLL_BAR_PACK(low, high) (XINT (high) << 16 | XINT (low)) | ||
| 471 | |||
| 472 | /* Setting two lisp integers to two parts of a C unsigned long. */ | ||
| 473 | #define SCROLL_BAR_UNPACK(low, high, ulong) \ | ||
| 474 | (XSETINT ((low), (ulong) & 0xffff), \ | ||
| 475 | XSETINT ((high), (ulong) >> 16)) | ||
| 476 | |||
| 477 | |||
| 478 | /* Extract the Mac control handle of the scroll bar from a struct | ||
| 479 | scroll_bar. */ | ||
| 480 | #define SCROLL_BAR_CONTROL_REF(ptr) \ | ||
| 481 | ((ControlRef) SCROLL_BAR_PACK ((ptr)->control_ref_low, \ | ||
| 482 | (ptr)->control_ref_high)) | ||
| 483 | |||
| 484 | /* Store a Mac control handle in a struct scroll_bar. */ | ||
| 485 | #define SET_SCROLL_BAR_CONTROL_REF(ptr, ref) \ | ||
| 486 | (SCROLL_BAR_UNPACK ((ptr)->control_ref_low, \ | ||
| 487 | (ptr)->control_ref_high, (unsigned long) (ref))) | ||
| 488 | |||
| 489 | /* Return the inside width of a vertical scroll bar, given the outside | ||
| 490 | width. */ | ||
| 491 | #define VERTICAL_SCROLL_BAR_INSIDE_WIDTH(f, width) \ | ||
| 492 | ((width) \ | ||
| 493 | - VERTICAL_SCROLL_BAR_LEFT_BORDER \ | ||
| 494 | - VERTICAL_SCROLL_BAR_RIGHT_BORDER \ | ||
| 495 | - VERTICAL_SCROLL_BAR_WIDTH_TRIM * 2) | ||
| 496 | |||
| 497 | /* Return the length of the rectangle within which the top of the | ||
| 498 | handle must stay. This isn't equivalent to the inside height, | ||
| 499 | because the scroll bar handle has a minimum height. | ||
| 500 | |||
| 501 | This is the real range of motion for the scroll bar, so when we're | ||
| 502 | scaling buffer positions to scroll bar positions, we use this, not | ||
| 503 | VERTICAL_SCROLL_BAR_INSIDE_HEIGHT. */ | ||
| 504 | #define VERTICAL_SCROLL_BAR_TOP_RANGE(f,height) \ | ||
| 505 | (VERTICAL_SCROLL_BAR_INSIDE_HEIGHT (f, height) \ | ||
| 506 | - VERTICAL_SCROLL_BAR_MIN_HANDLE - UP_AND_DOWN_ARROWS) | ||
| 507 | |||
| 508 | /* Return the inside height of vertical scroll bar, given the outside | ||
| 509 | height. See VERTICAL_SCROLL_BAR_TOP_RANGE too. */ | ||
| 510 | #define VERTICAL_SCROLL_BAR_INSIDE_HEIGHT(f,height) \ | ||
| 511 | ((height) - VERTICAL_SCROLL_BAR_TOP_BORDER \ | ||
| 512 | - VERTICAL_SCROLL_BAR_BOTTOM_BORDER) | ||
| 513 | |||
| 514 | |||
| 515 | /* Border widths for scroll bars. | ||
| 516 | |||
| 517 | Scroll bar windows don't have any borders; their border width is | ||
| 518 | set to zero, and we redraw borders ourselves. This makes the code | ||
| 519 | a bit cleaner, since we don't have to convert between outside width | ||
| 520 | (used when relating to the rest of the screen) and inside width | ||
| 521 | (used when sizing and drawing the scroll bar window itself). | ||
| 522 | |||
| 523 | The handle moves up and down/back and forth in a rectangle inset | ||
| 524 | from the edges of the scroll bar. These are widths by which we | ||
| 525 | inset the handle boundaries from the scroll bar edges. */ | ||
| 526 | #define VERTICAL_SCROLL_BAR_LEFT_BORDER (0) | ||
| 527 | #define VERTICAL_SCROLL_BAR_RIGHT_BORDER (0) | ||
| 528 | #define VERTICAL_SCROLL_BAR_TOP_BORDER (0) | ||
| 529 | #define VERTICAL_SCROLL_BAR_BOTTOM_BORDER (0) | ||
| 530 | |||
| 531 | /* Minimum lengths for scroll bar handles, in pixels. */ | ||
| 532 | #define VERTICAL_SCROLL_BAR_MIN_HANDLE (16) | ||
| 533 | |||
| 534 | /* Combined length of up and down arrow boxes in scroll bars, in pixels. */ | ||
| 535 | #define UP_AND_DOWN_ARROWS (32) | ||
| 536 | |||
| 537 | /* Trimming off a few pixels from each side prevents | ||
| 538 | text from glomming up against the scroll bar */ | ||
| 539 | #define VERTICAL_SCROLL_BAR_WIDTH_TRIM (0) | ||
| 540 | |||
| 541 | /* Variations of possible Aqua scroll bar width. */ | ||
| 542 | #define MAC_AQUA_VERTICAL_SCROLL_BAR_WIDTH (15) | ||
| 543 | #define MAC_AQUA_SMALL_VERTICAL_SCROLL_BAR_WIDTH (11) | ||
| 544 | |||
| 545 | /* Size of hourglass controls */ | ||
| 546 | #define HOURGLASS_WIDTH (15) | ||
| 547 | #define HOURGLASS_HEIGHT (15) | ||
| 548 | |||
| 549 | /* Some constants that are used locally. */ | ||
| 550 | /* Creator code for Emacs on Mac OS. */ | ||
| 551 | enum { | ||
| 552 | MAC_EMACS_CREATOR_CODE = 'EMAx' | ||
| 553 | }; | ||
| 554 | |||
| 555 | /* Apple event descriptor types */ | ||
| 556 | enum { | ||
| 557 | TYPE_FILE_NAME = 'fNam' | ||
| 558 | }; | ||
| 559 | |||
| 560 | /* Keywords for Apple event attributes */ | ||
| 561 | enum { | ||
| 562 | KEY_EMACS_SUSPENSION_ID_ATTR = 'esId' /* typeUInt32 */ | ||
| 563 | }; | ||
| 564 | |||
| 565 | /* Carbon event parameter names. */ | ||
| 566 | enum { | ||
| 567 | EVENT_PARAM_TEXT_INPUT_SEQUENCE_NUMBER = 'tsSn' /* typeUInt32 */ | ||
| 568 | }; | ||
| 569 | |||
| 570 | /* Some constants that are not defined in older versions. */ | ||
| 571 | #if MAC_OS_X_VERSION_MAX_ALLOWED < 1030 | ||
| 572 | /* Keywords for Apple event attributes */ | ||
| 573 | enum { | ||
| 574 | keyReplyRequestedAttr = 'repq' | ||
| 575 | }; | ||
| 576 | #endif | ||
| 577 | |||
| 578 | #if 0 | ||
| 579 | /* We can't determine the availability of these enumerators by | ||
| 580 | MAC_OS_X_VERSION_MAX_ALLOWED, because they are defined in | ||
| 581 | MacOSX10.3.9.sdk for Mac OS X 10.4, but not in Mac OS X 10.3. */ | ||
| 582 | #if MAC_OS_X_VERSION_MAX_ALLOWED < 1040 | ||
| 583 | /* Gestalt selectors */ | ||
| 584 | enum { | ||
| 585 | gestaltSystemVersionMajor = 'sys1', | ||
| 586 | gestaltSystemVersionMinor = 'sys2', | ||
| 587 | gestaltSystemVersionBugFix = 'sys3' | ||
| 588 | }; | ||
| 589 | #endif | ||
| 590 | #endif | ||
| 591 | |||
| 592 | #ifdef MAC_OSX | ||
| 593 | #if MAC_OS_X_VERSION_MAX_ALLOWED < 1020 | ||
| 594 | /* Apple event descriptor types */ | ||
| 595 | enum { | ||
| 596 | typeUTF8Text = 'utf8' | ||
| 597 | }; | ||
| 598 | |||
| 599 | /* Carbon event parameter names */ | ||
| 600 | enum { | ||
| 601 | kEventParamWindowMouseLocation = 'wmou' | ||
| 602 | }; | ||
| 603 | #endif | ||
| 604 | |||
| 605 | /* kCGBitmapByteOrder32Host is defined in Universal SDK for 10.4 but | ||
| 606 | not in PPC SDK for 10.4.0. */ | ||
| 607 | #if MAC_OS_X_VERSION_MAX_ALLOWED < 1050 && !defined (kCGBitmapByteOrder32Host) | ||
| 608 | #define kCGBitmapByteOrder32Host 0 | ||
| 609 | #endif | ||
| 610 | #endif /* MAC_OSX */ | ||
| 611 | |||
| 612 | struct frame; | ||
| 613 | struct face; | ||
| 614 | struct image; | ||
| 615 | |||
| 616 | Lisp_Object display_x_get_resource P_ ((struct x_display_info *, | ||
| 617 | Lisp_Object, Lisp_Object, | ||
| 618 | Lisp_Object, Lisp_Object)); | ||
| 619 | struct frame *check_x_frame P_ ((Lisp_Object)); | ||
| 620 | EXFUN (Fx_display_color_p, 1); | ||
| 621 | EXFUN (Fx_display_grayscale_p, 1); | ||
| 622 | EXFUN (Fx_display_planes, 1); | ||
| 623 | extern void x_free_gcs P_ ((struct frame *)); | ||
| 624 | extern int XParseGeometry P_ ((char *, int *, int *, unsigned int *, | ||
| 625 | unsigned int *)); | ||
| 626 | |||
| 627 | /* Defined in macterm.c. */ | ||
| 628 | |||
| 629 | extern void x_set_window_size P_ ((struct frame *, int, int, int)); | ||
| 630 | extern void x_set_mouse_position P_ ((struct frame *, int, int)); | ||
| 631 | extern void x_set_mouse_pixel_position P_ ((struct frame *, int, int)); | ||
| 632 | extern void x_raise_frame P_ ((struct frame *)); | ||
| 633 | extern void x_lower_frame P_ ((struct frame *)); | ||
| 634 | extern void x_make_frame_visible P_ ((struct frame *)); | ||
| 635 | extern void x_make_frame_invisible P_ ((struct frame *)); | ||
| 636 | extern void x_iconify_frame P_ ((struct frame *)); | ||
| 637 | extern void x_free_frame_resources P_ ((struct frame *)); | ||
| 638 | extern void x_destroy_window P_ ((struct frame *)); | ||
| 639 | extern void x_wm_set_size_hint P_ ((struct frame *, long, int)); | ||
| 640 | extern void x_delete_display P_ ((struct x_display_info *)); | ||
| 641 | extern void mac_initialize P_ ((void)); | ||
| 642 | extern Pixmap XCreatePixmap P_ ((Display *, Window, unsigned int, | ||
| 643 | unsigned int, unsigned int)); | ||
| 644 | extern Pixmap XCreatePixmapFromBitmapData P_ ((Display *, Window, char *, | ||
| 645 | unsigned int, unsigned int, | ||
| 646 | unsigned long, unsigned long, | ||
| 647 | unsigned int)); | ||
| 648 | extern void XFreePixmap P_ ((Display *, Pixmap)); | ||
| 649 | extern GC XCreateGC P_ ((Display *, void *, unsigned long, XGCValues *)); | ||
| 650 | extern void XFreeGC P_ ((Display *, GC)); | ||
| 651 | extern void XSetForeground P_ ((Display *, GC, unsigned long)); | ||
| 652 | extern void XSetBackground P_ ((Display *, GC, unsigned long)); | ||
| 653 | extern void XDrawLine P_ ((Display *, Pixmap, GC, int, int, int, int)); | ||
| 654 | extern void mac_clear_area P_ ((struct frame *, int, int, | ||
| 655 | unsigned int, unsigned int)); | ||
| 656 | extern void mac_unload_font P_ ((struct mac_display_info *, XFontStruct *)); | ||
| 657 | extern OSStatus mac_post_mouse_moved_event P_ ((void)); | ||
| 658 | extern int mac_quit_char_key_p P_ ((UInt32, UInt32)); | ||
| 659 | |||
| 660 | #define FONT_TYPE_FOR_UNIBYTE(font, ch) 0 | ||
| 661 | #define FONT_TYPE_FOR_MULTIBYTE(font, ch) 0 | ||
| 662 | |||
| 663 | #if USE_MAC_IMAGE_IO | ||
| 664 | extern CGColorSpaceRef mac_cg_color_space_rgb; | ||
| 665 | #endif | ||
| 666 | |||
| 667 | /* Defined in macselect.c */ | ||
| 668 | |||
| 669 | extern void x_clear_frame_selections P_ ((struct frame *)); | ||
| 670 | EXFUN (Fx_selection_owner_p, 1); | ||
| 671 | |||
| 672 | /* Defined in macfns.c */ | ||
| 673 | |||
| 674 | extern void x_real_positions P_ ((struct frame *, int *, int *)); | ||
| 675 | extern void x_set_menu_bar_lines P_ ((struct frame *, Lisp_Object, Lisp_Object)); | ||
| 676 | extern int x_pixel_width P_ ((struct frame *)); | ||
| 677 | extern int x_pixel_height P_ ((struct frame *)); | ||
| 678 | extern int x_char_width P_ ((struct frame *)); | ||
| 679 | extern int x_char_height P_ ((struct frame *)); | ||
| 680 | extern void x_sync P_ ((struct frame *)); | ||
| 681 | extern void x_set_tool_bar_lines P_ ((struct frame *, Lisp_Object, Lisp_Object)); | ||
| 682 | extern void mac_update_title_bar P_ ((struct frame *, int)); | ||
| 683 | extern Lisp_Object x_get_focus_frame P_ ((struct frame *)); | ||
| 684 | |||
| 685 | /* Defined in mac.c. */ | ||
| 686 | |||
| 687 | extern void mac_clear_font_name_table P_ ((void)); | ||
| 688 | extern Lisp_Object mac_aedesc_to_lisp P_ ((const AEDesc *)); | ||
| 689 | extern OSErr mac_ae_put_lisp P_ ((AEDescList *, UInt32, Lisp_Object)); | ||
| 690 | #if TARGET_API_MAC_CARBON | ||
| 691 | extern OSErr create_apple_event P_ ((AEEventClass, AEEventID, AppleEvent *)); | ||
| 692 | extern Lisp_Object mac_event_parameters_to_lisp P_ ((EventRef, UInt32, | ||
| 693 | const EventParamName *, | ||
| 694 | const EventParamType *)); | ||
| 695 | extern CFStringRef cfstring_create_with_utf8_cstring P_ ((const char *)); | ||
| 696 | extern CFStringRef cfstring_create_with_string P_ ((Lisp_Object)); | ||
| 697 | extern Lisp_Object cfdata_to_lisp P_ ((CFDataRef)); | ||
| 698 | extern Lisp_Object cfstring_to_lisp_nodecode P_ ((CFStringRef)); | ||
| 699 | extern Lisp_Object cfstring_to_lisp P_ ((CFStringRef)); | ||
| 700 | extern Lisp_Object cfnumber_to_lisp P_ ((CFNumberRef)); | ||
| 701 | extern Lisp_Object cfdate_to_lisp P_ ((CFDateRef)); | ||
| 702 | extern Lisp_Object cfboolean_to_lisp P_ ((CFBooleanRef)); | ||
| 703 | extern Lisp_Object cfobject_desc_to_lisp P_ ((CFTypeRef)); | ||
| 704 | extern Lisp_Object cfproperty_list_to_lisp P_ ((CFPropertyListRef, int, int)); | ||
| 705 | extern void mac_wakeup_from_rne P_ ((void)); | ||
| 706 | #endif | ||
| 707 | extern void xrm_merge_string_database P_ ((XrmDatabase, const char *)); | ||
| 708 | extern Lisp_Object xrm_get_resource P_ ((XrmDatabase, const char *, | ||
| 709 | const char *)); | ||
| 710 | extern XrmDatabase xrm_get_preference_database P_ ((const char *)); | ||
| 711 | EXFUN (Fmac_get_preference, 4); | ||
| 712 | |||
| 713 | /* Defined in mactoolbox.c. */ | ||
| 714 | |||
| 715 | extern void mac_alert_sound_play P_ ((void)); | ||
| 716 | extern OSStatus install_application_handler P_ ((void)); | ||
| 717 | extern void mac_get_window_bounds P_ ((struct frame *, Rect *, Rect *)); | ||
| 718 | extern Rect *mac_get_frame_bounds P_ ((struct frame *, Rect *)); | ||
| 719 | extern void mac_get_frame_mouse P_ ((struct frame *, Point *)); | ||
| 720 | extern void mac_convert_frame_point_to_global P_ ((struct frame *, int *, | ||
| 721 | int *)); | ||
| 722 | #if TARGET_API_MAC_CARBON | ||
| 723 | extern void mac_update_proxy_icon P_ ((struct frame *)); | ||
| 724 | #endif | ||
| 725 | extern void mac_set_frame_window_background P_ ((struct frame *, | ||
| 726 | unsigned long)); | ||
| 727 | extern void mac_update_begin P_ ((struct frame *)); | ||
| 728 | extern void mac_update_end P_ ((struct frame *)); | ||
| 729 | extern void mac_frame_up_to_date P_ ((struct frame *)); | ||
| 730 | extern void x_flush P_ ((struct frame *)); | ||
| 731 | extern void mac_create_frame_window P_ ((struct frame *, int)); | ||
| 732 | extern void mac_dispose_frame_window P_ ((struct frame *)); | ||
| 733 | #if USE_CG_DRAWING | ||
| 734 | extern CGContextRef mac_begin_cg_clip P_ ((struct frame *, GC)); | ||
| 735 | extern void mac_end_cg_clip P_ ((struct frame *)); | ||
| 736 | #endif | ||
| 737 | extern void mac_begin_clip P_ ((struct frame *, GC)); | ||
| 738 | extern void mac_end_clip P_ ((struct frame *, GC)); | ||
| 739 | extern void mac_create_scroll_bar P_ ((struct scroll_bar *, const Rect *, | ||
| 740 | Boolean)); | ||
| 741 | extern void mac_dispose_scroll_bar P_ ((struct scroll_bar *)); | ||
| 742 | extern void mac_set_scroll_bar_bounds P_ ((struct scroll_bar *, const Rect *)); | ||
| 743 | extern void mac_redraw_scroll_bar P_ ((struct scroll_bar *)); | ||
| 744 | #ifdef USE_TOOLKIT_SCROLL_BARS | ||
| 745 | extern void x_set_toolkit_scroll_bar_thumb P_ ((struct scroll_bar *, | ||
| 746 | int, int, int)); | ||
| 747 | #else | ||
| 748 | extern void x_scroll_bar_set_handle P_ ((scroll_bar *, int, int, int)); | ||
| 749 | #endif | ||
| 750 | #if USE_MAC_FONT_PANEL | ||
| 751 | extern int mac_font_panel_visible_p P_ ((void)); | ||
| 752 | extern OSStatus mac_show_hide_font_panel P_ ((void)); | ||
| 753 | extern OSStatus mac_set_font_info_for_selection P_ ((struct frame *, int, int)); | ||
| 754 | #endif | ||
| 755 | #ifdef MAC_OSX | ||
| 756 | extern Boolean mac_run_loop_run_once P_ ((EventTimeout)); | ||
| 757 | #endif | ||
| 758 | #if USE_MAC_TOOLBAR | ||
| 759 | extern void update_frame_tool_bar P_ ((FRAME_PTR f)); | ||
| 760 | extern void free_frame_tool_bar P_ ((FRAME_PTR f)); | ||
| 761 | #endif | ||
| 762 | #if TARGET_API_MAC_CARBON | ||
| 763 | extern void mac_show_hourglass P_ ((struct frame *)); | ||
| 764 | extern void mac_hide_hourglass P_ ((struct frame *)); | ||
| 765 | extern void mac_reposition_hourglass P_ ((struct frame *)); | ||
| 766 | extern Lisp_Object mac_file_dialog P_ ((Lisp_Object, Lisp_Object, Lisp_Object, | ||
| 767 | Lisp_Object, Lisp_Object)); | ||
| 768 | #endif | ||
| 769 | extern void x_activate_menubar P_ ((struct frame *)); | ||
| 770 | extern void free_frame_menubar P_ ((struct frame *)); | ||
| 771 | extern void mac_fill_menubar P_ ((widget_value *, int)); | ||
| 772 | extern void create_and_show_popup_menu P_ ((FRAME_PTR, widget_value *, | ||
| 773 | int, int, int)); | ||
| 774 | #if TARGET_API_MAC_CARBON | ||
| 775 | extern void create_and_show_dialog P_ ((FRAME_PTR, widget_value *)); | ||
| 776 | #else | ||
| 777 | extern int mac_dialog P_ ((widget_value *)); | ||
| 778 | #endif | ||
| 779 | extern OSStatus mac_get_selection_from_symbol P_ ((Lisp_Object, int, | ||
| 780 | Selection *)); | ||
| 781 | extern int mac_valid_selection_target_p P_ ((Lisp_Object)); | ||
| 782 | extern OSStatus mac_clear_selection P_ ((Selection *)); | ||
| 783 | extern Lisp_Object mac_get_selection_ownership_info P_ ((Selection)); | ||
| 784 | extern int mac_valid_selection_value_p P_ ((Lisp_Object, Lisp_Object)); | ||
| 785 | extern OSStatus mac_put_selection_value P_ ((Selection, Lisp_Object, | ||
| 786 | Lisp_Object)); | ||
| 787 | extern int mac_selection_has_target_p P_ ((Selection, Lisp_Object)); | ||
| 788 | extern Lisp_Object mac_get_selection_value P_ ((Selection, Lisp_Object)); | ||
| 789 | extern Lisp_Object mac_get_selection_target_list P_ ((Selection)); | ||
| 790 | #if TARGET_API_MAC_CARBON | ||
| 791 | extern Lisp_Object mac_dnd_default_known_types P_ ((void)); | ||
| 792 | #endif | ||
| 793 | |||
| 794 | /* arch-tag: 6b4ca125-5bef-476d-8ee8-31ed808b7e79 | ||
| 795 | (do not change this comment) */ | ||