Mercurial > hg > xemacs-beta
comparison src/frame.c @ 16:0293115a14e9 r19-15b91
Import from CVS: tag r19-15b91
author | cvs |
---|---|
date | Mon, 13 Aug 2007 08:49:20 +0200 |
parents | ac2d302a0011 |
children | 859a2309aef8 |
comparison
equal
deleted
inserted
replaced
15:ad457d5f7d04 | 16:0293115a14e9 |
---|---|
153 | 153 |
154 ((markobj) (f->toolbar_visible_p[0])); | 154 ((markobj) (f->toolbar_visible_p[0])); |
155 ((markobj) (f->toolbar_visible_p[1])); | 155 ((markobj) (f->toolbar_visible_p[1])); |
156 ((markobj) (f->toolbar_visible_p[2])); | 156 ((markobj) (f->toolbar_visible_p[2])); |
157 ((markobj) (f->toolbar_visible_p[3])); | 157 ((markobj) (f->toolbar_visible_p[3])); |
158 #endif | 158 #endif /* HAVE_TOOLBARS */ |
159 | 159 |
160 if (FRAME_LIVE_P (f)) /* device is nil for a dead frame */ | 160 if (FRAME_LIVE_P (f)) /* device is nil for a dead frame */ |
161 MAYBE_FRAMEMETH (f, mark_frame, (f, markobj)); | 161 MAYBE_FRAMEMETH (f, mark_frame, (f, markobj)); |
162 | 162 |
163 return Qnil; | 163 return Qnil; |
169 struct frame *frm = XFRAME (obj); | 169 struct frame *frm = XFRAME (obj); |
170 char buf[200]; | 170 char buf[200]; |
171 | 171 |
172 if (print_readably) | 172 if (print_readably) |
173 error ("printing unreadable object #<frame %s 0x%x>", | 173 error ("printing unreadable object #<frame %s 0x%x>", |
174 string_data (XSTRING (frm->name)), frm->header.uid); | 174 XSTRING_DATA (frm->name), frm->header.uid); |
175 | 175 |
176 sprintf (buf, "#<%s-frame ", !FRAME_LIVE_P (frm) ? "dead" : | 176 sprintf (buf, "#<%s-frame ", !FRAME_LIVE_P (frm) ? "dead" : |
177 FRAME_TYPE_NAME (frm)); | 177 FRAME_TYPE_NAME (frm)); |
178 write_c_string (buf, printcharfun); | 178 write_c_string (buf, printcharfun); |
179 print_internal (frm->name, printcharfun, 1); | 179 print_internal (frm->name, printcharfun, 1); |
202 | 202 |
203 f->toolbar_visible_p[0] = Qnil; | 203 f->toolbar_visible_p[0] = Qnil; |
204 f->toolbar_visible_p[1] = Qnil; | 204 f->toolbar_visible_p[1] = Qnil; |
205 f->toolbar_visible_p[2] = Qnil; | 205 f->toolbar_visible_p[2] = Qnil; |
206 f->toolbar_visible_p[3] = Qnil; | 206 f->toolbar_visible_p[3] = Qnil; |
207 #endif | 207 #endif /* HAVE_TOOLBARS */ |
208 } | 208 } |
209 | 209 |
210 /* Allocate a new frame object and set all its fields to reasonable | 210 /* Allocate a new frame object and set all its fields to reasonable |
211 values. The root window is created but the minibuffer will be done | 211 values. The root window is created but the minibuffer will be done |
212 later. */ | 212 later. */ |
339 Avoid infinite looping on the window chain by marking next pointer | 339 Avoid infinite looping on the window chain by marking next pointer |
340 as nil. */ | 340 as nil. */ |
341 | 341 |
342 mini_window = f->minibuffer_window = f->root_window; | 342 mini_window = f->minibuffer_window = f->root_window; |
343 XWINDOW (mini_window)->mini_p = Qt; | 343 XWINDOW (mini_window)->mini_p = Qt; |
344 XWINDOW (mini_window)->next = Qnil; | 344 XWINDOW (mini_window)->next = Qnil; |
345 XWINDOW (mini_window)->prev = Qnil; | 345 XWINDOW (mini_window)->prev = Qnil; |
346 XWINDOW (mini_window)->frame = frame; | 346 XWINDOW (mini_window)->frame = frame; |
347 | 347 |
348 /* Put the proper buffer in that window. */ | 348 /* Put the proper buffer in that window. */ |
349 | 349 |
350 Fset_window_buffer (mini_window, Vminibuffer_zero); | 350 Fset_window_buffer (mini_window, Vminibuffer_zero); |
351 } | 351 } |
554 struct frame * | 554 struct frame * |
555 decode_frame (Lisp_Object frame) | 555 decode_frame (Lisp_Object frame) |
556 { | 556 { |
557 if (NILP (frame)) | 557 if (NILP (frame)) |
558 return selected_frame (); | 558 return selected_frame (); |
559 else | 559 |
560 { | 560 CHECK_LIVE_FRAME (frame); |
561 CHECK_LIVE_FRAME (frame); | 561 return (XFRAME (frame)); |
562 return (XFRAME (frame)); | |
563 } | |
564 } | 562 } |
565 | 563 |
566 struct frame * | 564 struct frame * |
567 decode_frame_or_selected (Lisp_Object cdf) | 565 decode_frame_or_selected (Lisp_Object cdf) |
568 { | 566 { |
619 frame this is. Use the cleaner function `frame-type' for that. | 617 frame this is. Use the cleaner function `frame-type' for that. |
620 */ ) | 618 */ ) |
621 (object) | 619 (object) |
622 Lisp_Object object; | 620 Lisp_Object object; |
623 { | 621 { |
624 if (!FRAMEP (object)) | 622 return FRAMEP (object) ? Qt : Qnil; |
625 return Qnil; | |
626 return Qt; | |
627 } | 623 } |
628 | 624 |
629 DEFUN ("frame-live-p", Fframe_live_p, Sframe_live_p, 1, 1, 0 /* | 625 DEFUN ("frame-live-p", Fframe_live_p, Sframe_live_p, 1, 1, 0 /* |
630 Return non-nil if OBJECT is a frame which has not been deleted. | 626 Return non-nil if OBJECT is a frame which has not been deleted. |
631 */ ) | 627 */ ) |
632 (object) | 628 (object) |
633 Lisp_Object object; | 629 Lisp_Object object; |
634 { | 630 { |
635 if (FRAMEP (object) && FRAME_LIVE_P (XFRAME (object))) | 631 return FRAMEP (object) && FRAME_LIVE_P (XFRAME (object)) ? Qt : Qnil; |
636 return Qt; | |
637 return Qnil; | |
638 } | 632 } |
639 | 633 |
640 | 634 |
641 /* Called from Fselect_window() */ | 635 /* Called from Fselect_window() */ |
642 void | 636 void |
923 #endif | 917 #endif |
924 | 918 |
925 if (NILP (type)) | 919 if (NILP (type)) |
926 type = Qnomini; | 920 type = Qnomini; |
927 if (ZEROP (type)) | 921 if (ZEROP (type)) |
928 type = Qiconic; | 922 type = Qvisible_iconic; |
929 | 923 |
930 if (EQ (type, Qvisible)) | 924 if (EQ (type, Qvisible)) |
931 return FRAME_VISIBLE_P (f); | 925 return FRAME_VISIBLE_P (f); |
932 if (EQ (type, Qiconic)) | 926 if (EQ (type, Qiconic)) |
933 return FRAME_ICONIFIED_P (f); | 927 return FRAME_ICONIFIED_P (f); |
1202 any other frames exist.) */ | 1196 any other frames exist.) */ |
1203 | 1197 |
1204 static int | 1198 static int |
1205 other_visible_frames_internal (struct frame *f, int called_from_delete_device) | 1199 other_visible_frames_internal (struct frame *f, int called_from_delete_device) |
1206 { | 1200 { |
1207 Lisp_Object frame = Qnil; | 1201 Lisp_Object frame; |
1208 | 1202 |
1209 XSETFRAME (frame, f); | 1203 XSETFRAME (frame, f); |
1210 if (FRAME_STREAM_P (f)) | 1204 if (FRAME_STREAM_P (f)) |
1211 return !EQ (frame, next_frame_internal (frame, Qt, Qt, | 1205 return !EQ (frame, next_frame_internal (frame, Qt, Qt, |
1212 called_from_delete_device)); | 1206 called_from_delete_device)); |
1240 { | 1234 { |
1241 /* This function can GC */ | 1235 /* This function can GC */ |
1242 int minibuffer_selected; | 1236 int minibuffer_selected; |
1243 struct device *d; | 1237 struct device *d; |
1244 struct console *con; | 1238 struct console *con; |
1245 Lisp_Object frame = Qnil; | 1239 Lisp_Object frame; |
1246 Lisp_Object device; | 1240 Lisp_Object device; |
1247 Lisp_Object console; | 1241 Lisp_Object console; |
1248 struct gcpro gcpro1; | 1242 struct gcpro gcpro1; |
1249 | 1243 |
1250 /* OK to delete an already deleted frame. */ | 1244 /* OK to delete an already deleted frame. */ |
1302 ("Attempt to delete a surrogate minibuffer frame", frame); | 1296 ("Attempt to delete a surrogate minibuffer frame", frame); |
1303 } | 1297 } |
1304 } | 1298 } |
1305 } | 1299 } |
1306 | 1300 |
1301 /* Before here, we haven't made any dangerous changes (just checked for | |
1302 error conditions). Now run the delete-frame-hook. Remember that | |
1303 user code there could do any number of dangerous things, including | |
1304 signalling an error. */ | |
1305 | |
1306 va_run_hook_with_args (Qdelete_frame_hook, 1, frame); | |
1307 | |
1308 if (!FRAME_LIVE_P (f)) /* Make sure the delete-frame-hook didn't */ | |
1309 { /* go ahead and delete anything. */ | |
1310 UNGCPRO; | |
1311 return; | |
1312 } | |
1313 | |
1314 /* Call the delete-device-hook and delete-console-hook now if | |
1315 appropriate, before we do any dangerous things -- they too could | |
1316 signal an error. */ | |
1317 if (XINT (Flength (DEVICE_FRAME_LIST (d))) == 1) | |
1318 { | |
1319 va_run_hook_with_args (Qdelete_device_hook, 1, device); | |
1320 if (!FRAME_LIVE_P (f)) /* Make sure the delete-device-hook didn't */ | |
1321 { /* go ahead and delete anything. */ | |
1322 UNGCPRO; | |
1323 return; | |
1324 } | |
1325 | |
1326 if (XINT (Flength (CONSOLE_DEVICE_LIST (con))) == 1) | |
1327 { | |
1328 va_run_hook_with_args (Qdelete_console_hook, 1, console); | |
1329 if (!FRAME_LIVE_P (f)) /* Make sure the delete-console-hook didn't */ | |
1330 { /* go ahead and delete anything. */ | |
1331 UNGCPRO; | |
1332 return; | |
1333 } | |
1334 } | |
1335 } | |
1336 | |
1307 minibuffer_selected = EQ (minibuf_window, Fselected_window (Qnil)); | 1337 minibuffer_selected = EQ (minibuf_window, Fselected_window (Qnil)); |
1308 | 1338 |
1309 /* If we were focused on this frame, then we're not any more. | 1339 /* If we were focused on this frame, then we're not any more. |
1310 Assume that we lost the focus; that way, the call to | 1340 Assume that we lost the focus; that way, the call to |
1311 Fselect_frame() below won't end up making us explicitly | 1341 Fselect_frame() below won't end up making us explicitly |
1327 if (EQ (frame, DEVICE_FRAME_WITH_FOCUS_FOR_HOOKS (d))) | 1357 if (EQ (frame, DEVICE_FRAME_WITH_FOCUS_FOR_HOOKS (d))) |
1328 DEVICE_FRAME_WITH_FOCUS_FOR_HOOKS (d) = Qnil; | 1358 DEVICE_FRAME_WITH_FOCUS_FOR_HOOKS (d) = Qnil; |
1329 if (EQ (frame, DEVICE_FRAME_THAT_OUGHT_TO_HAVE_FOCUS (d))) | 1359 if (EQ (frame, DEVICE_FRAME_THAT_OUGHT_TO_HAVE_FOCUS (d))) |
1330 DEVICE_FRAME_THAT_OUGHT_TO_HAVE_FOCUS (d) = Qnil; | 1360 DEVICE_FRAME_THAT_OUGHT_TO_HAVE_FOCUS (d) = Qnil; |
1331 | 1361 |
1332 /* Don't allow deleted frame to remain selected. | 1362 /* Don't allow the deleted frame to remain selected. |
1333 Note that in the former scheme of things, this would | 1363 Note that in the former scheme of things, this would |
1334 have caused us to regain the focus. This no longer | 1364 have caused us to regain the focus. This no longer |
1335 applies (see above); I think the new behavior is more | 1365 applies (see above); I think the new behavior is more |
1336 logical. If someone disagrees, it can always be | 1366 logical. If someone disagrees, it can always be |
1337 changed (or a new user variable can be introduced, | 1367 changed (or a new user variable can be introduced, ugh.) */ |
1338 ugh.) */ | |
1339 if (EQ (frame, DEVICE_SELECTED_FRAME (d))) | 1368 if (EQ (frame, DEVICE_SELECTED_FRAME (d))) |
1340 { | 1369 { |
1341 Lisp_Object next; | 1370 Lisp_Object next; |
1342 | 1371 |
1343 /* If this is a popup frame, select its parent if possible. | 1372 /* If this is a popup frame, select its parent if possible. |
1382 select the new one. */ | 1411 select the new one. */ |
1383 if (minibuffer_selected) | 1412 if (minibuffer_selected) |
1384 Fselect_window (minibuf_window); | 1413 Fselect_window (minibuf_window); |
1385 } | 1414 } |
1386 | 1415 |
1387 /* Before here, we haven't made any dangerous changes (just checked for | |
1388 error conditions). Now run the delete-frame-hook. Remember that | |
1389 user code there could do any number of dangerous things, including | |
1390 signalling an error. | |
1391 */ | |
1392 | |
1393 va_run_hook_with_args (Qdelete_frame_hook, 1, frame); | |
1394 | |
1395 if (!FRAME_LIVE_P (f)) /* make sure the delete-frame-hook didn't | |
1396 go ahead and delete anything */ | |
1397 { | |
1398 UNGCPRO; | |
1399 return; | |
1400 } | |
1401 | |
1402 /* Call the delete-device-hook and delete-console-hook now if | |
1403 appropriate, before we do any dangerous things -- they too could | |
1404 signal an error. */ | |
1405 if (XINT (Flength (DEVICE_FRAME_LIST (d))) == 1) | |
1406 { | |
1407 va_run_hook_with_args (Qdelete_device_hook, 1, device); | |
1408 if (!FRAME_LIVE_P (f)) /* make sure the delete-device-hook didn't | |
1409 go ahead and delete anything */ | |
1410 { | |
1411 UNGCPRO; | |
1412 return; | |
1413 } | |
1414 | |
1415 if (XINT (Flength (CONSOLE_DEVICE_LIST (con))) == 1) | |
1416 { | |
1417 va_run_hook_with_args (Qdelete_console_hook, 1, console); | |
1418 if (!FRAME_LIVE_P (f)) /* make sure the delete-console-hook didn't | |
1419 go ahead and delete anything */ | |
1420 { | |
1421 UNGCPRO; | |
1422 return; | |
1423 } | |
1424 } | |
1425 } | |
1426 | |
1427 | |
1428 /* After this point, no errors must be allowed to occur. */ | 1416 /* After this point, no errors must be allowed to occur. */ |
1429 | 1417 |
1430 #ifdef HAVE_MENUBARS | 1418 #ifdef HAVE_MENUBARS |
1431 free_frame_menubars (f); | 1419 free_frame_menubars (f); |
1432 #endif | 1420 #endif |
1445 remove the reference to them. */ | 1433 remove the reference to them. */ |
1446 delete_all_subwindows (XWINDOW (f->root_window)); | 1434 delete_all_subwindows (XWINDOW (f->root_window)); |
1447 f->root_window = Qnil; | 1435 f->root_window = Qnil; |
1448 | 1436 |
1449 /* Remove the frame now from the list. This way, any events generated | 1437 /* Remove the frame now from the list. This way, any events generated |
1450 on this frame by the maneuvers below will disperse themselves. | 1438 on this frame by the maneuvers below will disperse themselves. */ |
1451 */ | 1439 |
1452 | 1440 /* This used to be Fdelq(), but that will cause a seg fault if the |
1453 { | 1441 QUIT checker happens to get invoked, because the frame list is in |
1454 /* This used to be Fdelq(), but that will cause a seg fault if the | 1442 an inconsistent state. */ |
1455 QUIT checker happens to get invoked, because the frame list is | 1443 d->frame_list = delq_no_quit (frame, d->frame_list); |
1456 in an inconsistent state */ | 1444 RESET_CHANGED_SET_FLAGS; |
1457 d->frame_list = delq_no_quit (frame, d->frame_list); | |
1458 RESET_CHANGED_SET_FLAGS; | |
1459 } | |
1460 | 1445 |
1461 f->dead = 1; | 1446 f->dead = 1; |
1462 f->visible = 0; | 1447 f->visible = 0; |
1463 | 1448 |
1464 free_window_mirror (f->root_mirror); | 1449 free_window_mirror (f->root_mirror); |
1496 if (EQ (frame, con->default_minibuffer_frame)) | 1481 if (EQ (frame, con->default_minibuffer_frame)) |
1497 { | 1482 { |
1498 Lisp_Object frmcons, devcons; | 1483 Lisp_Object frmcons, devcons; |
1499 /* The last frame we saw with a minibuffer, minibuffer-only or not. */ | 1484 /* The last frame we saw with a minibuffer, minibuffer-only or not. */ |
1500 Lisp_Object frame_with_minibuf; | 1485 Lisp_Object frame_with_minibuf; |
1501 /* Some frame we found on the same console, or nil if there are | 1486 /* Some frame we found on the same console, or nil if there are none. */ |
1502 none. */ | |
1503 Lisp_Object frame_on_same_console; | 1487 Lisp_Object frame_on_same_console; |
1504 | 1488 |
1505 frame_on_same_console = Qnil; | 1489 frame_on_same_console = Qnil; |
1506 frame_with_minibuf = Qnil; | 1490 frame_with_minibuf = Qnil; |
1507 | 1491 |
1530 | 1514 |
1531 if (!NILP (frame_on_same_console)) | 1515 if (!NILP (frame_on_same_console)) |
1532 { | 1516 { |
1533 /* We know that there must be some frame with a minibuffer out | 1517 /* We know that there must be some frame with a minibuffer out |
1534 there. If this were not true, all of the frames present | 1518 there. If this were not true, all of the frames present |
1535 would have to be minibufferless, which implies that at some | 1519 would have to be minibuffer-less, which implies that at some |
1536 point their minibuffer frames must have been deleted, but | 1520 point their minibuffer frames must have been deleted, but |
1537 that is prohibited at the top; you can't delete surrogate | 1521 that is prohibited at the top; you can't delete surrogate |
1538 minibuffer frames. */ | 1522 minibuffer frames. */ |
1539 if (NILP (frame_with_minibuf)) | 1523 if (NILP (frame_with_minibuf)) |
1540 abort (); | 1524 abort (); |
1546 con->default_minibuffer_frame = Qnil; | 1530 con->default_minibuffer_frame = Qnil; |
1547 } | 1531 } |
1548 | 1532 |
1549 nuke_all_frame_slots (f); /* nobody should be accessing the device | 1533 nuke_all_frame_slots (f); /* nobody should be accessing the device |
1550 or anything else any more, and making | 1534 or anything else any more, and making |
1551 then Qnil allows for better GC'ing | 1535 them Qnil allows for better GC'ing |
1552 in case a pointer to the dead frame | 1536 in case a pointer to the dead frame |
1553 still hangs around. */ | 1537 continues to hang around. */ |
1554 f->framemeths = dead_console_methods; | 1538 f->framemeths = dead_console_methods; |
1555 UNGCPRO; | 1539 UNGCPRO; |
1556 } | 1540 } |
1557 | 1541 |
1558 void | 1542 void |
1659 case -1: | 1643 case -1: |
1660 *frame = DEVICE_SELECTED_FRAME (d); | 1644 *frame = DEVICE_SELECTED_FRAME (d); |
1661 break; | 1645 break; |
1662 | 1646 |
1663 default: | 1647 default: |
1664 abort (); /* hook is incorrectly written */ | 1648 abort (); /* method is incorrectly written */ |
1665 } | 1649 } |
1666 | 1650 |
1667 return 0; | 1651 return 0; |
1668 } | 1652 } |
1669 | 1653 |
1689 | 1673 |
1690 x = y = Qnil; | 1674 x = y = Qnil; |
1691 | 1675 |
1692 if (mouse_pixel_position_1 (d, &frame, &intx, &inty)) | 1676 if (mouse_pixel_position_1 (d, &frame, &intx, &inty)) |
1693 { | 1677 { |
1694 struct window *w = find_window_by_pixel_pos (intx, inty, | 1678 struct window *w = |
1695 XFRAME (frame)-> | 1679 find_window_by_pixel_pos (intx, inty, XFRAME (frame)->root_window); |
1696 root_window); | |
1697 if (!w) | 1680 if (!w) |
1698 window = Qnil; | 1681 window = Qnil; |
1699 else | 1682 else |
1700 { | 1683 { |
1701 XSETWINDOW (window, w); | 1684 XSETWINDOW (window, w); |
3009 */ ); | 2992 */ ); |
3010 Vdeselect_frame_hook = Qnil; | 2993 Vdeselect_frame_hook = Qnil; |
3011 | 2994 |
3012 DEFVAR_LISP ("delete-frame-hook", &Vdelete_frame_hook /* | 2995 DEFVAR_LISP ("delete-frame-hook", &Vdelete_frame_hook /* |
3013 Function or functions to call when a frame is deleted. | 2996 Function or functions to call when a frame is deleted. |
3014 One argument, the to-be-deleted frame. | 2997 One argument, the about-to-be-deleted frame. |
3015 When this hook is called, the selected frame is different from | |
3016 the to-be-deleted frame, and the hook should not change that. | |
3017 */ ); | 2998 */ ); |
3018 Vdelete_frame_hook = Qnil; | 2999 Vdelete_frame_hook = Qnil; |
3019 | 3000 |
3020 DEFVAR_LISP ("create-frame-hook", &Vcreate_frame_hook /* | 3001 DEFVAR_LISP ("create-frame-hook", &Vcreate_frame_hook /* |
3021 Function or functions to call when a frame is created. | 3002 Function or functions to call when a frame is created. |
3022 One argument, the newly-created frame. | 3003 One argument, the newly-created frame. |
3023 */ ); | 3004 */ ); |
3024 Vcreate_frame_hook = Qnil; | 3005 Vcreate_frame_hook = Qnil; |
3025 | 3006 |
3026 DEFVAR_LISP ("mouse-enter-frame-hook", &Vmouse_enter_frame_hook /* | 3007 DEFVAR_LISP ("mouse-enter-frame-hook", &Vmouse_enter_frame_hook /* |
3027 Function or functions to call when mouse enters a frame. | 3008 Function or functions to call when the mouse enters a frame. |
3028 One argument, the frame. | 3009 One argument, the frame. |
3029 Be careful not to make assumptions about the window manger's focus model. | 3010 Be careful not to make assumptions about the window manager's focus model. |
3030 In most cases, the `deselect-frame-hook' is more appropriate. | 3011 In most cases, the `deselect-frame-hook' is more appropriate. |
3031 */ ); | 3012 */ ); |
3032 Vmouse_enter_frame_hook = Qnil; | 3013 Vmouse_enter_frame_hook = Qnil; |
3033 | 3014 |
3034 DEFVAR_LISP ("mouse-leave-frame-hook", &Vmouse_leave_frame_hook /* | 3015 DEFVAR_LISP ("mouse-leave-frame-hook", &Vmouse_leave_frame_hook /* |
3035 Function or functions to call when mouse leaves frame. | 3016 Function or functions to call when the mouse leaves a frame. |
3036 One argument, the frame. | 3017 One argument, the frame. |
3037 Be careful not to make assumptions about the window manger's focus model. | 3018 Be careful not to make assumptions about the window manager's focus model. |
3038 In most cases, the `select-frame-hook' is more appropriate. | 3019 In most cases, the `select-frame-hook' is more appropriate. |
3039 */ ); | 3020 */ ); |
3040 Vmouse_leave_frame_hook = Qnil; | 3021 Vmouse_leave_frame_hook = Qnil; |
3041 | 3022 |
3042 DEFVAR_LISP ("map-frame-hook", &Vmap_frame_hook /* | 3023 DEFVAR_LISP ("map-frame-hook", &Vmap_frame_hook /* |
3043 Function or functions to call when frame is mapped. | 3024 Function or functions to call when a frame is mapped. |
3044 One argument, the frame. | 3025 One argument, the frame. |
3045 */ ); | 3026 */ ); |
3046 Vmap_frame_hook = Qnil; | 3027 Vmap_frame_hook = Qnil; |
3047 | 3028 |
3048 DEFVAR_LISP ("unmap-frame-hook", &Vunmap_frame_hook /* | 3029 DEFVAR_LISP ("unmap-frame-hook", &Vunmap_frame_hook /* |
3049 Function or functions to call when frame is unmapped. | 3030 Function or functions to call when a frame is unmapped. |
3050 One argument, the frame. | 3031 One argument, the frame. |
3051 */ ); | 3032 */ ); |
3052 Vunmap_frame_hook = Qnil; | 3033 Vunmap_frame_hook = Qnil; |
3053 | 3034 |
3054 DEFVAR_LISP ("allow-deletion-of-last-visible-frame", | 3035 DEFVAR_LISP ("allow-deletion-of-last-visible-frame", |
3060 #if defined (HAVE_CDE) || defined (HAVE_OFFIX_DND) | 3041 #if defined (HAVE_CDE) || defined (HAVE_OFFIX_DND) |
3061 DEFVAR_LISP ("drag-and-drop-functions", &Vdrag_and_drop_functions /* | 3042 DEFVAR_LISP ("drag-and-drop-functions", &Vdrag_and_drop_functions /* |
3062 Function or functions to run when an object is dropped on a frame. | 3043 Function or functions to run when an object is dropped on a frame. |
3063 Each function is called with either two or three args. If called with | 3044 Each function is called with either two or three args. If called with |
3064 two args, the args are a frame and a pathname. If with three, the | 3045 two args, the args are a frame and a pathname. If with three, the |
3065 args are a frame, a pathname (which is may be either a string or nil) | 3046 args are a frame, a pathname (which will be either a string or nil) |
3066 and the textual representation of the dragged object. | 3047 and the textual representation of the dragged object. |
3067 */ ); | 3048 */ ); |
3068 Vdrag_and_drop_functions = Qnil; | 3049 Vdrag_and_drop_functions = Qnil; |
3069 #endif | 3050 #endif /* HAVE_CDE */ |
3070 | 3051 |
3071 DEFVAR_LISP ("mouse-motion-handler", &Vmouse_motion_handler /* | 3052 DEFVAR_LISP ("mouse-motion-handler", &Vmouse_motion_handler /* |
3072 Handler for motion events. One arg, the event. | 3053 Handler for motion events. One arg, the event. |
3073 For most applications, you should use `mode-motion-hook' instead of this. | 3054 For most applications, you should use `mode-motion-hook' instead of this. |
3074 */ ); | 3055 */ ); |
3088 */ ); | 3069 */ ); |
3089 Vframe_title_format = Fpurecopy (build_string ("%S: %b")); | 3070 Vframe_title_format = Fpurecopy (build_string ("%S: %b")); |
3090 | 3071 |
3091 DEFVAR_LISP ("frame-icon-title-format", &Vframe_icon_title_format /* | 3072 DEFVAR_LISP ("frame-icon-title-format", &Vframe_icon_title_format /* |
3092 Controls the title of the icon corresponding to the selected frame. | 3073 Controls the title of the icon corresponding to the selected frame. |
3093 See also the variable `frame-title-format' | 3074 See also the variable `frame-title-format'. |
3094 */ ); | 3075 */ ); |
3095 Vframe_icon_title_format = Fpurecopy (build_string ("%b")); | 3076 Vframe_icon_title_format = Fpurecopy (build_string ("%b")); |
3096 | 3077 |
3097 DEFVAR_LISP ("default-frame-name", &Vdefault_frame_name /* | 3078 DEFVAR_LISP ("default-frame-name", &Vdefault_frame_name /* |
3098 The default name to assign to newly-created frames. | 3079 The default name to assign to newly-created frames. |