try to skip expensive TextChanged calls if possible