]> code.delx.au - gnu-emacs-elpa/commitdiff
company-select-mouse: work correctly when tooltip is expanded up
authorDmitry Gutov <dgutov@yandex.ru>
Sat, 4 May 2013 09:21:19 +0000 (13:21 +0400)
committerDmitry Gutov <dgutov@yandex.ru>
Sat, 4 May 2013 09:21:19 +0000 (13:21 +0400)
company.el

index 2734ae75414306534509739d4ae6053cb0c03379..2a9b9db32cdb25715e557c6b89e879700fea15a0 100644 (file)
@@ -1338,8 +1338,11 @@ and invoke the normal binding."
            (evt-row (cdr event-col-row)))
       (and (>= evt-col column)
            (< evt-col (+ column width))
            (evt-row (cdr event-col-row)))
       (and (>= evt-col column)
            (< evt-col (+ column width))
-           (> evt-row ovl-row)
-           (<= evt-row (+ ovl-row height) )))))
+           (if (> height 0)
+               (and (> evt-row ovl-row)
+                    (<= evt-row (+ ovl-row height) ))
+             (and (< evt-row ovl-row)
+                  (>= evt-row (+ ovl-row height))))))))
 
 (defun company-select-mouse (event)
   "Select the candidate picked by the mouse."
 
 (defun company-select-mouse (event)
   "Select the candidate picked by the mouse."
@@ -1347,12 +1350,16 @@ and invoke the normal binding."
   (let ((event-col-row (posn-actual-col-row (event-start event)))
         (ovl-row (company--row)))
     (if (company--inside-tooltip-p event-col-row ovl-row)
   (let ((event-col-row (posn-actual-col-row (event-start event)))
         (ovl-row (company--row)))
     (if (company--inside-tooltip-p event-col-row ovl-row)
-        (progn
-          (company-set-selection (- (cdr event-col-row)
+        (let ((ovl-height (overlay-get company-pseudo-tooltip-overlay
+                                       'company-height)))
+          (company-set-selection (+ (cdr event-col-row)
                                     (if (zerop company-tooltip-offset)
                                     (if (zerop company-tooltip-offset)
-                                        1
-                                      (- 2 company-tooltip-offset))
-                                    ovl-row))
+                                        -1
+                                      (- company-tooltip-offset 2))
+                                    (- ovl-row)
+                                    (if (< ovl-height 0)
+                                        (- 1 ovl-height)
+                                      0)))
           t)
       (company-abort)
       (company--unread-last-input)
           t)
       (company-abort)
       (company--unread-last-input)