Changeset 6785 for branches


Ignore:
Timestamp:
Jul 6, 2007, 11:58:39 AM (17 years ago)
Author:
Gary Byers
Message:

Do paren-blinking by setting temporary attributes in layout manager;
may still happen at the wrong time.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/ide-1.0/ccl/examples/cocoa-editor.lisp

    r6766 r6785  
    655655    ((self hemlock-textstorage-text-view) color)
    656656  #+debug (#_NSLog #@"Set background color: %@" :id color)
    657   (setf (text-view-blink-color self) color)
     657  (let* ((old (text-view-blink-color self)))
     658    (unless (%null-ptr-p old)
     659      (#/release old)))
     660  (setf (text-view-blink-color self)
     661        (#/retain (#/dictionaryWithObject:forKey:
     662                                      ns:ns-dictionary
     663                                      color
     664                                      #&NSForegroundColorAttributeName)))
    658665  (call-next-method color))
    659666
     
    669676    (unless (eql #$NO (text-view-blink-enabled self))
    670677      (let* ((layout (#/layoutManager self))
    671              (container (#/textContainer self))
    672678             (blink-color (text-view-blink-color self)))
     679        #+debug (#_NSLog #@"layout = %@, blink-color = %@" :id layout :id blink-color)
    673680        ;; We toggle the blinked character "off" by setting its
    674681        ;; foreground color to the textview's background color.
     
    676683        ;; point is drawn as "off"
    677684        (ns:with-ns-range  (char-range (text-view-blink-location self) 1)
    678           (let* ((glyph-range (#/glyphRangeForCharacterRange:actualCharacterRange:
    679                                layout
    680                                char-range
    681                                +null-ptr+)))
    682             #+debug (#_NSLog #@"Flag = %d, location = %d" :<BOOL> (if flag #$YES #$NO) :int (text-view-blink-location self))
    683             (let* ((rect (#/boundingRectForGlyphRange:inTextContainer:
    684                           layout
    685                           glyph-range
    686                           container)))
    687               (#/set blink-color)
    688               (#_NSRectFill rect))
    689685          (if flag
    690             (#/drawGlyphsForGlyphRange:atPoint: layout glyph-range (#/textContainerOrigin self)))))))
     686            (#/setTemporaryAttributes:forCharacterRange: layout blink-color char-range)
     687            (#/removeTemporaryAttribute:forCharacterRange: layout #&NSForegroundColorAttributeName char-range)))))
    691688    (call-next-method r color flag)))
    692689               
    693690(defmethod disable-blink ((self hemlock-textstorage-text-view))
     691  #+debug
     692  (when (#/editingInProgress (#/textStorage self))
     693    (#_NSLog #@"disable-blink: editing in progress"))
    694694  (when (eql (text-view-blink-enabled self) #$YES)
    695695    (setf (text-view-blink-enabled self) #$NO)
    696696    ;; Force the blinked character to be redrawn.  Let the text
    697697    ;; system do the drawing.
    698     (#/invalidateDisplayForCharacterRange: (#/layoutManager self) (ns:make-ns-range (text-view-blink-location self) 1))))
     698    (#/removeTemporaryAttribute:forCharacterRange: (#/layoutManager self) #&NSForegroundColorAttributeName (ns:make-ns-range (text-view-blink-location self) 1))))
    699699
    700700(defmethod update-blink ((self hemlock-textstorage-text-view))
     
    706706             (point (hi::buffer-point buffer)))
    707707        #+debug (#_NSLog #@"Syntax check for blinking")
     708        (update-buffer-package (hi::buffer-document buffer) buffer)
     709         
    708710        (cond ((eql (hi::next-character point) #\()
    709711               (hemlock::pre-command-parse-check point)
     
    792794    (#/setColor: colorpanel color)
    793795    (#/setTarget: colorpanel self)
    794     (#/setContinuous: colorpanel t)
     796    (#/setContinuous: colorpanel nil)
    795797    (#/orderFrontColorPanel: *NSApp* sender)))
    796798
     
    799801(objc:defmethod (#/updateBackgroundColor: :void)
    800802    ((self hemlock-text-view) sender)
    801   (let* ((color (#/color sender)))
    802     (unless (typep self 'echo-area-view)
    803       (let* ((window (#/window self))
    804              (echo-view (unless (%null-ptr-p window)
    805                           (slot-value window 'echo-area-view))))
    806         (when echo-view (#/setBackgroundColor: echo-view color))))
    807     (#/setBackgroundColor: self color)))
     803  (when (#/isVisible sender)
     804    (let* ((color (#/color sender)))
     805      (unless (typep self 'echo-area-view)
     806        (let* ((window (#/window self))
     807               (echo-view (unless (%null-ptr-p window)
     808                            (slot-value window 'echo-area-view))))
     809          (when echo-view (#/setBackgroundColor: echo-view color))))
     810      (#_NSLog #@"Updating backgroundColor to %@, sender = %@" :id color :id sender)
     811      (#/setBackgroundColor: self color))))
    808812
    809813(objc:defmethod (#/changeTextColor: :void)
     
    818822    (#/setColor: colorpanel color)
    819823    (#/setTarget: colorpanel self)
    820     (#/setContinuous: colorpanel t)
     824    (#/setContinuous: colorpanel nil)
    821825    (#/orderFrontColorPanel: *NSApp* sender)))
    822826
     
    12201224  (text-view-context-menu))
    12211225
     1226;;; If we don't override this, NSTextView will start adding Google/
     1227;;; Spotlight search options and dictionary lookup when a selection
     1228;;; is active.
     1229(objc:defmethod #/menuForEvent: ((self hemlock-text-view) event)
     1230  (declare (ignore event))
     1231  (#/menu self))
     1232
    12221233(defun make-scrolling-text-view-for-textstorage (textstorage x y width height tracks-width color style)
    12231234  (let* ((scrollview (#/autorelease
     
    12641275                (#/setUsesFindPanel: tv t)
    12651276                (#/setUsesFontPanel: tv t)
     1277                (#/setMenu: tv (text-view-context-menu))
    12661278                (#/setWidthTracksTextView: container tracks-width)
    12671279                (#/setHeightTracksTextView: container nil)
     
    13161328    ((textstorage :foreign-type :id))
    13171329  (:metaclass ns:+ns-object))
     1330
     1331(defmethod update-buffer-package ((doc echo-area-document) buffer)
     1332  (declare (ignore buffer)))
    13181333
    13191334(objc:defmethod (#/close :void) ((self echo-area-document))
     
    14651480             #|(*debug-io* *typeout-stream*)|#)
    14661481        (stream-clear-output *debug-io*)
    1467         (print-call-history :detailed-p t)
     1482        (ignore-errors (print-call-history :detailed-p t))
    14681483        (#/performSelectorOnMainThread:withObject:waitUntilDone:
    14691484         frame (@selector #/runErrorSheet:) params t)
     
    18881903  (:metaclass ns:+ns-object))
    18891904
     1905(defmethod update-buffer-package ((doc hemlock-editor-document) buffer)
     1906  (let* ((name (hemlock::package-at-mark (hi::buffer-point buffer))))
     1907    (when name
     1908      (let* ((pkg (find-package name)))
     1909        (if pkg
     1910          (setq name (shortest-package-name pkg))))
     1911      (let* ((curname (hi::variable-value 'hemlock::current-package :buffer buffer)))
     1912        (if (or (null curname)
     1913                (not (string= curname name)))
     1914          (setf (hi::variable-value 'hemlock::current-package :buffer buffer) name))))))
    18901915
    18911916(objc:defmethod (#/validateMenuItem: :<BOOL>)
     
    20392064  (call-next-method path type save-operation))
    20402065
    2041 ;;; This should be a preference.
     2066(def-cocoa-default *editor-keep-backup-files* :bool t "maintain backup files")
     2067
    20422068(objc:defmethod (#/keepBackupFile :<BOOL>) ((self hemlock-editor-document))
    2043   t)
     2069  *editor-keep-backup-files*)
    20442070
    20452071
Note: See TracChangeset for help on using the changeset viewer.