I can confirm this issue. I came around this first while doing research for #9330 but failed to report it properly yet :-/
What I can remember of this is that this is due to the fact that the used add-watcher mechanism is different at both states (during issue creation and after issue creation).
During issue creation the addable watcher users are retrieved via source:/trunk/app/views/issues/_form.html.erb@7791#L32 which proposes all members of the project wherein the issue is being created as addable watcher users:
<% @issue.project.users.sort.each do |user| -%>
After issue creation the addable watcher users are retrieved via
source:/trunk/app/views/watchers/_watchers.html.erb@7791#L19 which correctly proposes only the users who have actual permission to watch the to-be watched object as addable watcher users:
<p><%= f.select :user_id, (watched.addable_watcher_users.collect {|m| [m.name, m.id]}), :prompt => "--- #{l(:actionview_instancetag_blank_option)} ---" %>
This "way of retrieving" addable watcher users has some extras like:
- r3170, Users can not watch what they are not allowed to view.
- r5876, Users that can't view an issue are not proposed as watchers
- r5880, Fixed: validation error on issue creation when trying to add an invalid user as a watcher
Based on the above I'd suggest to change the way how addable watcher users are retrieved during issue creation. Instead of proposing @issue.project.users
I think it would be better if watched.addable_watcher_users
is being proposed.
Hope this is of any use...