diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/ChangeLog | 47 | ||||
| -rw-r--r-- | src/fns.c | 15 | ||||
| -rw-r--r-- | src/gnutls.c | 29 | ||||
| -rw-r--r-- | src/gtkutil.c | 5 | ||||
| -rw-r--r-- | src/keymap.c | 10 | ||||
| -rw-r--r-- | src/nsselect.m | 114 | ||||
| -rw-r--r-- | src/w16select.c | 19 | ||||
| -rw-r--r-- | src/w32select.c | 19 | ||||
| -rw-r--r-- | src/window.c | 8 | ||||
| -rw-r--r-- | src/xdisp.c | 5 | ||||
| -rw-r--r-- | src/xselect.c | 31 |
11 files changed, 222 insertions, 80 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index dfd0a05df35..7893cd68396 100644 --- a/src/ChangeLog +++ b/src/ChangeLog | |||
| @@ -1,3 +1,50 @@ | |||
| 1 | 2012-02-13 Andreas Schwab <schwab@linux-m68k.org> | ||
| 2 | |||
| 3 | * gnutls.c (emacs_gnutls_write): Fix last change. | ||
| 4 | |||
| 5 | 2012-02-13 Lars Ingebrigtsen <larsi@gnus.org> | ||
| 6 | |||
| 7 | * gnutls.c (emacs_gnutls_write): Set errno appropriately for | ||
| 8 | send_process. | ||
| 9 | |||
| 10 | 2012-02-13 Stefan Monnier <monnier@iro.umontreal.ca> | ||
| 11 | |||
| 12 | * keymap.c (Fsingle_key_description): Handle char ranges. | ||
| 13 | |||
| 14 | 2012-02-12 Chong Yidong <cyd@gnu.org> | ||
| 15 | |||
| 16 | * xdisp.c (handle_stop): Avoid assigning -1 to it->face_id here, | ||
| 17 | as that creates a dangerous corner case. | ||
| 18 | |||
| 19 | * window.c (Fdelete_window_internal): Invalidate the mouse | ||
| 20 | highlight (Bug#9904). | ||
| 21 | |||
| 22 | 2012-02-12 Glenn Morris <rgm@gnu.org> | ||
| 23 | |||
| 24 | * xselect.c (Fx_own_selection_internal) | ||
| 25 | (Fx_get_selection_internal, Fx_disown_selection_internal) | ||
| 26 | (Fx_selection_owner_p, Fx_selection_exists_p): Doc fixes. | ||
| 27 | * nsselect.m (Fx_own_selection_internal) | ||
| 28 | (Fx_disown_selection_internal, Fx_selection_exists_p) | ||
| 29 | (Fx_selection_owner_p, Fx_get_selection_internal): | ||
| 30 | Sync docs and argument specs with the xselect.c versions. | ||
| 31 | |||
| 32 | 2012-02-11 Lars Ingebrigtsen <larsi@gnus.org> | ||
| 33 | |||
| 34 | * gnutls.c (emacs_gnutls_write): Don't infloop if sendto fails. | ||
| 35 | |||
| 36 | 2012-02-11 Eli Zaretskii <eliz@gnu.org> | ||
| 37 | |||
| 38 | * w32select.c (Fx_selection_exists_p): Sync doc string and | ||
| 39 | argument list with xselect.c. (Bug#10783) | ||
| 40 | |||
| 41 | * w16select.c (Fx_selection_exists_p): Sync doc string and | ||
| 42 | argument list with xselect.c. (Bug#10783) | ||
| 43 | |||
| 44 | 2012-02-10 Glenn Morris <rgm@gnu.org> | ||
| 45 | |||
| 46 | * fns.c (Fsecure_hash): Doc fix. | ||
| 47 | |||
| 1 | 2012-02-09 Kenichi Handa <handa@m17n.org> | 48 | 2012-02-09 Kenichi Handa <handa@m17n.org> |
| 2 | 49 | ||
| 3 | * coding.c (produce_chars): Fix updating of src_end (Bug#10701). | 50 | * coding.c (produce_chars): Fix updating of src_end (Bug#10701). |
| @@ -4847,12 +4847,15 @@ guesswork fails. Normally, an error is signaled in such case. */) | |||
| 4847 | } | 4847 | } |
| 4848 | 4848 | ||
| 4849 | DEFUN ("secure-hash", Fsecure_hash, Ssecure_hash, 2, 5, 0, | 4849 | DEFUN ("secure-hash", Fsecure_hash, Ssecure_hash, 2, 5, 0, |
| 4850 | doc: /* Return the secure hash of an OBJECT. | 4850 | doc: /* Return the secure hash of OBJECT, a buffer or string. |
| 4851 | ALGORITHM is a symbol: md5, sha1, sha224, sha256, sha384 or sha512. | 4851 | ALGORITHM is a symbol specifying the hash to use: |
| 4852 | OBJECT is either a string or a buffer. | 4852 | md5, sha1, sha224, sha256, sha384 or sha512. |
| 4853 | Optional arguments START and END are character positions specifying | 4853 | |
| 4854 | which portion of OBJECT for computing the hash. If BINARY is non-nil, | 4854 | The two optional arguments START and END are positions specifying for |
| 4855 | return a string in binary form. */) | 4855 | which part of OBJECT to compute the hash. If nil or omitted, uses the |
| 4856 | whole OBJECT. | ||
| 4857 | |||
| 4858 | If BINARY is non-nil, returns a string in binary form. */) | ||
| 4856 | (Lisp_Object algorithm, Lisp_Object object, Lisp_Object start, Lisp_Object end, Lisp_Object binary) | 4859 | (Lisp_Object algorithm, Lisp_Object object, Lisp_Object start, Lisp_Object end, Lisp_Object binary) |
| 4857 | { | 4860 | { |
| 4858 | return secure_hash (algorithm, object, start, end, Qnil, Qnil, binary); | 4861 | return secure_hash (algorithm, object, start, end, Qnil, Qnil, binary); |
diff --git a/src/gnutls.c b/src/gnutls.c index d7bf0e8edb8..6b5cb47001b 100644 --- a/src/gnutls.c +++ b/src/gnutls.c | |||
| @@ -345,15 +345,16 @@ emacs_gnutls_write (struct Lisp_Process *proc, const char *buf, EMACS_INT nbyte) | |||
| 345 | EMACS_INT bytes_written; | 345 | EMACS_INT bytes_written; |
| 346 | gnutls_session_t state = proc->gnutls_state; | 346 | gnutls_session_t state = proc->gnutls_state; |
| 347 | 347 | ||
| 348 | if (proc->gnutls_initstage != GNUTLS_STAGE_READY) { | 348 | if (proc->gnutls_initstage != GNUTLS_STAGE_READY) |
| 349 | { | ||
| 349 | #ifdef EWOULDBLOCK | 350 | #ifdef EWOULDBLOCK |
| 350 | errno = EWOULDBLOCK; | 351 | errno = EWOULDBLOCK; |
| 351 | #endif | 352 | #endif |
| 352 | #ifdef EAGAIN | 353 | #ifdef EAGAIN |
| 353 | errno = EAGAIN; | 354 | errno = EAGAIN; |
| 354 | #endif | 355 | #endif |
| 355 | return 0; | 356 | return 0; |
| 356 | } | 357 | } |
| 357 | 358 | ||
| 358 | bytes_written = 0; | 359 | bytes_written = 0; |
| 359 | 360 | ||
| @@ -363,10 +364,24 @@ emacs_gnutls_write (struct Lisp_Process *proc, const char *buf, EMACS_INT nbyte) | |||
| 363 | 364 | ||
| 364 | if (rtnval < 0) | 365 | if (rtnval < 0) |
| 365 | { | 366 | { |
| 366 | if (rtnval == GNUTLS_E_AGAIN || rtnval == GNUTLS_E_INTERRUPTED) | 367 | if (rtnval == GNUTLS_E_INTERRUPTED) |
| 367 | continue; | 368 | continue; |
| 368 | else | 369 | else |
| 369 | break; | 370 | { |
| 371 | /* If we get GNUTLS_E_AGAIN, then set errno | ||
| 372 | appropriately so that send_process retries the | ||
| 373 | correct way instead of erroring out. */ | ||
| 374 | if (rtnval == GNUTLS_E_AGAIN) | ||
| 375 | { | ||
| 376 | #ifdef EWOULDBLOCK | ||
| 377 | errno = EWOULDBLOCK; | ||
| 378 | #endif | ||
| 379 | #ifdef EAGAIN | ||
| 380 | errno = EAGAIN; | ||
| 381 | #endif | ||
| 382 | } | ||
| 383 | break; | ||
| 384 | } | ||
| 370 | } | 385 | } |
| 371 | 386 | ||
| 372 | buf += rtnval; | 387 | buf += rtnval; |
diff --git a/src/gtkutil.c b/src/gtkutil.c index f7983fdd5a4..1ed5833bd5c 100644 --- a/src/gtkutil.c +++ b/src/gtkutil.c | |||
| @@ -1741,8 +1741,9 @@ xg_toggle_notify_cb (GObject *gobject, GParamSpec *arg1, gpointer user_data) | |||
| 1741 | PROMPT is a prompt to show to the user. May not be NULL. | 1741 | PROMPT is a prompt to show to the user. May not be NULL. |
| 1742 | DEFAULT_FILENAME is a default selection to be displayed. May be NULL. | 1742 | DEFAULT_FILENAME is a default selection to be displayed. May be NULL. |
| 1743 | If MUSTMATCH_P is non-zero, the returned file name must be an existing | 1743 | If MUSTMATCH_P is non-zero, the returned file name must be an existing |
| 1744 | file. *FUNC is set to a function that can be used to retrieve the | 1744 | file. (Actually, this only has cosmetic effects, the user can |
| 1745 | selected file name from the returned widget. | 1745 | still enter a non-existing file.) *FUNC is set to a function that |
| 1746 | can be used to retrieve the selected file name from the returned widget. | ||
| 1746 | 1747 | ||
| 1747 | Returns the created widget. */ | 1748 | Returns the created widget. */ |
| 1748 | 1749 | ||
diff --git a/src/keymap.c b/src/keymap.c index 5b5faec3a65..0ae055213c3 100644 --- a/src/keymap.c +++ b/src/keymap.c | |||
| @@ -2270,9 +2270,15 @@ around function keys and event symbols. */) | |||
| 2270 | if (CONSP (key) && lucid_event_type_list_p (key)) | 2270 | if (CONSP (key) && lucid_event_type_list_p (key)) |
| 2271 | key = Fevent_convert_list (key); | 2271 | key = Fevent_convert_list (key); |
| 2272 | 2272 | ||
| 2273 | if (CONSP (key) && INTEGERP (XCAR (key)) && INTEGERP (XCDR (key))) | ||
| 2274 | /* An interval from a map-char-table. */ | ||
| 2275 | return concat3 (Fsingle_key_description (XCAR (key), no_angles), | ||
| 2276 | build_string (".."), | ||
| 2277 | Fsingle_key_description (XCDR (key), no_angles)); | ||
| 2278 | |||
| 2273 | key = EVENT_HEAD (key); | 2279 | key = EVENT_HEAD (key); |
| 2274 | 2280 | ||
| 2275 | if (INTEGERP (key)) /* Normal character */ | 2281 | if (INTEGERP (key)) /* Normal character. */ |
| 2276 | { | 2282 | { |
| 2277 | char tem[KEY_DESCRIPTION_SIZE], *p; | 2283 | char tem[KEY_DESCRIPTION_SIZE], *p; |
| 2278 | 2284 | ||
| @@ -2280,7 +2286,7 @@ around function keys and event symbols. */) | |||
| 2280 | *p = 0; | 2286 | *p = 0; |
| 2281 | return make_specified_string (tem, -1, p - tem, 1); | 2287 | return make_specified_string (tem, -1, p - tem, 1); |
| 2282 | } | 2288 | } |
| 2283 | else if (SYMBOLP (key)) /* Function key or event-symbol */ | 2289 | else if (SYMBOLP (key)) /* Function key or event-symbol. */ |
| 2284 | { | 2290 | { |
| 2285 | if (NILP (no_angles)) | 2291 | if (NILP (no_angles)) |
| 2286 | { | 2292 | { |
diff --git a/src/nsselect.m b/src/nsselect.m index 120dcb34f67..4d901fac2ec 100644 --- a/src/nsselect.m +++ b/src/nsselect.m | |||
| @@ -336,12 +336,18 @@ ns_string_to_pasteboard (id pb, Lisp_Object str) | |||
| 336 | 336 | ||
| 337 | 337 | ||
| 338 | DEFUN ("x-own-selection-internal", Fx_own_selection_internal, | 338 | DEFUN ("x-own-selection-internal", Fx_own_selection_internal, |
| 339 | Sx_own_selection_internal, 2, 2, 0, | 339 | Sx_own_selection_internal, 2, 3, 0, |
| 340 | doc: /* Assert a selection. | 340 | doc: /* Assert an X selection of type SELECTION and value VALUE. |
| 341 | SELECTION-NAME is a symbol, typically `PRIMARY', `SECONDARY', or `CLIPBOARD'. | 341 | SELECTION is a symbol, typically `PRIMARY', `SECONDARY', or `CLIPBOARD'. |
| 342 | \(Those are literal upper-case symbol names, since that's what X expects.) | ||
| 342 | VALUE is typically a string, or a cons of two markers, but may be | 343 | VALUE is typically a string, or a cons of two markers, but may be |
| 343 | anything that the functions on `selection-converter-alist' know about. */) | 344 | anything that the functions on `selection-converter-alist' know about. |
| 344 | (Lisp_Object selection_name, Lisp_Object selection_value) | 345 | |
| 346 | FRAME should be a frame that should own the selection. If omitted or | ||
| 347 | nil, it defaults to the selected frame. | ||
| 348 | |||
| 349 | On Nextstep, FRAME is unused. */) | ||
| 350 | (Lisp_Object selection, Lisp_Object value, Lisp_Object frame) | ||
| 345 | { | 351 | { |
| 346 | id pb; | 352 | id pb; |
| 347 | Lisp_Object old_value, new_value; | 353 | Lisp_Object old_value, new_value; |
| @@ -351,15 +357,15 @@ anything that the functions on `selection-converter-alist' know about. */) | |||
| 351 | 357 | ||
| 352 | 358 | ||
| 353 | check_ns (); | 359 | check_ns (); |
| 354 | CHECK_SYMBOL (selection_name); | 360 | CHECK_SYMBOL (selection); |
| 355 | if (NILP (selection_value)) | 361 | if (NILP (value)) |
| 356 | error ("selection-value may not be nil."); | 362 | error ("selection value may not be nil."); |
| 357 | pb = ns_symbol_to_pb (selection_name); | 363 | pb = ns_symbol_to_pb (selection); |
| 358 | if (pb == nil) return Qnil; | 364 | if (pb == nil) return Qnil; |
| 359 | 365 | ||
| 360 | ns_declare_pasteboard (pb); | 366 | ns_declare_pasteboard (pb); |
| 361 | old_value = assq_no_quit (selection_name, Vselection_alist); | 367 | old_value = assq_no_quit (selection, Vselection_alist); |
| 362 | new_value = Fcons (selection_name, Fcons (selection_value, Qnil)); | 368 | new_value = Fcons (selection, Fcons (value, Qnil)); |
| 363 | 369 | ||
| 364 | if (NILP (old_value)) | 370 | if (NILP (old_value)) |
| 365 | Vselection_alist = Fcons (new_value, Vselection_alist); | 371 | Vselection_alist = Fcons (new_value, Vselection_alist); |
| @@ -369,7 +375,7 @@ anything that the functions on `selection-converter-alist' know about. */) | |||
| 369 | /* We only support copy of text. */ | 375 | /* We only support copy of text. */ |
| 370 | type = NSStringPboardType; | 376 | type = NSStringPboardType; |
| 371 | target_symbol = ns_string_to_symbol (type); | 377 | target_symbol = ns_string_to_symbol (type); |
| 372 | data = ns_get_local_selection (selection_name, target_symbol); | 378 | data = ns_get_local_selection (selection, target_symbol); |
| 373 | if (!NILP (data)) | 379 | if (!NILP (data)) |
| 374 | { | 380 | { |
| 375 | if (STRINGP (data)) | 381 | if (STRINGP (data)) |
| @@ -380,37 +386,53 @@ anything that the functions on `selection-converter-alist' know about. */) | |||
| 380 | if (!EQ (Vns_sent_selection_hooks, Qunbound)) | 386 | if (!EQ (Vns_sent_selection_hooks, Qunbound)) |
| 381 | { | 387 | { |
| 382 | for (rest = Vns_sent_selection_hooks; CONSP (rest); rest = Fcdr (rest)) | 388 | for (rest = Vns_sent_selection_hooks; CONSP (rest); rest = Fcdr (rest)) |
| 383 | call3 (Fcar (rest), selection_name, target_symbol, successful_p); | 389 | call3 (Fcar (rest), selection, target_symbol, successful_p); |
| 384 | } | 390 | } |
| 385 | 391 | ||
| 386 | return selection_value; | 392 | return value; |
| 387 | } | 393 | } |
| 388 | 394 | ||
| 389 | 395 | ||
| 390 | DEFUN ("x-disown-selection-internal", Fx_disown_selection_internal, | 396 | DEFUN ("x-disown-selection-internal", Fx_disown_selection_internal, |
| 391 | Sx_disown_selection_internal, 1, 2, 0, | 397 | Sx_disown_selection_internal, 1, 3, 0, |
| 392 | doc: /* If we own the selection SELECTION, disown it. */) | 398 | doc: /* If we own the selection SELECTION, disown it. |
| 393 | (Lisp_Object selection_name, Lisp_Object time) | 399 | Disowning it means there is no such selection. |
| 400 | |||
| 401 | Sets the last-change time for the selection to TIME-OBJECT (by default | ||
| 402 | the time of the last event). | ||
| 403 | |||
| 404 | TERMINAL should be a terminal object or a frame specifying the X | ||
| 405 | server to query. If omitted or nil, that stands for the selected | ||
| 406 | frame's display, or the first available X display. | ||
| 407 | |||
| 408 | On Nextstep, the TIME-OBJECT and TERMINAL arguments are unused. | ||
| 409 | On MS-DOS, all this does is return non-nil if we own the selection. */) | ||
| 410 | (Lisp_Object selection, Lisp_Object time_object, Lisp_Object terminal) | ||
| 394 | { | 411 | { |
| 395 | id pb; | 412 | id pb; |
| 396 | check_ns (); | 413 | check_ns (); |
| 397 | CHECK_SYMBOL (selection_name); | 414 | CHECK_SYMBOL (selection); |
| 398 | if (NILP (assq_no_quit (selection_name, Vselection_alist))) return Qnil; | 415 | if (NILP (assq_no_quit (selection, Vselection_alist))) return Qnil; |
| 399 | 416 | ||
| 400 | pb = ns_symbol_to_pb (selection_name); | 417 | pb = ns_symbol_to_pb (selection); |
| 401 | if (pb != nil) ns_undeclare_pasteboard (pb); | 418 | if (pb != nil) ns_undeclare_pasteboard (pb); |
| 402 | return Qt; | 419 | return Qt; |
| 403 | } | 420 | } |
| 404 | 421 | ||
| 405 | 422 | ||
| 406 | DEFUN ("x-selection-exists-p", Fx_selection_exists_p, Sx_selection_exists_p, | 423 | DEFUN ("x-selection-exists-p", Fx_selection_exists_p, Sx_selection_exists_p, |
| 407 | 0, 1, 0, doc: /* Whether there is an owner for the given selection. | 424 | 0, 2, 0, doc: /* Whether there is an owner for the given X selection. |
| 408 | The arg should be the name of the selection in question, typically one of | 425 | SELECTION should be the name of the selection in question, typically |
| 409 | the symbols `PRIMARY', `SECONDARY', or `CLIPBOARD'. | 426 | one of the symbols `PRIMARY', `SECONDARY', or `CLIPBOARD'. (X expects |
| 410 | \(Those are literal upper-case symbol names.) | 427 | these literal upper-case names.) The symbol nil is the same as |
| 411 | For convenience, the symbol nil is the same as `PRIMARY', | 428 | `PRIMARY', and t is the same as `SECONDARY'. |
| 412 | and t is the same as `SECONDARY'.) */) | 429 | |
| 413 | (Lisp_Object selection) | 430 | TERMINAL should be a terminal object or a frame specifying the X |
| 431 | server to query. If omitted or nil, that stands for the selected | ||
| 432 | frame's display, or the first available X display. | ||
| 433 | |||
| 434 | On Nextstep, TERMINAL is unused. */) | ||
| 435 | (Lisp_Object selection, Lisp_Object terminal) | ||
| 414 | { | 436 | { |
| 415 | id pb; | 437 | id pb; |
| 416 | NSArray *types; | 438 | NSArray *types; |
| @@ -428,14 +450,20 @@ and t is the same as `SECONDARY'.) */) | |||
| 428 | 450 | ||
| 429 | 451 | ||
| 430 | DEFUN ("x-selection-owner-p", Fx_selection_owner_p, Sx_selection_owner_p, | 452 | DEFUN ("x-selection-owner-p", Fx_selection_owner_p, Sx_selection_owner_p, |
| 431 | 0, 1, 0, | 453 | 0, 2, 0, |
| 432 | doc: /* Whether the current Emacs process owns the given selection. | 454 | doc: /* Whether the current Emacs process owns the given X Selection. |
| 433 | The arg should be the name of the selection in question, typically one of | 455 | The arg should be the name of the selection in question, typically one of |
| 434 | the symbols `PRIMARY', `SECONDARY', or `CLIPBOARD'. | 456 | the symbols `PRIMARY', `SECONDARY', or `CLIPBOARD'. |
| 435 | \(Those are literal upper-case symbol names.) | 457 | \(Those are literal upper-case symbol names, since that's what X expects.) |
| 436 | For convenience, the symbol nil is the same as `PRIMARY', | 458 | For convenience, the symbol nil is the same as `PRIMARY', |
| 437 | and t is the same as `SECONDARY'.) */) | 459 | and t is the same as `SECONDARY'. |
| 438 | (Lisp_Object selection) | 460 | |
| 461 | TERMINAL should be a terminal object or a frame specifying the X | ||
| 462 | server to query. If omitted or nil, that stands for the selected | ||
| 463 | frame's display, or the first available X display. | ||
| 464 | |||
| 465 | On Nextstep, TERMINAL is unused. */) | ||
| 466 | (Lisp_Object selection, Lisp_Object terminal) | ||
| 439 | { | 467 | { |
| 440 | check_ns (); | 468 | check_ns (); |
| 441 | CHECK_SYMBOL (selection); | 469 | CHECK_SYMBOL (selection); |
| @@ -446,12 +474,22 @@ and t is the same as `SECONDARY'.) */) | |||
| 446 | 474 | ||
| 447 | 475 | ||
| 448 | DEFUN ("x-get-selection-internal", Fx_get_selection_internal, | 476 | DEFUN ("x-get-selection-internal", Fx_get_selection_internal, |
| 449 | Sx_get_selection_internal, 2, 2, 0, | 477 | Sx_get_selection_internal, 2, 4, 0, |
| 450 | doc: /* Return text selected from some pasteboard. | 478 | doc: /* Return text selected from some X window. |
| 451 | SELECTION is a symbol, typically `PRIMARY', `SECONDARY', or `CLIPBOARD'. | 479 | SELECTION-SYMBOL is typically `PRIMARY', `SECONDARY', or `CLIPBOARD'. |
| 452 | \(Those are literal upper-case symbol names.) | 480 | \(Those are literal upper-case symbol names, since that's what X expects.) |
| 453 | TYPE is the type of data desired, typically `STRING'. */) | 481 | TARGET-TYPE is the type of data desired, typically `STRING'. |
| 454 | (Lisp_Object selection_name, Lisp_Object target_type) | 482 | |
| 483 | TIME-STAMP is the time to use in the XConvertSelection call for foreign | ||
| 484 | selections. If omitted, defaults to the time for the last event. | ||
| 485 | |||
| 486 | TERMINAL should be a terminal object or a frame specifying the X | ||
| 487 | server to query. If omitted or nil, that stands for the selected | ||
| 488 | frame's display, or the first available X display. | ||
| 489 | |||
| 490 | On Nextstep, TIME-STAMP and TERMINAL are unused. */) | ||
| 491 | (Lisp_Object selection_name, Lisp_Object target_type, | ||
| 492 | Lisp_Object time_stamp, Lisp_Object terminal) | ||
| 455 | { | 493 | { |
| 456 | Lisp_Object val; | 494 | Lisp_Object val; |
| 457 | 495 | ||
diff --git a/src/w16select.c b/src/w16select.c index 185bf252895..03f63bedf0d 100644 --- a/src/w16select.c +++ b/src/w16select.c | |||
| @@ -637,14 +637,17 @@ DEFUN ("w16-get-clipboard-data", Fw16_get_clipboard_data, Sw16_get_clipboard_dat | |||
| 637 | /* Support checking for a clipboard selection. */ | 637 | /* Support checking for a clipboard selection. */ |
| 638 | 638 | ||
| 639 | DEFUN ("x-selection-exists-p", Fx_selection_exists_p, Sx_selection_exists_p, | 639 | DEFUN ("x-selection-exists-p", Fx_selection_exists_p, Sx_selection_exists_p, |
| 640 | 0, 1, 0, | 640 | 0, 2, 0, |
| 641 | doc: /* Whether there is an owner for the given X Selection. | 641 | doc: /* Whether there is an owner for the given X selection. |
| 642 | The arg should be the name of the selection in question, typically one of | 642 | SELECTION should be the name of the selection in question, typically |
| 643 | the symbols `PRIMARY', `SECONDARY', or `CLIPBOARD'. | 643 | one of the symbols `PRIMARY', `SECONDARY', or `CLIPBOARD'. (X expects |
| 644 | \(Those are literal upper-case symbol names, since that's what X expects.) | 644 | these literal upper-case names.) The symbol nil is the same as |
| 645 | For convenience, the symbol nil is the same as `PRIMARY', | 645 | `PRIMARY', and t is the same as `SECONDARY'. |
| 646 | and t is the same as `SECONDARY'. */) | 646 | |
| 647 | (Lisp_Object selection) | 647 | TERMINAL should be a terminal object or a frame specifying the X |
| 648 | server to query. If omitted or nil, that stands for the selected | ||
| 649 | frame's display, or the first available X display. */) | ||
| 650 | (Lisp_Object selection, Lisp_Object terminal) | ||
| 648 | { | 651 | { |
| 649 | CHECK_SYMBOL (selection); | 652 | CHECK_SYMBOL (selection); |
| 650 | 653 | ||
diff --git a/src/w32select.c b/src/w32select.c index c60376b3a91..699c72b71a8 100644 --- a/src/w32select.c +++ b/src/w32select.c | |||
| @@ -1009,14 +1009,17 @@ DEFUN ("w32-get-clipboard-data", Fw32_get_clipboard_data, | |||
| 1009 | /* Support checking for a clipboard selection. */ | 1009 | /* Support checking for a clipboard selection. */ |
| 1010 | 1010 | ||
| 1011 | DEFUN ("x-selection-exists-p", Fx_selection_exists_p, Sx_selection_exists_p, | 1011 | DEFUN ("x-selection-exists-p", Fx_selection_exists_p, Sx_selection_exists_p, |
| 1012 | 0, 1, 0, | 1012 | 0, 2, 0, |
| 1013 | doc: /* Whether there is an owner for the given X Selection. | 1013 | doc: /* Whether there is an owner for the given X selection. |
| 1014 | The arg should be the name of the selection in question, typically one of | 1014 | SELECTION should be the name of the selection in question, typically |
| 1015 | the symbols `PRIMARY', `SECONDARY', or `CLIPBOARD'. | 1015 | one of the symbols `PRIMARY', `SECONDARY', or `CLIPBOARD'. (X expects |
| 1016 | \(Those are literal upper-case symbol names, since that's what X expects.) | 1016 | these literal upper-case names.) The symbol nil is the same as |
| 1017 | For convenience, the symbol nil is the same as `PRIMARY', | 1017 | `PRIMARY', and t is the same as `SECONDARY'. |
| 1018 | and t is the same as `SECONDARY'. */) | 1018 | |
| 1019 | (Lisp_Object selection) | 1019 | TERMINAL should be a terminal object or a frame specifying the X |
| 1020 | server to query. If omitted or nil, that stands for the selected | ||
| 1021 | frame's display, or the first available X display. */) | ||
| 1022 | (Lisp_Object selection, Lisp_Object terminal) | ||
| 1020 | { | 1023 | { |
| 1021 | CHECK_SYMBOL (selection); | 1024 | CHECK_SYMBOL (selection); |
| 1022 | 1025 | ||
diff --git a/src/window.c b/src/window.c index a3b58d648a1..b50ae71df8c 100644 --- a/src/window.c +++ b/src/window.c | |||
| @@ -3888,6 +3888,8 @@ Signal an error when WINDOW is the only window on its frame. */) | |||
| 3888 | && EQ (r->new_total, (horflag ? r->total_cols : r->total_lines))) | 3888 | && EQ (r->new_total, (horflag ? r->total_cols : r->total_lines))) |
| 3889 | /* We can delete WINDOW now. */ | 3889 | /* We can delete WINDOW now. */ |
| 3890 | { | 3890 | { |
| 3891 | Mouse_HLInfo *hlinfo; | ||
| 3892 | |||
| 3891 | /* Block input. */ | 3893 | /* Block input. */ |
| 3892 | BLOCK_INPUT; | 3894 | BLOCK_INPUT; |
| 3893 | #ifdef HAVE_XWIDGETS | 3895 | #ifdef HAVE_XWIDGETS |
| @@ -3895,6 +3897,12 @@ Signal an error when WINDOW is the only window on its frame. */) | |||
| 3895 | #endif | 3897 | #endif |
| 3896 | window_resize_apply (p, horflag); | 3898 | window_resize_apply (p, horflag); |
| 3897 | 3899 | ||
| 3900 | /* If this window is referred to by the dpyinfo's mouse | ||
| 3901 | highlight, invalidate that slot to be safe (Bug#9904). */ | ||
| 3902 | hlinfo = MOUSE_HL_INFO (XFRAME (w->frame)); | ||
| 3903 | if (EQ (hlinfo->mouse_face_window, window)) | ||
| 3904 | hlinfo->mouse_face_window = Qnil; | ||
| 3905 | |||
| 3898 | windows_or_buffers_changed++; | 3906 | windows_or_buffers_changed++; |
| 3899 | Vwindow_list = Qnil; | 3907 | Vwindow_list = Qnil; |
| 3900 | FRAME_WINDOW_SIZES_CHANGED (f) = 1; | 3908 | FRAME_WINDOW_SIZES_CHANGED (f) = 1; |
diff --git a/src/xdisp.c b/src/xdisp.c index 653ca46904b..6e5b1da284d 100644 --- a/src/xdisp.c +++ b/src/xdisp.c | |||
| @@ -2755,9 +2755,12 @@ init_iterator (struct it *it, struct window *w, | |||
| 2755 | if (charpos >= BUF_BEG (current_buffer)) | 2755 | if (charpos >= BUF_BEG (current_buffer)) |
| 2756 | { | 2756 | { |
| 2757 | it->end_charpos = ZV; | 2757 | it->end_charpos = ZV; |
| 2758 | it->face_id = -1; | ||
| 2759 | IT_CHARPOS (*it) = charpos; | 2758 | IT_CHARPOS (*it) = charpos; |
| 2760 | 2759 | ||
| 2760 | /* We will rely on `reseat' to set this up properly, via | ||
| 2761 | handle_face_prop. */ | ||
| 2762 | it->face_id = it->base_face_id; | ||
| 2763 | |||
| 2761 | /* Compute byte position if not specified. */ | 2764 | /* Compute byte position if not specified. */ |
| 2762 | if (bytepos < charpos) | 2765 | if (bytepos < charpos) |
| 2763 | IT_BYTEPOS (*it) = CHAR_TO_BYTE (charpos); | 2766 | IT_BYTEPOS (*it) = CHAR_TO_BYTE (charpos); |
diff --git a/src/xselect.c b/src/xselect.c index 85c9c40cc34..49955f03fd0 100644 --- a/src/xselect.c +++ b/src/xselect.c | |||
| @@ -1982,7 +1982,9 @@ VALUE is typically a string, or a cons of two markers, but may be | |||
| 1982 | anything that the functions on `selection-converter-alist' know about. | 1982 | anything that the functions on `selection-converter-alist' know about. |
| 1983 | 1983 | ||
| 1984 | FRAME should be a frame that should own the selection. If omitted or | 1984 | FRAME should be a frame that should own the selection. If omitted or |
| 1985 | nil, it defaults to the selected frame. */) | 1985 | nil, it defaults to the selected frame. |
| 1986 | |||
| 1987 | On Nextstep, FRAME is unused. */) | ||
| 1986 | (Lisp_Object selection, Lisp_Object value, Lisp_Object frame) | 1988 | (Lisp_Object selection, Lisp_Object value, Lisp_Object frame) |
| 1987 | { | 1989 | { |
| 1988 | if (NILP (frame)) frame = selected_frame; | 1990 | if (NILP (frame)) frame = selected_frame; |
| @@ -2003,15 +2005,18 @@ nil, it defaults to the selected frame. */) | |||
| 2003 | DEFUN ("x-get-selection-internal", Fx_get_selection_internal, | 2005 | DEFUN ("x-get-selection-internal", Fx_get_selection_internal, |
| 2004 | Sx_get_selection_internal, 2, 4, 0, | 2006 | Sx_get_selection_internal, 2, 4, 0, |
| 2005 | doc: /* Return text selected from some X window. | 2007 | doc: /* Return text selected from some X window. |
| 2006 | SELECTION is a symbol, typically `PRIMARY', `SECONDARY', or `CLIPBOARD'. | 2008 | SELECTION-SYMBOL is typically `PRIMARY', `SECONDARY', or `CLIPBOARD'. |
| 2007 | \(Those are literal upper-case symbol names, since that's what X expects.) | 2009 | \(Those are literal upper-case symbol names, since that's what X expects.) |
| 2008 | TYPE is the type of data desired, typically `STRING'. | 2010 | TARGET-TYPE is the type of data desired, typically `STRING'. |
| 2009 | TIME_STAMP is the time to use in the XConvertSelection call for foreign | 2011 | |
| 2012 | TIME-STAMP is the time to use in the XConvertSelection call for foreign | ||
| 2010 | selections. If omitted, defaults to the time for the last event. | 2013 | selections. If omitted, defaults to the time for the last event. |
| 2011 | 2014 | ||
| 2012 | TERMINAL should be a terminal object or a frame specifying the X | 2015 | TERMINAL should be a terminal object or a frame specifying the X |
| 2013 | server to query. If omitted or nil, that stands for the selected | 2016 | server to query. If omitted or nil, that stands for the selected |
| 2014 | frame's display, or the first available X display. */) | 2017 | frame's display, or the first available X display. |
| 2018 | |||
| 2019 | On Nextstep, TIME-STAMP and TERMINAL are unused. */) | ||
| 2015 | (Lisp_Object selection_symbol, Lisp_Object target_type, | 2020 | (Lisp_Object selection_symbol, Lisp_Object target_type, |
| 2016 | Lisp_Object time_stamp, Lisp_Object terminal) | 2021 | Lisp_Object time_stamp, Lisp_Object terminal) |
| 2017 | { | 2022 | { |
| @@ -2052,9 +2057,15 @@ DEFUN ("x-disown-selection-internal", Fx_disown_selection_internal, | |||
| 2052 | doc: /* If we own the selection SELECTION, disown it. | 2057 | doc: /* If we own the selection SELECTION, disown it. |
| 2053 | Disowning it means there is no such selection. | 2058 | Disowning it means there is no such selection. |
| 2054 | 2059 | ||
| 2060 | Sets the last-change time for the selection to TIME-OBJECT (by default | ||
| 2061 | the time of the last event). | ||
| 2062 | |||
| 2055 | TERMINAL should be a terminal object or a frame specifying the X | 2063 | TERMINAL should be a terminal object or a frame specifying the X |
| 2056 | server to query. If omitted or nil, that stands for the selected | 2064 | server to query. If omitted or nil, that stands for the selected |
| 2057 | frame's display, or the first available X display. */) | 2065 | frame's display, or the first available X display. |
| 2066 | |||
| 2067 | On Nextstep, the TIME-OBJECT and TERMINAL arguments are unused. | ||
| 2068 | On MS-DOS, all this does is return non-nil if we own the selection. */) | ||
| 2058 | (Lisp_Object selection, Lisp_Object time_object, Lisp_Object terminal) | 2069 | (Lisp_Object selection, Lisp_Object time_object, Lisp_Object terminal) |
| 2059 | { | 2070 | { |
| 2060 | Time timestamp; | 2071 | Time timestamp; |
| @@ -2110,7 +2121,9 @@ and t is the same as `SECONDARY'. | |||
| 2110 | 2121 | ||
| 2111 | TERMINAL should be a terminal object or a frame specifying the X | 2122 | TERMINAL should be a terminal object or a frame specifying the X |
| 2112 | server to query. If omitted or nil, that stands for the selected | 2123 | server to query. If omitted or nil, that stands for the selected |
| 2113 | frame's display, or the first available X display. */) | 2124 | frame's display, or the first available X display. |
| 2125 | |||
| 2126 | On Nextstep, TERMINAL is unused. */) | ||
| 2114 | (Lisp_Object selection, Lisp_Object terminal) | 2127 | (Lisp_Object selection, Lisp_Object terminal) |
| 2115 | { | 2128 | { |
| 2116 | struct frame *f = frame_for_x_selection (terminal); | 2129 | struct frame *f = frame_for_x_selection (terminal); |
| @@ -2135,7 +2148,9 @@ these literal upper-case names.) The symbol nil is the same as | |||
| 2135 | 2148 | ||
| 2136 | TERMINAL should be a terminal object or a frame specifying the X | 2149 | TERMINAL should be a terminal object or a frame specifying the X |
| 2137 | server to query. If omitted or nil, that stands for the selected | 2150 | server to query. If omitted or nil, that stands for the selected |
| 2138 | frame's display, or the first available X display. */) | 2151 | frame's display, or the first available X display. |
| 2152 | |||
| 2153 | On Nextstep, TERMINAL is unused. */) | ||
| 2139 | (Lisp_Object selection, Lisp_Object terminal) | 2154 | (Lisp_Object selection, Lisp_Object terminal) |
| 2140 | { | 2155 | { |
| 2141 | Window owner; | 2156 | Window owner; |