--- a/CodeCompletionHelpView.st Sun Sep 15 13:26:52 2019 +0200
+++ b/CodeCompletionHelpView.st Sun Sep 15 15:17:57 2019 +0200
@@ -16,7 +16,8 @@
"{ NameSpace: Smalltalk }"
View subclass:#CodeCompletionHelpView
- instanceVariableNames:'myView editView delayedCloseAction checkAction'
+ instanceVariableNames:'myView editView delayedCloseAction checkAction
+ closeOnPointerLeave pointerEntered'
classVariableNames:''
poolDictionaries:''
category:'Interface-Help'
@@ -68,6 +69,10 @@
!CodeCompletionHelpView methodsFor:'accessing'!
+closeOnPointerLeave:aBoolean
+ closeOnPointerLeave := aBoolean.
+!
+
editView:aView
"my code editor view"
@@ -91,6 +96,8 @@
myView borderWidth:0.
myView origin:(0.0@0.0) corner:(1.0@1.0).
+ self enableDelegation.
+
"Modified: 27.4.1996 / 15:16:46 / cg"
! !
@@ -198,7 +205,8 @@
self installDelayedClose.
^ true.
].
-
+ self uninstallDelayedClose.
+
"/ (subViews notNil and:[aView == (subViews firstIfEmpty:nil)]) ifTrue:[
"/ self topView destroy
"/ ].
@@ -209,14 +217,26 @@
!
pointerEnter:state x:x y:y view:view
- self uninstallDelayedClose.
+ (view isComponentOf:myView) ifTrue:[
+ self uninstallDelayedClose.
+ pointerEntered := true.
+ ].
^ false
"Created: / 04-08-2018 / 17:01:39 / Claus Gittinger"
!
pointerLeave:state view:view
- self installDelayedClose.
+ (view isComponentOf:myView) ifTrue:[
+ closeOnPointerLeave ifTrue:[
+ pointerEntered == true ifTrue:[
+ pointerEntered := false.
+ self installDelayedClose.
+ ^ false
+ ].
+ ].
+ self halt.
+ ].
^ false
"Created: / 04-08-2018 / 16:57:18 / Claus Gittinger"
@@ -224,6 +244,7 @@
!
uninstallDelayedClose
+ closeOnPointerLeave := true.
delayedCloseAction notNil ifTrue:[
Processor removeTimedBlock:delayedCloseAction.
].
@@ -253,6 +274,23 @@
"Created: / 14-02-2019 / 15:33:26 / Claus Gittinger"
!
+enableDelegation
+ |helpMenuView|
+
+ myView notNil ifTrue:[
+ myView isScrollWrapper ifTrue:[
+ helpMenuView := myView scrolledView
+ ] ifFalse:[
+ helpMenuView := myView
+ ].
+ helpMenuView delegate:self.
+ helpMenuView enableEnterLeaveEvents.
+ helpMenuView enableMotionEvents.
+ helpMenuView enableButtonMotionEvents.
+ helpMenuView enableFocusEvents.
+ ].
+!
+
initStyle
"setup viewStyle specifics"
@@ -276,15 +314,16 @@
"Modified: / 26.10.1997 / 17:02:09 / cg"
!
+initialize
+ super initialize.
+ closeOnPointerLeave := true.
+ pointerEntered := false.
+!
+
realize
self create.
"/ self computeShape.
- self enableMotionEvents.
- self enableButtonMotionEvents.
- self enableFocusEvents.
- self subViews do:[:eachView |
- eachView delegate:self.
- ].
+ self enableDelegation.
"/ install a watcher to check for the editView being still present
"/ from time to time.