On Thu, 2 Mar 2017 03:32:08 -0800 (PST)
Alex Harsanyi <alexharsa...@gmail.com> wrote:

> You need to tell the snip admin that the snip needs to be redrawn.
> In your select-this-snip method, add
>     (send (get-admin) needs-update this 0 0 width height)

It still doesn't work. I'm using this:

 (define/public (select-this-snip)
      (define editor (send (get-admin) get-editor))
      (define pos (send editor get-snip-position this))
      (send editor set-position pos (+ pos 1))
      (define w (box 0))
      (define h (box 0))
      (get-extent (send (get-admin) get-dc) 0 0 w h)
      (send (get-admin) needs-update this 0 0 (unbox w) (unbox h)))

The snip *is* selected but not drawn as selected. The draw method
checks (pair? draw-caret) for determining whether its selected, and
this works for manual selection, i.e., left-click and mouse drag from
adjacent position.

Of course, I could work around this by maintaining my own selection
flag and resetting it in on-goodbye-event, but that seems like a hack
to me. Any ideas what I'm doing wrong?



My draw method:

    (define/override (draw dc x y left top right bottom dx dy
    draw-caret) (define-values (tw th tdist tvspace) (send dc
    get-text-extent (get-display-name)
                                                 (send (get-style)
    get-font) #t
      (define w (+ tw 22))
      (define h (max 22 (+ th 4)))
      (define background-color
        (if (pair? draw-caret)
            (scale-color 0.8 (send (get-style) get-background))
            (send (get-style) get-background)))
      (define background
         w h
         #:color background-color
         #:border-color (scale-color 0.8 background-color)
         #:draw-border? #t))
      (define c-new (send (get-style) get-background))
      (define old-pen (send dc get-pen))
      (send dc set-smoothing 'aligned)
      (draw-pict background dc x y)
      (draw-pict (scale-to-fit (get-pict)
                 dc (+ x 4) (+ y 4))
      (send dc set-pen old-pen)
      (when (and (pair? draw-caret) (get-highlight-text-color))
        (send dc set-text-foreground (get-highlight-text-color)))
      (send dc set-text-background background-color)
      (send dc draw-text (get-display-name) (+ x 20) (+ y 4) #t))

You received this message because you are subscribed to the Google Groups 
"Racket Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to racket-users+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to