This feature appeared in Sitecore 8.2, which is changing the workflow state value for datasource items together with the context page item (only in Experience Editor). Here is a great summary article related to these improvements.
I was not fully satisfied with this because by default this only collects the datasource items and does not the children items of a datasource. This is an issue when you have something like a list component which shows the children items. What I have found is:
<command name="webedit:workflowwithdatasourceitems" type="Sitecore.ExperienceEditor.WebEdit.Commands.WorkflowWithDatasourceItems, Sitecore.ExperienceEditor" />
So I just needed to overwrite this command and put my logic there:
And the related config what I have mentioned above: