ETxtView.st
changeset 97 cbf495fe3b64
parent 91 e8db16616e97
child 105 3d064ba4a0cc
--- a/ETxtView.st	Tue Feb 28 22:52:21 1995 +0100
+++ b/ETxtView.st	Mon Mar 06 20:29:54 1995 +0100
@@ -32,7 +32,7 @@
 COPYRIGHT (c) 1989 by Claus Gittinger
 	    All Rights Reserved
 
-$Header: /cvs/stx/stx/libwidg/Attic/ETxtView.st,v 1.21 1995-02-22 01:20:41 claus Exp $
+$Header: /cvs/stx/stx/libwidg/Attic/ETxtView.st,v 1.22 1995-03-06 19:28:18 claus Exp $
 '!
 
 !EditTextView class methodsFor:'documentation'!
@@ -53,7 +53,7 @@
 
 version
 "
-$Header: /cvs/stx/stx/libwidg/Attic/ETxtView.st,v 1.21 1995-02-22 01:20:41 claus Exp $
+$Header: /cvs/stx/stx/libwidg/Attic/ETxtView.st,v 1.22 1995-03-06 19:28:18 claus Exp $
 "
 !
 
@@ -141,68 +141,83 @@
     self enableEnterLeaveEvents
 !
 
-initializeMiddleButtonMenu
-    "initialize the views middleButtonMenu"
-
-    |labels|
- 
-    labels := resources array:#(
-"/                               'undo'
-			       'again'
-			       '-'
-			       'copy'
-			       'cut'
-			       'paste'
-			       '-'
-			       'accept'
-			       '='
-			       'others'
-			       ).
-
-    self middleButtonMenu:(PopUpMenu
-				labels:labels
-			     selectors:#(
-"/                                         undo
-					 again
-					 nil
-					 copySelection
-					 cut
-					 paste
-					 nil
-					 accept
-					 nil
-					 others
-					)
-				receiver:self
-				     for:self).
-
-    middleButtonMenu subMenuAt:#others put:(PopUpMenu
-				labels:(resources array:#(
-					 'search ...'
-					 'goto ...'
-					 '-'
-					 'font ...'
-					 '-'
-					 'indent'
-					 '-'
-					 'save as ...'
-					 'print'
-					))
-			      selectors:#(
-					  search
-					  gotoLine
-					  nil
-					  changeFont
-					  nil
-					  indent
-					  nil
-					  save
-					  print
-					 )
-				receiver:self
-				     for:self).
-
-    self enableOrDisableSelectionMenuEntries
+editMenu
+    "return the views middleButtonMenu"
+
+    |labels selectors m sub|
+
+    labels := #(
+"/                  'undo'
+		    'again'
+		    '-'
+		    'copy'
+		    'cut'
+		    'paste'
+		    '-'
+		    'accept'
+		    '='
+		    'others'
+	       ).
+
+    selectors := #(
+"/                  undo
+		    again
+		    nil
+		    copySelection
+		    cut
+		    paste
+		    nil
+		    accept
+		    nil
+		    others
+		   ).
+
+    m := PopUpMenu
+	    labels:(resources array:labels)
+	    selectors:selectors.
+
+    labels := #(
+		    'search ...'
+		    'goto ...'
+		    '-'
+		    'font ...'
+		    '-'
+		    'indent'
+		    '-'
+		    'save as ...'
+		    'print'
+		).
+
+     selectors := #(
+		     search
+		     gotoLine
+		     nil
+		     changeFont
+		     nil
+		     indent
+		     nil
+		     save
+		     print
+		    ).
+
+    sub := PopUpMenu
+		labels:(resources array:labels)
+		selectors:selectors
+		receiver:model.
+
+    m subMenuAt:#others put:sub.
+
+    readOnly ifTrue:[
+	m disable:#paste
+    ].
+    self hasSelection not ifTrue:[
+	m disable:#copySelection.
+    ].
+    (self hasSelection not or:[readOnly]) ifTrue:[
+	m disable:#cut.
+	sub disable:#indent.
+    ].
+    ^ m.
 !
 
 realize
