originally I was woried that my solution would have maintainability problems as it wouldnt be able to be refactored into guibuilder objects.  However I find a way to do it, basically it's creating a new frame class which inherits from frame%, and were calling the new class frame%.  This could then be refactored into callback registration methods, and a new module "
mred-plus-right-mouse-clicks.ss&quot; which would provide the mred language, with mred:frame% repaced with our new frame%.<br><br>(define (test)<br>&nbsp; (let* ((object-registry #f)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (frame%<br>&nbsp;&nbsp;&nbsp; (class frame%<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (override on-subwindow-event)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (define on-subwindow-event <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (lambda (reciever event)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (if (equal? &#39;right-down (send event get-event-type))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (begin <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (display #\newline)
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (display &quot;you clicked the right button on &quot;)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (display reciever)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (if (equal? (first (first object-registry)) reciever)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (display &quot;AND IT&#39;S BUTTON393!!!&quot;))
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;if we don&#39;t actually do anything, pass this on....<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;(super on-subwindow-event reciever event)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (super on-subwindow-event reciever event))))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (super-new))))<br>&nbsp;&nbsp;&nbsp; <br><br>{{gui goes here}}<br><br>&nbsp;&nbsp;&nbsp; (set! object-registry (list (list button393 `do-something)))<br>&nbsp;&nbsp;&nbsp; (send top show #t)))<br clear="all"><br><br><br>Corey<br><br>-- <br>((lambda (y) (y y)) (lambda (y) (y y)))