Changeset 14722


Ignore:
Timestamp:
Apr 21, 2011, 6:28:48 PM (9 years ago)
Author:
gz
Message:

In selectionRangeForProposedRange, don't move point prematurely. Fixes ticket:851

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/source/cocoa-ide/cocoa-editor.lisp

    r14660 r14722  
    15441544                  (atom-mode (or (eql g #$NSSelectByParagraph)
    15451545                                 (and (eql index (#/length textstorage))
    1546                                       (let* ((event (#/currentEvent (#/window self))))
    1547                                         (and (eql (#/type event) #$NSLeftMouseDown)
     1546                                      (let* ((event (#/currentEvent (#/window self)))
     1547                                             (type (#/type event)))
     1548                                        (and (or (eql type #$NSLeftMouseDown) (eql type #$NSLeftMouseUp))
    15481549                                             (> (#/clickCount event) 2)))))))
    15491550             (hi::with-mark ((mark point))
     
    15511552                 (when region
    15521553                   ;; Act as if we started the selection at the other end, so the heuristic
    1553                    ;; in #/selectionRangeForProposedRange does the right thing.  ref bug #565.
    1554                    (cond ((hi::mark= (hi::region-start region) mark)
    1555                           (hi::move-mark point (hi::region-end region)))
    1556                          ((hi::mark= (hi::region-end region) mark)
    1557                           (hi::move-mark point (hi::region-start region))))
     1554                   ;; in #/setSelectedRange does the right thing.  ref bug #565.
     1555                   ;; However, only do so on mouse up, ref bug #851.
     1556                   (when (eql (#/type (#/currentEvent (#/window self))) #$NSLeftMouseUp)
     1557                     (cond ((hi::mark= (hi::region-start region) mark)
     1558                            (hi::move-mark point (hi::region-end region)))
     1559                           ((hi::mark= (hi::region-end region) mark)
     1560                            (hi::move-mark point (hi::region-start region)))))
    15581561                   (let ((start (hi::mark-absolute-position (hi::region-start region)))
    15591562                         (end (hi::mark-absolute-position (hi::region-end region))))
Note: See TracChangeset for help on using the changeset viewer.