@@ -256,10 +271,7 @@
 readOnly
     "make the text readonly"
 
-    readOnly ifFalse:[
-	readOnly := true.
-	self enableOrDisableSelectionMenuEntries
-    ]
+    readOnly := true
 !
 
 fixedSize
@@ -353,7 +365,7 @@
 
     |line lineSize leftRest rightRest visLine w      
      srcY    "{ Class: SmallInteger }" |
-    
+
     list isNil ifFalse:[
 	lineNr > (list size) ifFalse:[
 	    (colNr == 1) ifTrue:[
@@ -393,7 +405,8 @@
 		self redrawLine:lineNr.
 		self redrawLine:(lineNr + 1).
 		self waitForExpose
-	    ]
+	    ].
+	    self contentsChanged.
 	]
     ]
 !
@@ -437,7 +450,6 @@
 "
     list replaceFrom:(lineNr + 1) to:(list size) with:list startingAt:lineNr.
     list at:lineNr put:line.
-    self contentsChanged
 !
 
 insertLine:aString before:lineNr
@@ -449,6 +461,7 @@
     visLine := self listLineToVisibleLine:lineNr.
     (shown not or:[visLine isNil]) ifTrue:[
 	self withoutRedrawInsertLine:aString before:lineNr.
+	self contentsChanged.
 	^ self
     ].
 
@@ -462,7 +475,8 @@
 		   width:w
 		  height:((nLinesShown - visLine "- 1") * fontHeight).
     self redrawVisibleLine:visLine.
-    self waitForExpose
+    self waitForExpose.
+    self contentsChanged.
 !
 
 insertLines:someText from:start to:end before:lineNr
@@ -480,6 +494,7 @@
 	self withoutRedrawInsertLines:someText
 				 from:start to:end
 			       before:lineNr.
+	self contentsChanged.
 	^ self
     ].
 
@@ -508,7 +523,8 @@
 		      height:(height - dstY).
 	self redrawFromVisibleLine:visLine to:(visLine + nLines - 1).
 	self waitForExpose
-    ]
+    ].
+    self contentsChanged.
 !
 
 insert:aCharacter atLine:lineNr col:colNr
@@ -611,7 +627,6 @@
 "
     list replaceFrom:(lineNr + nLines) to:(list size) with:list startingAt:lineNr.
     list replaceFrom:lineNr to:(lineNr + nLines - 1) with:newLines startingAt:start.
-    self contentsChanged
 !
 
 withoutRedrawInsertStringWithoutCRs:aString atLine:lineNr col:colNr
@@ -2017,37 +2032,6 @@
 
 !EditTextView methodsFor:'selections'!
 
-disableSelectionMenuEntries
-    "disable relevant menu entries for a selection"
-
-    middleButtonMenu notNil ifTrue:[
-	super disableSelectionMenuEntries.
-	middleButtonMenu disable:#cut.
-	middleButtonMenu disable:#replace.
-	middleButtonMenu disable:#indent
-    ]
-!
-
-enableSelectionMenuEntries
-    "enable relevant menu entries for a selection"
-
-    middleButtonMenu notNil ifTrue:[
-	"if readonly, never enable destructive functions"
-	readOnly ifTrue:[
-	    super enableSelectionMenuEntries.
-	    middleButtonMenu disable:#cut.
-	    middleButtonMenu disable:#replace.
-	    middleButtonMenu disable:#indent.
-	    middleButtonMenu disable:#paste.
-	] ifFalse:[
-	    super enableSelectionMenuEntries.
-	    middleButtonMenu enable:#cut.
-	    middleButtonMenu enable:#replace.
-	    middleButtonMenu enable:#indent.
-	]
-    ]
-! 
-
 unselect
     "forget and unhilight selection - must take care of cursor here"