]> git.eshelyaron.com Git - emacs.git/commitdiff
* msb.el (msb): Move `sit-for' hack here to handle both
authorChong Yidong <cyd@stupidchicken.com>
Tue, 20 Jun 2006 18:08:40 +0000 (18:08 +0000)
committerChong Yidong <cyd@stupidchicken.com>
Tue, 20 Jun 2006 18:08:40 +0000 (18:08 +0000)
"mouse-down and drag" and "mouse-up and select" situations.
(mouse-select-buffer): Move `sit-for' hack to `msb'.

lisp/ChangeLog
lisp/msb.el

index 54f7834e4bbc0a9b248fa87d29cd4aa3897978ce..89077b519461a28a40945caec64cb3ca45dbe371 100644 (file)
@@ -1,3 +1,9 @@
+2006-06-20  Chong Yidong  <cyd@stupidchicken.com>
+
+       * msb.el (msb): Move `sit-for' hack here to handle both
+       "mouse-down and drag" and "mouse-up and select" situations.
+       (mouse-select-buffer): Move `sit-for' hack to `msb'.
+
 2006-06-20  Kenichi Handa  <handa@m17n.org>
 
        * international/characters.el (word-combining-categories): Add
index d5f324869716bf72946bd8dd676d49cfcf3828de..aa42e183007cae69653fa19137120c4e55c2a83a 100644 (file)
@@ -473,18 +473,21 @@ selects that window.
 See the function `mouse-select-buffer' and the variable
 `msb-menu-cond' for more information about how the menus are split."
   (interactive "e")
-  ;; If EVENT is a down-event, read and discard the
-  ;; corresponding up-event.
-  (and (eventp event)
-       (memq 'down (event-modifiers event))
-       (read-event))
   (let ((old-window (selected-window))
-       (window (posn-window (event-start event))))
+       (window (posn-window (event-start event)))
+       early-release)
     (unless (framep window) (select-window window))
+    ;; This `sit-for' magically makes the menu stay up if the mouse
+    ;; button is released within 0.1 second.
+    (setq early-release (not (sit-for 0.1 t)))
     (let ((buffer (mouse-select-buffer event)))
       (if buffer
          (switch-to-buffer buffer)
-       (select-window old-window))))
+       (select-window old-window)))
+    ;; If the above `sit-for' was interrupted by a mouse-up, avoid
+    ;; generating a drag event.
+    (if (and early-release (memq 'down (event-modifiers last-input-event)))
+       (discard-input)))
   nil)
 
 ;;;
@@ -995,9 +998,6 @@ variable `msb-menu-cond'."
        ;; adjust position
        (setq posX (- posX (funcall msb-horizontal-shift-function))
              position (list (list posX posY) posWind))))
-    ;; This `sit-for' magically makes the menu stay up if the mouse
-    ;; button is released within 0.1 second.
-    (sit-for 0 100)
     ;; Popup the menu
     (setq choice (x-popup-menu position msb--last-buffer-menu))
     (cond