Skip to content

Commit e20447c

Browse files
committed
[feenkcom/gtoolkit#4817] text editor cursor blinks
1 parent c07c0d9 commit e20447c

File tree

1 file changed

+65
-2
lines changed

1 file changed

+65
-2
lines changed

src/Brick-Editor/BrCursorElement.class.st

Lines changed: 65 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,80 @@ Class {
22
#name : #BrCursorElement,
33
#superclass : #BlElement,
44
#instVars : [
5-
'textPosition'
5+
'textPosition',
6+
'blinkingTask',
7+
'blinkingScheduleTask'
68
],
79
#category : #'Brick-Editor-UI'
810
}
911

12+
{ #category : #initialization }
13+
BrCursorElement >> doBlink [
14+
(self opacity > 0.5)
15+
ifTrue: [ self opacity: 0.0 ]
16+
ifFalse: [ self opacity: 1.0 ]
17+
]
18+
1019
{ #category : #initialization }
1120
BrCursorElement >> initialize [
1221
super initialize.
1322

1423
textPosition := 0.
15-
self focusability: BlFocusability none
24+
self focusability: BlFocusability none.
25+
26+
self scheduleBlinking
27+
]
28+
29+
{ #category : #'as yet unclassified' }
30+
BrCursorElement >> onAddedToSceneGraph [
31+
super onAddedToSceneGraph.
32+
33+
self scheduleBlinking
34+
]
35+
36+
{ #category : #'as yet unclassified' }
37+
BrCursorElement >> onPositionInSpaceChanged [
38+
super onPositionChanged.
39+
40+
self stopBlinking.
41+
self scheduleBlinking
42+
]
43+
44+
{ #category : #'as yet unclassified' }
45+
BrCursorElement >> onRemovedFromSceneGraph [
46+
super onRemovedFromSceneGraph.
47+
48+
self scheduleBlinking
49+
]
50+
51+
{ #category : #'as yet unclassified' }
52+
BrCursorElement >> scheduleBlinking [
53+
self opacity: 1.0.
54+
blinkingScheduleTask ifNotNil: [ :aTask | aTask stop ].
55+
blinkingTask ifNotNil: [ :aTask | aTask stop ].
56+
blinkingScheduleTask := (BlDelayedTaskAction new
57+
delay: 1 second;
58+
action: [ self startBlinking ]).
59+
60+
self enqueueTask: blinkingScheduleTask
61+
]
62+
63+
{ #category : #'as yet unclassified' }
64+
BrCursorElement >> startBlinking [
65+
blinkingTask := (BlRepeatedTaskAction new
66+
delay: 1 second;
67+
action: [ self doBlink ]).
68+
self enqueueTask: blinkingTask
69+
]
70+
71+
{ #category : #accessing }
72+
BrCursorElement >> stopBlinking [
73+
blinkingScheduleTask ifNotNil: [ :aTask | aTask stop ].
74+
blinkingTask ifNotNil: [ :aTask | aTask stop ].
75+
blinkingScheduleTask := nil.
76+
blinkingTask := nil.
77+
78+
self opacity: 1.0
1679
]
1780

1881
{ #category : #accessing }

0 commit comments

Comments
 (0)