(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP")
(FILECREATED "30-Jan-89 18:51:18" {QV}<NOTECARDS>1.3MNEXT>PMIPATCH115.;1 9522   

      changes to%:  (FNS NC.PointerIconImageBoxFn NC.PointerIconDisplayFn))


(* "
Copyright (c) 1989 by Xerox Corporation.  All rights reserved.
")

(PRETTYCOMPRINT PMIPATCH115COMS)

(RPAQQ PMIPATCH115COMS ((DECLARE%: DONTCOPY (PROPS (PMIPATCH115 MAKEFILE-ENVIRONMENT)
                                                       (PMIPATCH115 FILETYPE)))
                            
                            (* ;; "pmi 1/30/89: Fixes problem with display of pointer icons where image box wasn't being updated when title changed.")

                            
                            (* ;; "Changed in NCLINKS")

                            (FNS NC.PointerIconImageBoxFn NC.PointerIconDisplayFn)))
(DECLARE%: DONTCOPY 

(PUTPROPS PMIPATCH115 MAKEFILE-ENVIRONMENT (:PACKAGE "INTERLISP" :READTABLE "INTERLISP"))

(PUTPROPS PMIPATCH115 FILETYPE :BCOMPL)
)



(* ;; 
"pmi 1/30/89: Fixes problem with display of pointer icons where image box wasn't being updated when title changed."
)




(* ;; "Changed in NCLINKS")

(DEFINEQ

(NC.PointerIconImageBoxFn
  [LAMBDA (ImageObj ImageStream CurrentX RightMargin DummyArg DisplayType Title Label LinkIconString)
                                                             (* ; "Edited 30-Jan-89 18:48 by pmi")

(* ;;; "Compute the image box for pointer icon.")

    (* ;; "rht 1/21/88: Now passes extra BorderWidthIncrement argument to NC.ComputeLinkOrPointerImageBox which it grabs off IMAGEOBJPROP.")

    (* ;; "pmi 1/30/89: Now stores CurrentX and RightMargin on ImageObj so that  NC.PointerIconDisplayFn can get at them when it calculates the ImageBox.")

    (DECLARE (GLOBALVARS NC.LinkIconShowLinkTypeFlg NC.LinkIconShowTitleFlg 
                        NC.LinkIconAttachBitmapFlg))
    (RESETLST
        [RESETSAVE NIL `(DSPFONT ,(DSPFONT NC.LinkIconFont ImageStream)
                               ,ImageStream]
        (PROG ((Pointer (NC.FetchPointerFromPointerIcon ImageObj))
               Card ShowTitleFlg AttachBitmapFlg ShowLinkTypeFlg)

         (* ;; "Save CurrentX and RightMarginon ImageObj")

              (IMAGEOBJPROP ImageObj 'CurrentX CurrentX)
              (IMAGEOBJPROP ImageObj 'RightMargin RightMargin)

         (* ;; "Check for bad Pointer")

              (if [NOT (NC.ValidCardP (SETQ Card (fetch (NCPointer DestinationCard)
                                                        of Pointer]
                  then 

                        (* ;; "Delete the offending link, smash its image object into a 'Deleted' image object, and return by displaying it.")

                        (RETURN (NC.DeletedLinkImageBoxFn ImageObj ImageStream)))

         (* ;; "Determine what type of Display to do")

              (OR DisplayType (SETQ DisplayType (fetch (NCPointer DisplayMode) of Pointer)))
              (SETQ ShowTitleFlg (fetch (LINKDISPLAYMODE SHOWTITLEFLG) of DisplayType))
              (SETQ ShowLinkTypeFlg (fetch (LINKDISPLAYMODE SHOWLINKTYPEFLG) of DisplayType))
              (SETQ AttachBitmapFlg (fetch (LINKDISPLAYMODE ATTACHBITMAPFLG) of DisplayType))
              (SETQ AttachBitmapFlg (if (EQ AttachBitmapFlg 'FLOAT)
                                        then NC.LinkIconAttachBitmapFlg
                                      else AttachBitmapFlg))

         (* ;; "Construct the text for the link icon")

              [if (NOT LinkIconString)
                  then (OR Title (SETQ Title (if (AND ShowTitleFlg (OR (NEQ ShowTitleFlg
                                                                                    'FLOAT)
                                                                               
                                                                              NC.LinkIconShowTitleFlg
                                                                               ))
                                                     then (NC.RetrieveTitle Card)
                                                   else NIL)))
                        [OR Label (SETQ Label (AND (if (EQ ShowLinkTypeFlg 'FLOAT)
                                                       then NC.LinkIconShowLinkTypeFlg
                                                     else ShowLinkTypeFlg)
                                                   (fetch (NCPointer Label) of Pointer]
                        (SETQ LinkIconString (CONCAT (COND
                                                        (Label (CONCAT "<" Label ">"))
                                                        (T ""))
                                                    (COND
                                                       ((AND Label Title)
                                                        " ")
                                                       (T ""))
                                                    (OR Title ""]

         (* ;; "Now do the hard work.")

              (RETURN (NC.ComputeLinkOrPointerImageBox ImageStream LinkIconString AttachBitmapFlg 
                             Card RightMargin (IMAGEOBJPROP ImageObj 'BorderWidthIncrement)
                             CurrentX))))])

(NC.PointerIconDisplayFn
  [LAMBDA (ImageObj ImageStream StreamType TextStream Scale)
                                                             (* ; "Edited 30-Jan-89 18:48 by pmi")

(* ;;; "Display a pointer icon")

    (* ;; "rht 1/21/88: Now passes extra BorderWidthIncrement argument to NC.DrawLinkOrPointerIcon which it grabs off IMAGEOBJPROP.")

    (* ;; "pmi 1/30/89: Now uses CurrentX and RightMargin stored on ImageObj in call to NC.PointerIconImageBoxFn.")

    (DECLARE (GLOBALVARS NC.LinkIconAttachBitmapFlg NC.LinkIconShowLinkTypeFlg 
                        NC.LinkIconShowTitleFlg))
    (RESETLST
        [RESETSAVE NIL `(DSPFONT ,(DSPFONT NC.LinkIconFont ImageStream)
                               ,ImageStream]
        [PROG ((Scale (DSPSCALE NIL ImageStream))
               (Pointer (NC.FetchPointerFromPointerIcon ImageObj))
               Card ShowTitleFlg ShowLinkTypeFlg AttachBitmapFlg DisplayType Title Label 
               LinkIconString)

         (* ;; "Check for bad Pointer")

              (if [NOT (NC.ValidCardP (SETQ Card (fetch (NCPointer DestinationCard)
                                                        of Pointer]
                  then 

                        (* ;; "Delete the offending link, smash its image object into a 'Deleted' image object, and return by displaying it.")

                        (NC.DeleteBadPointer Pointer ImageObj ImageStream StreamType TextStream Scale
                               )
                        (RETURN))

         (* ;; "Pointer is okay, continue")

         (* ;; "Determine what type of Display to do")

              (SETQ DisplayType (fetch (NCPointer DisplayMode) of Pointer))
              (SETQ ShowTitleFlg (fetch (LINKDISPLAYMODE SHOWTITLEFLG) of DisplayType))
              (SETQ ShowLinkTypeFlg (fetch (LINKDISPLAYMODE SHOWLINKTYPEFLG) of DisplayType))
              (SETQ AttachBitmapFlg (fetch (LINKDISPLAYMODE ATTACHBITMAPFLG) of DisplayType))
              (if (EQ AttachBitmapFlg 'FLOAT)
                  then (SETQ AttachBitmapFlg NC.LinkIconAttachBitmapFlg))

         (* ;; "Construct the text for the link icon")

              (SETQ Title (if (AND ShowTitleFlg (OR (NEQ ShowTitleFlg 'FLOAT)
                                                        NC.LinkIconShowTitleFlg))
                              then (NC.RetrieveTitle Card)
                            else NIL))
              (SETQ Label (AND (COND
                                  ((EQ ShowLinkTypeFlg 'FLOAT)
                                   NC.LinkIconShowLinkTypeFlg)
                                  (T ShowLinkTypeFlg))
                               (fetch (NCPointer Label) of Pointer)))
              (SETQ LinkIconString (CONCAT (COND
                                              (Label (CONCAT "<" Label ">"))
                                              (T ""))
                                          (COND
                                             ((AND Label Title)
                                              " ")
                                             (T ""))
                                          (OR Title "")))

         (* ;; "Now do all the hard work.")

              (NC.DrawLinkOrPointerIcon ImageStream (NC.PointerIconImageBoxFn ImageObj 
                                                           ImageStream (IMAGEOBJPROP ImageObj
                                                                              'CurrentX)
                                                           (IMAGEOBJPROP ImageObj 'RightMargin)
                                                           NIL DisplayType Title Label LinkIconString
                                                           )
                     LinkIconString AttachBitmapFlg Card T (IMAGEOBJPROP ImageObj 
                                                                  'BorderWidthIncrement])])
)
(PUTPROPS PMIPATCH115 COPYRIGHT ("Xerox Corporation" 1989))
(DECLARE%: DONTCOPY
  (FILEMAP (NIL (1205 9439 (NC.PointerIconImageBoxFn 1215 . 5419) (NC.PointerIconDisplayFn 5421 . 9437))
)))
STOP