QuotePerhaps a skip-any-callbacks bool argument for each setterI don't really like this, mostly because of the amount of code that needs to be added in order to do this everywhere.
Quoteis there a way I can programmatically trigger that callback after calling 'setText()'?This can't really be done properly as the signal often needs to know some extra parameters. The emit function is the correct way to do it, but it definitely isn't something that I would like to recommend.
QuoteI would prefer that widget setters (such as 'setText()') do indeed signal their respective callbacksI personally also lean towards always sending a callback in a setter as well, it is even simpler to implement (setters can be called internally to not duplicate signal code).
I just checked the code for CheckBox and I noticed that I was wrong about what I said earlier. I thought I had removed the callback in CheckBox, but it was the other way around, it does trigger a callback in setChecked.
Since it turns out we actually want the same thing, I will add the callback to TextBox. Although the chance is small that it would break anyone's code, I should probably add a boolean parameter like you suggested to keep it compatible. Then for 0.9 (which is likely going to arrive very soon) I will remove the bool again and it will always send the callback.