File tree Expand file tree Collapse file tree 2 files changed +15
-1
lines changed Expand file tree Collapse file tree 2 files changed +15
-1
lines changed Original file line number Diff line number Diff line change @@ -203,11 +203,15 @@ public function setInput($input)
203
203
return $ this ;
204
204
}
205
205
206
+ // remember old input length if echo replacement is used
207
+ $ oldlen = (is_string ($ this ->echo )) ? $ this ->strlen ($ this ->linebuffer ) : null ;
208
+
206
209
$ this ->linebuffer = $ input ;
207
210
$ this ->linepos = $ this ->strlen ($ this ->linebuffer );
208
211
209
212
// only redraw if input should be echo'ed (i.e. is not hidden anyway)
210
- if ($ this ->echo !== false ) {
213
+ // and echo replacement is used, make sure the input length changes
214
+ if ($ this ->echo !== false && $ this ->linepos !== $ oldlen ) {
211
215
$ this ->redraw ();
212
216
}
213
217
Original file line number Diff line number Diff line change @@ -124,6 +124,16 @@ public function testSettingInputWithEchoAsteriskDoesRedraw()
124
124
$ this ->assertSame ($ this ->readline , $ this ->readline ->setInput ('test ' ));
125
125
}
126
126
127
+ public function testSettingInputWithSameLengthWithEchoAsteriskDoesNotNeedToRedraw ()
128
+ {
129
+ $ this ->readline ->setInput ('test ' );
130
+ $ this ->readline ->setEcho ('* ' );
131
+
132
+ $ this ->output ->expects ($ this ->never ())->method ('write ' );
133
+
134
+ $ this ->assertSame ($ this ->readline , $ this ->readline ->setInput ('demo ' ));
135
+ }
136
+
127
137
public function testSettingInputWithoutEchoDoesNotNeedToRedraw ()
128
138
{
129
139
$ this ->readline ->setEcho (false );
You can’t perform that action at this time.
0 commit comments