(FILECREATED " 9-Dec-87 16:52:49" {QV}<NOTECARDS>1.3KNEXT>RHTPATCH297.;2 7515         changes to:  (FNS NC.CheckForOrphanDelete NC.LinkIconWhenDeletedFn)		   (VARS RHTPATCH297COMS)      previous date: " 9-Dec-87 16:50:54" {QV}<NOTECARDS>1.3KNEXT>RHTPATCH297.;1)(* Copyright (c) 1987 by Xerox Corporation. All rights reserved.)(PRETTYCOMPRINT RHTPATCH297COMS)(RPAQQ RHTPATCH297COMS ((* * Fixes bug whereby deleting last link from orphan card caused 			     half-link.)			  (* * Changes to NCLINKS)			  (FNS NC.LinkIconWhenDeletedFn NC.CheckForOrphanDelete)))(* * Fixes bug whereby deleting last link from orphan card caused half-link.)(* * Changes to NCLINKS)(DEFINEQ(NC.LinkIconWhenDeletedFn  (LAMBDA (ImageObject Stream)                               (* rht: " 9-Dec-87 16:48")          (* * When deleting a link icon image object from a card, make sure the link information on the source and 	  destinmation cards get updated. When deleting a link image object from a prop list editor, just inform the user 	  that this is a useless operation.)          (* * rht 11/19/84: Now handles the case when a move is in progress. True if the old link is cached on the ImageObj.	  Also changed so that SourceID is computed from ImageObject rather than from Stream. Similarly for the window.)          (* * kirk 14Nov85: deleted use of PSA.Database)          (* * fgh 5/2/86 Added code to handle deleting of links from ShowLinks editors.)          (* * fgh 6/4/86 Added KLUDGE to take care of case when this is called under TEDIT.UNDO.MOVE)          (* * rht 7/4/86: Now checks for readonly cards. Also passes checks for deleting from orphan card when calling 	  NC.DeleteLink.)          (* * fgh 7/14/86 Now deletes link icon directly, rather than depending on DeleteLink to do it.	  Sets the Don'tDeleteLinkIconFlg in the call to DeleteLink to do so.)          (* * rht 8/11/86: Now computes InsideShowLinksP and lets that determine value of Don'tDelLinkIcon flg in call to 	  NC.DeleteLink.)          (* * rht&pmi 12/8/86: Now checks whether we're called by TEDIT.MOVE. If so, don't cause orphan hook under 	  NC.DelFromLink.)          (* * rht 3/26/87: Now passes non-nil NoOrphanHookFlg to NC.DeleteLink in case we're deleting a cross-file link.)          (* * rht 10/1/87: Fixed case when we're under a move to call NC.DeleteLink rather than NC.DelFromLink and 	  NC.DelToLink individually.)          (* * rht 12/9/87: Now checks to make sure links are cached before calling NC.CheckOrphanDelete.)    (DECLARE (GLOBALVARS NC.DeletedLinkImageObject))    (LET ((Link (NC.FetchLinkFromLinkIcon ImageObject))	  LinkType OldLink StkPtr SourceCard DestinationCard InsideShowLinksP)         (COND	   ((NC.CheckForNotReadOnly (fetch (Link SourceCard) of Link)				      NIL "Can't delete links in ")	     (COND	       ((IMAGEOBJPROP ImageObject (QUOTE LinkBeingMovedWithinCard))                                                             (* TEdit is trying to delete the old link imageobj 							     after moving within a card.)		 (IMAGEOBJPROP ImageObject (QUOTE LinkBeingMovedWithinCard)				 NIL))	       ((SETQ OldLink (IMAGEOBJPROP ImageObject (QUOTE LinkBeingMoved)))		 (NC.DeleteLink OldLink)		 (replace (Link UID) of OldLink with -1)		 (IMAGEOBJPROP ImageObject (QUOTE LinkBeingMoved)				 NIL))	       ((SETQ StkPtr (STKPOS (QUOTE TEDIT.UNDO.MOVE)))          (* * Called from TEDIT.UNDO.MOVE, don't relly want to delete the links. KLUDGE because TEDIT will not call the 	  LinkIconInsertFn later on.)		 (RELSTK StkPtr)		 NIL)	       (T           (* * if this is reversed source/dest {i.e., a From link} inside the show links editor, then return it to its 	  original direction)		  (COND		    ((AND (SETQ InsideShowLinksP (IMAGEOBJPROP ImageObject (QUOTE 									     InsidePropListEditor)))			    (LISTGET (fetch (Link UserData) of Link)				       (QUOTE Reversed)))		      (SETQ Link (create Link using Link SourceCard _(fetch (Link 										  DestinationCard)									      of Link)							  DestinationCard _(fetch (Link SourceCard)									      of Link)))))          (* * Then just delete the link)		  (SETQ SourceCard (fetch (Link SourceCard) of Link))		  (SETQ DestinationCard (fetch (Link DestinationCard) of Link))		  (LET ((WasCachedFlg (NC.LinksCachedP SourceCard)))		       (if (NOT WasCachedFlg)			   then (NC.GetLinks SourceCard))		       (NC.CheckForOrphanDelete SourceCard DestinationCard)		       (NC.DeleteLink Link (OR (NC.SameCardP SourceCard								   (fetch (NoteFile OrphansCard)								      of (fetch (Card NoteFile)									      of SourceCard)))						   (NC.CrossFileLinkCardP DestinationCard)						   (NC.CrossFileLinkCardP SourceCard))					(NOT InsideShowLinksP))		       (if (NOT WasCachedFlg)			   then (NC.PutLinks SourceCard)				  (NC.UncacheLinks SourceCard)))		  (create IMAGEOBJ smashing ImageObject OBJECTDATUM _(fetch (IMAGEOBJ 										      OBJECTDATUM)									    of 									NC.DeletedLinkImageObject)						IMAGEOBJPLIST _(fetch (IMAGEOBJ IMAGEOBJPLIST)								  of NC.DeletedLinkImageObject)						IMAGEOBJFNS _(fetch (IMAGEOBJ IMAGEOBJFNS)								of NC.DeletedLinkImageObject))		  (replace (Link UID) of Link with -1))))	   (T (ERROR!))))))(NC.CheckForOrphanDelete  (LAMBDA (SourceCard DestinationCard SourceWindow)          (* rht: " 9-Dec-87 16:52")          (* Check to make sure we are not deleteing the last reference to a note card from the orphan card.	  Last references are okay to delete it since they will be put in the orphan card. But deleting last reference from 	  the orphan card is very, very bad. Warn the user.)          (* * kirk: 14Nov85: changed EQs to NC.Same*Ps)          (* * rht 7/4/86: Brought up to date with 1.3k. E.g. took out mention of NC.OrphansID)          (* * rg 5/15/87 now calls NC.LinksCachedP instead of NC.ActiveCardP)          (* * rht 12/9/87: No longer checks links caching. Now just assumed that links are cached when this fn is called.)    (DECLARE (GLOBALVARS NC.SubBoxLinkLabel NC.FiledCardLinkLabel))    (LET ((FilingLinks (LIST NC.SubBoxLinkLabel NC.FiledCardLinkLabel))	  (OrphansCard (fetch (NoteFile OrphansCard) of (fetch (Card NoteFile) of SourceCard))		       ))         (AND (NC.SameCardP SourceCard OrphansCard)		(for Link in (NC.FetchFromLinks DestinationCard)		   when (FMEMB (fetch (Link Label) of Link)				   FilingLinks)		   unless (NC.SameCardP (fetch (Link SourceCard) of Link)					    OrphansCard)		   never Link)		(NC.PrintMsg (NC.FetchWindow SourceCard)			       T "You have just deleted the last filing link to " (NC.RetrieveTitle				 DestinationCard)			       (CHARACTER 13)			       "The Search operation can be used to find it."))))))(PUTPROPS RHTPATCH297 COPYRIGHT ("Xerox Corporation" 1987))(DECLARE: DONTCOPY  (FILEMAP (NIL (698 7433 (NC.LinkIconWhenDeletedFn 708 . 5790) (NC.CheckForOrphanDelete 5792 . 7431)))))STOP