CLIM mail archive


selective accepts

    Date: Tue, 25 Aug 1992 16:54 EDT
    From: Tom Trinko <>

    This is probably a simple question but I'm having trouble with accept using
    genera 8.1 and clim 1.1.  I have a number of different objects displayed which
    all use the same presentation type.  When I start a certain activity, which
    allows the user to select a series of nodes in a graph, I want to have only 
    those nodes which are directly connected to the last node be mouse sensative.
    I also don't want the lines which connect the nodes to be mouse sensitve even 
    though they use the same presentation type as the nodes.  

Why are the edges the same presentation type as the nodes?  That doesn't
seem right to me.

    The accept statement looks like this`
       (accept '((class :connected-with last-node)...

    The parameters are used correctly because when you've been prompted to make a 
    selection if you hit the help key you get a list of only the directly connected
    nodes.  Unfortunetly all of the objects are mouse sensitive if you move the 
    mouse over them.  

    I checked and determined that both presentation-typep and presentation-subtypep
    are returning the correct values, ie when the mouse moves over an object other
    than the nearest nodes presentation-typep returns nil and presentation subtypep
    returns (nil,t).

    I'd appreciate any help, also I'd like to know what I can modify to control
    which objects are hightlited when the mouse moves over them.  I thought that was
    partially controlled by accept and presentation-typep but I guess I was wrong.

There is also a bug in IDENTITY-TRANSLATOR-APPLICABLE-P, which has been
discussed here before.  Try this definition for it instead:

(defun identity-translator-applicable-p (presentation context-type)
  (let* ((type (presentation-type presentation))
	 (type-name (presentation-type-name type))
	 (object (presentation-object presentation)))
    (with-presentation-type-decoded (context-name context-parameters) context-type
      (if (eq type-name 'blank-area)
	  (eq context-name 'blank-area)
	;; Let MENU-ITEM-IDENTITY take care of pure menu items
	(unless (and (eq type-name 'menu-item)
		     (eq context-name 'menu-item))
	  ;; Either the types definitely match, or the types nominally match
	  ;; and the object must be validated.
	  (or (presentation-subtypep type context-type)
	      (and (not (null context-parameters))
		   (presentation-typep object context-type))))))))


Main Index | Thread Index