From: Chong Yidong Date: Tue, 24 Aug 2010 15:48:14 +0000 (-0400) Subject: Avoid clobbering primary selection when switching frames (Bug#6872). X-Git-Tag: emacs-pretest-24.0.90~104^2~275^2~438^2~48^2~240^2~2^2~5 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=1c409d0b963ebdb1f48b90ddce85c56d989bee5f;p=emacs.git Avoid clobbering primary selection when switching frames (Bug#6872). * lisp/mouse.el (mouse-yank-primary): Avoid setting primary when deactivating the mark (Bug#6872). * src/keyboard.c (command_loop_1): Don't set primary selection during handle-switch-frame (Bug#6872). --- diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 1402c45b125..79b5f6583a0 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,8 @@ +2010-08-24 Chong Yidong + + * mouse.el (mouse-yank-primary): Avoid setting primary when + deactivating the mark (Bug#6872). + 2010-08-23 Michael Albinus * net/dbus.el: Accept UNIX domain sockets as bus address. diff --git a/lisp/mouse.el b/lisp/mouse.el index c9b190f1c79..a2a0191ce79 100644 --- a/lisp/mouse.el +++ b/lisp/mouse.el @@ -1268,10 +1268,11 @@ regardless of where you click." (interactive "e") ;; Give temporary modes such as isearch a chance to turn off. (run-hooks 'mouse-leave-buffer-hook) + ;; Without this, confusing things happen upon e.g. inserting into + ;; the middle of an active region. (when select-active-regions - ;; Without this, confusing things happen upon e.g. inserting into - ;; the middle of an active region. - (deactivate-mark)) + (let (select-active-regions) + (deactivate-mark))) (or mouse-yank-at-point (mouse-set-point click)) (let ((primary (cond diff --git a/src/ChangeLog b/src/ChangeLog index 17d1f7a08b6..7cadee4fcda 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,8 @@ +2010-08-24 Chong Yidong + + * keyboard.c (command_loop_1): Don't clobber primary selection + during handle-switch-frame (Bug#6872). + 2010-08-23 Michael Albinus * dbusbind.c: Accept UNIX domain sockets as bus address. diff --git a/src/keyboard.c b/src/keyboard.c index b4a5d4e060f..cac051f7882 100644 --- a/src/keyboard.c +++ b/src/keyboard.c @@ -368,7 +368,7 @@ Lisp_Object Vselect_active_regions; Used by the `select-active-regions' feature. */ Lisp_Object Vsaved_region_selection; -Lisp_Object Qx_set_selection, QPRIMARY; +Lisp_Object Qx_set_selection, QPRIMARY, Qhandle_switch_frame; Lisp_Object Qself_insert_command; Lisp_Object Qforward_char; @@ -1799,10 +1799,11 @@ command_loop_1 (void) { /* Even if not deactivating the mark, set PRIMARY if `select-active-regions' is non-nil. */ - if (EQ (Vselect_active_regions, Qonly) - ? EQ (CAR_SAFE (Vtransient_mark_mode), Qonly) - : (!NILP (Vselect_active_regions) - && !NILP (Vtransient_mark_mode))) + if ((EQ (Vselect_active_regions, Qonly) + ? EQ (CAR_SAFE (Vtransient_mark_mode), Qonly) + : (!NILP (Vselect_active_regions) + && !NILP (Vtransient_mark_mode))) + && !EQ (Vthis_command, Qhandle_switch_frame)) { int beg = XINT (Fmarker_position (current_buffer->mark)); int end = XINT (make_number (PT)); @@ -11702,6 +11703,8 @@ syms_of_keyboard (void) staticpro (&Qx_set_selection); QPRIMARY = intern_c_string ("PRIMARY"); staticpro (&QPRIMARY); + Qhandle_switch_frame = intern_c_string ("handle-switch-frame"); + staticpro (&Qhandle_switch_frame); Qinput_method_exit_on_first_char = intern_c_string ("input-method-exit-on-first-char"); staticpro (&Qinput_method_exit_on_first_char);