Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
219 changes: 111 additions & 108 deletions library/tedit/TEDIT-WINDOW
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)

(FILECREATED "14-Jul-2022 16:55:53" 
{DSK}<users>kaplan>local>medley3.5>working-medley>library>tedit>TEDIT-WINDOW.;1 180402
(FILECREATED "20-Oct-2023 21:46:58" {MEDLEY}<library>tedit>TEDIT-WINDOW.;7 180689

:PREVIOUS-DATE "14-Jul-2022 11:08:01"
{DSK}<users>kaplan>local>medley3.5>working-medley>library>newtedit>TEDIT-WINDOW.;2)
:EDIT-BY rmk

:CHANGES-TO (FNS TEDIT.DEACTIVATE.WINDOW)

:PREVIOUS-DATE "14-Jul-2022 16:55:53" {MEDLEY}<library>tedit>TEDIT-WINDOW.;5)


(PRETTYCOMPRINT TEDIT-WINDOWCOMS)
Expand Down Expand Up @@ -1631,113 +1633,114 @@
(DEFINEQ

(TEDIT.DEACTIVATE.WINDOW
[LAMBDA (W FORCEFLG DISCONNECTONLYFLG) (* ; "Edited 16-Oct-2021 18:51 by rmk:")
[LAMBDA (W FORCEFLG DISCONNECTONLYFLG) (* ; "Edited 20-Oct-2023 21:46 by rmk")
(* ; "Edited 16-Oct-2021 18:51 by rmk:")

(* ;; "Deactivate the various button fns for this window")

(PROG [(TEXTOBJ (WINDOWPROP W 'TEXTOBJ] (* ;
 "Can't be a call to TEXTOBJ, since window may NOT have a textobj on it.")
(replace (TEXTOBJ EDITFINISHEDFLG) of TEXTOBJ with T)
[COND
((AND TEXTOBJ (fetch (TEXTOBJ EDITOPACTIVE) of TEXTOBJ))
(CL:WHEN TEXTOBJ
(replace (TEXTOBJ EDITFINISHEDFLG) of TEXTOBJ with T)
[COND
((fetch (TEXTOBJ EDITOPACTIVE) of TEXTOBJ)

(* ;; "If something is going on, DON'T CLOSE THE WINDOW")
(* ;; "If something is going on, DON'T CLOSE THE WINDOW")

(TEDIT.PROMPTPRINT TEXTOBJ "Not closed; edit operation in progress" T)
(RETURN 'DON'T))
((AND TEXTOBJ (PROCESSP (WINDOWPROP W 'PROCESS))
(NOT (fetch (TEXTOBJ EDITFINISHEDFLG) of TEXTOBJ))
(NOT (fetch (TEXTOBJ TXTREADONLY) of TEXTOBJ))
(NOT FORCEFLG)) (* ;
(TEDIT.PROMPTPRINT TEXTOBJ "Not closed; edit operation in progress" T)
(RETURN 'DON'T))
((AND (PROCESSP (WINDOWPROP W 'PROCESS))
(NOT (fetch (TEXTOBJ EDITFINISHEDFLG) of TEXTOBJ))
(NOT (fetch (TEXTOBJ TXTREADONLY) of TEXTOBJ))
(NOT FORCEFLG)) (* ;
 "This is an un-quit TEdit window. Try to QUIT out of TEdit.")
(COND
((\TEDIT.QUIT W T))
(T
(* ;; "Always return DON'T: If we didn't quit, we don't want to close the window; if we did quit, the window is closed already, and will be reopened to reclose it.")
(COND
((\TEDIT.QUIT W T))
(T
(* ;; "Always return DON'T: If we didn't quit, we don't want to close the window; if we did quit, the window is closed already, and will be reopened to reclose it.")

(RETURN 'DON'T]
(COND
([AND TEXTOBJ (OR FORCEFLG (fetch (TEXTOBJ EDITFINISHEDFLG) of TEXTOBJ)
(fetch (TEXTOBJ TXTREADONLY) of TEXTOBJ)
(NOT (PROCESSP (WINDOWPROP W 'PROCESS]
(* ;
(RETURN 'DON'T]
(COND
([OR FORCEFLG (fetch (TEXTOBJ EDITFINISHEDFLG) of TEXTOBJ)
(fetch (TEXTOBJ TXTREADONLY) of TEXTOBJ)
(NOT (PROCESSP (WINDOWPROP W 'PROCESS] (* ;
 "Only do this if it's a TEdit window, and has been QUIT out of.")
[COND
((AND (fetch (TEXTOBJ PROMPTWINDOW) of TEXTOBJ)
(OPENWP (fetch (TEXTOBJ PROMPTWINDOW) of TEXTOBJ)))
(CLEARW (fetch (TEXTOBJ PROMPTWINDOW) of TEXTOBJ]
(\SHOWSEL (fetch (TEXTOBJ SEL) of TEXTOBJ)
NIL NIL) (* ;
[COND
((AND (fetch (TEXTOBJ PROMPTWINDOW) of TEXTOBJ)
(OPENWP (fetch (TEXTOBJ PROMPTWINDOW) of TEXTOBJ)))
(CLEARW (fetch (TEXTOBJ PROMPTWINDOW) of TEXTOBJ]
(\SHOWSEL (fetch (TEXTOBJ SEL) of TEXTOBJ)
NIL NIL) (* ;
 "Before the window is closed, make SURE that the caret is down, or the window will reappear.")
(COND
((AND (\TEDIT.WINDOW.TITLE TEXTOBJ)
(OPENWP (fetch (TEXTOBJ PROMPTWINDOW) of TEXTOBJ))
(OPENWP W)
(EQ W (CAR (fetch (TEXTOBJ \WINDOW) of TEXTOBJ)))
(NOT DISCONNECTONLYFLG))
(\TEDIT.WINDOW.TITLE TEXTOBJ "Edit Window [Inactive]")
(COND
((AND (\TEDIT.WINDOW.TITLE TEXTOBJ)
(OPENWP (fetch (TEXTOBJ PROMPTWINDOW) of TEXTOBJ))
(OPENWP W)
(EQ W (CAR (fetch (TEXTOBJ \WINDOW) of TEXTOBJ)))
(NOT DISCONNECTONLYFLG))
(\TEDIT.WINDOW.TITLE TEXTOBJ "Edit Window [Inactive]")
(* ;
 "Reset the window's title to a known 'inactive' value")
))
[COND
((NOT DISCONNECTONLYFLG)
(for PANE in (REVERSE (CDR (fetch (TEXTOBJ \WINDOW) of TEXTOBJ)))
do
(* ;; "Run thru any split-off sub-panes, and reattach them, so we get a whole window back before the end of the world.")

(\TEDIT.UNSPLITW PANE))
(replace (TEXTOBJ \WINDOW) of TEXTOBJ with NIL)
(COND
((type? STREAM (fetch (TEXTOBJ TXTFILE) of TEXTOBJ))
))
[COND
((NOT DISCONNECTONLYFLG)
(for PANE in (REVERSE (CDR (fetch (TEXTOBJ \WINDOW) of TEXTOBJ)))
do
(* ;; "Run thru any split-off sub-panes, and reattach them, so we get a whole window back before the end of the world.")

(\TEDIT.UNSPLITW PANE))
(replace (TEXTOBJ \WINDOW) of TEXTOBJ with NIL)
(COND
((type? STREAM (fetch (TEXTOBJ TXTFILE) of TEXTOBJ))
(* ;
 "Close the file that this window was open on.")
(COND
((NOT (WINDOWPROP W 'TEDIT-CLOSING-FILE T))
(CLOSEF? (fetch (TEXTOBJ TXTFILE) of TEXTOBJ))
(WINDOWPROP W 'TEDIT-CLOSING-FILE NIL]
(WINDOWPROP W 'TEXTOBJ NIL) (* ;
(COND
((NOT (WINDOWPROP W 'TEDIT-CLOSING-FILE T))
(CLOSEF? (fetch (TEXTOBJ TXTFILE) of TEXTOBJ))
(WINDOWPROP W 'TEDIT-CLOSING-FILE NIL]
(WINDOWPROP W 'TEXTOBJ NIL) (* ;
 "Detach the edit data structures from the window")
(WINDOWPROP W 'TEXTSTREAM NIL)
(WINDOWPROP W 'LINES NIL)
(WINDOWPROP W 'THISLINE NIL)
(WINDOWPROP W 'PROCESS.EXITFN NIL)
(WINDOWPROP W 'PROCESS.IDLEFN NIL)
(WINDOWPROP W 'CURSOROUTFN NIL)
(WINDOWPROP W 'CURSORMOVEDFN NIL)
(WINDOWPROP W 'BUTTONEVENTFN 'TOTOPW) (* ; "And the button functions")
(WINDOWPROP W 'RIGHTBUTTONFN 'DOWINDOWCOM)
(WINDOWDELPROP W 'CLOSEFN 'TEDIT.DEACTIVATE.WINDOW)
(WINDOWPROP W 'SCROLLFN NIL)
(WINDOWDELPROP W 'RESHAPEFN '\EDITRESHAPEFN)
(AND (NOT DISCONNECTONLYFLG)
(WINDOWPROP W 'PROCESS)
(\TEDIT.INTERRUPT.SETUP (WINDOWPROP W 'PROCESS)
T)) (* ;
(WINDOWPROP W 'TEXTSTREAM NIL)
(WINDOWPROP W 'LINES NIL)
(WINDOWPROP W 'THISLINE NIL)
(WINDOWPROP W 'PROCESS.EXITFN NIL)
(WINDOWPROP W 'PROCESS.IDLEFN NIL)
(WINDOWPROP W 'CURSOROUTFN NIL)
(WINDOWPROP W 'CURSORMOVEDFN NIL)
(WINDOWPROP W 'BUTTONEVENTFN 'TOTOPW) (* ; "And the button functions")
(WINDOWPROP W 'RIGHTBUTTONFN 'DOWINDOWCOM)
(WINDOWDELPROP W 'CLOSEFN 'TEDIT.DEACTIVATE.WINDOW)
(WINDOWPROP W 'SCROLLFN NIL)
(WINDOWDELPROP W 'RESHAPEFN '\EDITRESHAPEFN)
(AND (NOT DISCONNECTONLYFLG)
(WINDOWPROP W 'PROCESS)
(\TEDIT.INTERRUPT.SETUP (WINDOWPROP W 'PROCESS)
T)) (* ;
 "Make sure any disarmed interrupts are restored.")
(for MENUW in (ATTACHEDWINDOWS W) when (AND (WINDOWPROP MENUW 'TEDITMENU)
(WINDOWPROP MENUW 'TEXTOBJ))
do (* ;
(for MENUW in (ATTACHEDWINDOWS W) when (AND (WINDOWPROP MENUW 'TEDITMENU)
(WINDOWPROP MENUW 'TEXTOBJ))
do (* ;
 "Detach all the TEDITMENU windows that belong to this window.")
(replace (TEXTOBJ EDITFINISHEDFLG) of (TEXTOBJ MENUW) with T)
(replace (TEXTOBJ EDITFINISHEDFLG) of (TEXTOBJ MENUW) with T)
(* ; "Mark it finished")
(WINDOWPROP MENUW 'TEDITMENU NIL) (* ;
(WINDOWPROP MENUW 'TEDITMENU NIL) (* ;
 "And mark it no longer a menu window")
(GIVE.TTY.PROCESS MENUW) (* ;
(GIVE.TTY.PROCESS MENUW) (* ;
 "Then give it a chance to kill itself off")
(DISMISS 300))
(COND
((NOT DISCONNECTONLYFLG)
(GIVE.TTY.PROCESS W)
(DISMISS 300)))
[replace (TEXTOBJ \WINDOW) of TEXTOBJ with (COND
((LISTP (fetch (TEXTOBJ \WINDOW)
of TEXTOBJ))
(DISMISS 300))
(COND
((NOT DISCONNECTONLYFLG)
(GIVE.TTY.PROCESS W)
(DISMISS 300)))
[replace (TEXTOBJ \WINDOW) of TEXTOBJ with (COND
((LISTP (fetch (TEXTOBJ \WINDOW)
of TEXTOBJ))
(* ; "It's a list; remove this window")
(DREMOVE W (fetch (TEXTOBJ \WINDOW)
of TEXTOBJ]
(DREMOVE W (fetch (TEXTOBJ \WINDOW)
of TEXTOBJ]
(* ;
 "Disconnect the window from the edit data structures as well.")
])
)))])

(\TEDIT.REPAINTFN
[LAMBDA (W) (* ; "Edited 30-May-91 23:34 by jds")
Expand Down Expand Up @@ -2726,25 +2729,25 @@
(RPAQ? TEDIT.TITLED.ICON.TEMPLATE (CONS TEDITICON (CONS TEDITMASK (CONS TEDIT.ICON.TITLE.REGION NIL))
))
(DECLARE%: DONTCOPY
(FILEMAP (NIL (7116 90052 (TEDIT.CREATEW 7126 . 9899) (\TEDIT.CREATEW.FROM.REGION 9901 . 10881) (
TEDIT.CURSORMOVEDFN 10883 . 20782) (TEDIT.CURSOROUTFN 20784 . 21327) (TEDIT.WINDOW.SETUP 21329 . 23154
) (TEDIT.MINIMAL.WINDOW.SETUP 23156 . 30934) (\TEDIT.ACTIVE.WINDOWP 30936 . 31929) (
\TEDIT.BUTTONEVENTFN 31931 . 55639) (\TEDIT.WINDOW.OPS 55641 . 58853) (\TEDIT.EXPANDFN 58855 . 59418)
(\TEDIT.MAINW 59420 . 60717) (\TEDIT.PRIMARYW 60719 . 61880) (\TEDIT.COPYINSERTFN 61882 . 62678) (
\TEDIT.NEWREGIONFN 62680 . 65196) (\TEDIT.SET.WINDOW.EXTENT 65198 . 70741) (\TEDIT.SHRINK.ICONCREATE
70743 . 72944) (\TEDIT.SHRINKFN 72946 . 73505) (\TEDIT.SPLITW 73507 . 78972) (\TEDIT.UNSPLITW 78974 .
83830) (\TEDIT.WINDOW.SETUP 83832 . 89655) (\SAFE.FIRST 89657 . 90050)) (91382 92293 (TEDITWINDOWP
91392 . 92291)) (92330 95120 (TEDIT.GETINPUT 92340 . 94400) (\TEDIT.MAKEFILENAME 94402 . 95118)) (
95169 101597 (TEDIT.PROMPTPRINT 95179 . 98114) (TEDIT.PROMPTFLASH 98116 . 100025) (
\TEDIT.PROMPT.PAGEFULLFN 100027 . 101595)) (101832 105804 (TEXTSTREAM.TITLE 101842 . 102467) (
\TEDIT.ORIGINAL.WINDOW.TITLE 102469 . 104391) (\TEDIT.WINDOW.TITLE 104393 . 105047) (
\TEXTSTREAM.FILENAME 105049 . 105802)) (105847 147324 (TEDIT.DEACTIVATE.WINDOW 105857 . 112821) (
\TEDIT.REPAINTFN 112823 . 115671) (\TEDIT.RESHAPEFN 115673 . 120517) (\TEDIT.SCROLLFN 120519 . 147322)
) (147366 149497 (\TEDIT.PROCIDLEFN 147376 . 148671) (\TEDIT.PROCENTRYFN 148673 . 149118) (
\TEDIT.PROCEXITFN 149120 . 149495)) (149576 160542 (\EDIT.DOWNCARET 149586 . 150255) (\EDIT.FLIPCARET
150257 . 151776) (TEDIT.FLASHCARET 151778 . 153059) (\EDIT.UPCARET 153061 . 153486) (
TEDIT.NORMALIZECARET 153488 . 159185) (\SETCARET 159187 . 160115) (\TEDIT.CARET 160117 . 160540)) (
160576 174370 (TEDIT.ADD.MENUITEM 160586 . 162877) (TEDIT.DEFAULT.MENUFN 162879 . 171849) (
TEDIT.REMOVE.MENUITEM 171851 . 172848) (\TEDIT.CREATEMENU 172850 . 173287) (\TEDIT.MENU.WHENHELDFN
173289 . 174055) (\TEDIT.MENU.WHENSELECTEDFN 174057 . 174368)))))
(FILEMAP (NIL (7098 90034 (TEDIT.CREATEW 7108 . 9881) (\TEDIT.CREATEW.FROM.REGION 9883 . 10863) (
TEDIT.CURSORMOVEDFN 10865 . 20764) (TEDIT.CURSOROUTFN 20766 . 21309) (TEDIT.WINDOW.SETUP 21311 . 23136
) (TEDIT.MINIMAL.WINDOW.SETUP 23138 . 30916) (\TEDIT.ACTIVE.WINDOWP 30918 . 31911) (
\TEDIT.BUTTONEVENTFN 31913 . 55621) (\TEDIT.WINDOW.OPS 55623 . 58835) (\TEDIT.EXPANDFN 58837 . 59400)
(\TEDIT.MAINW 59402 . 60699) (\TEDIT.PRIMARYW 60701 . 61862) (\TEDIT.COPYINSERTFN 61864 . 62660) (
\TEDIT.NEWREGIONFN 62662 . 65178) (\TEDIT.SET.WINDOW.EXTENT 65180 . 70723) (\TEDIT.SHRINK.ICONCREATE
70725 . 72926) (\TEDIT.SHRINKFN 72928 . 73487) (\TEDIT.SPLITW 73489 . 78954) (\TEDIT.UNSPLITW 78956 .
83812) (\TEDIT.WINDOW.SETUP 83814 . 89637) (\SAFE.FIRST 89639 . 90032)) (91364 92275 (TEDITWINDOWP
91374 . 92273)) (92312 95102 (TEDIT.GETINPUT 92322 . 94382) (\TEDIT.MAKEFILENAME 94384 . 95100)) (
95151 101579 (TEDIT.PROMPTPRINT 95161 . 98096) (TEDIT.PROMPTFLASH 98098 . 100007) (
\TEDIT.PROMPT.PAGEFULLFN 100009 . 101577)) (101814 105786 (TEXTSTREAM.TITLE 101824 . 102449) (
\TEDIT.ORIGINAL.WINDOW.TITLE 102451 . 104373) (\TEDIT.WINDOW.TITLE 104375 . 105029) (
\TEXTSTREAM.FILENAME 105031 . 105784)) (105829 147611 (TEDIT.DEACTIVATE.WINDOW 105839 . 113108) (
\TEDIT.REPAINTFN 113110 . 115958) (\TEDIT.RESHAPEFN 115960 . 120804) (\TEDIT.SCROLLFN 120806 . 147609)
) (147653 149784 (\TEDIT.PROCIDLEFN 147663 . 148958) (\TEDIT.PROCENTRYFN 148960 . 149405) (
\TEDIT.PROCEXITFN 149407 . 149782)) (149863 160829 (\EDIT.DOWNCARET 149873 . 150542) (\EDIT.FLIPCARET
150544 . 152063) (TEDIT.FLASHCARET 152065 . 153346) (\EDIT.UPCARET 153348 . 153773) (
TEDIT.NORMALIZECARET 153775 . 159472) (\SETCARET 159474 . 160402) (\TEDIT.CARET 160404 . 160827)) (
160863 174657 (TEDIT.ADD.MENUITEM 160873 . 163164) (TEDIT.DEFAULT.MENUFN 163166 . 172136) (
TEDIT.REMOVE.MENUITEM 172138 . 173135) (\TEDIT.CREATEMENU 173137 . 173574) (\TEDIT.MENU.WHENHELDFN
173576 . 174342) (\TEDIT.MENU.WHENSELECTEDFN 174344 . 174655)))))
STOP
Binary file modified library/tedit/TEDIT-WINDOW.LCOM
Binary file not shown.