diff --git a/app/controllers/auto_completes_controller.rb b/app/controllers/auto_completes_controller.rb
index fd6b58ac4c77e2ab3b7c7f9f807ec843235f3cd4..27226ea8500ad55d0e0cc63282e0bd7e577380a9 100644
--- a/app/controllers/auto_completes_controller.rb
+++ b/app/controllers/auto_completes_controller.rb
@@ -37,9 +37,17 @@ class AutoCompletesController < ApplicationController
     if params[:remove_group_members].present?
       @group = Group.find(params[:remove_group_members])
       @removed_users = @group.users
-    else
-      @removed_users = []
     end
+
+    if params[:remove_watchers].present? && params[:klass].present?
+      watcher_class = params[:klass].constantize
+      if watcher_class.included_modules.include?(Redmine::Acts::Watchable) # check class is a watching class
+        @object = watcher_class.find(params[:remove_watchers])
+        @removed_users = @object.watcher_users
+      end
+    end
+
+    @removed_users ||= []
     
     @users = User.active.like(params[:q]).find(:all, :limit => 100) - @removed_users
     render :layout => false
diff --git a/app/views/watchers/_watchers.rhtml b/app/views/watchers/_watchers.rhtml
index f05e551d00b811c21d399cf4816b77981e4b3a92..741366cd3d7712a8db3b8aad30eb62627d979353 100644
--- a/app/views/watchers/_watchers.rhtml
+++ b/app/views/watchers/_watchers.rhtml
@@ -12,12 +12,12 @@
          	                    :object_id => watched},
        	             :method => :post,
       	             :html => {:id => 'new-watcher-form', :style => 'display:none;'}) do |f| %>
-    <% users = User.active.find(:all, :limit => 10) %>
+    <% users = User.active.find(:all, :limit => 25) - watched.watcher_users %>
 		<p><%= label_tag "user_search", l(:label_user_search) %><%= text_field_tag 'user_search', nil, :style => "width:98%;" %></p>
 		<%= observe_field(:user_search,
                  :frequency => 0.5,
                  :update => :users,
-                 :url => auto_complete_users_path,
+                 :url => auto_complete_users_path(:remove_watchers => watched.id, :klass => watched.class),
                  :with => 'q')
                   %>
 		
diff --git a/test/functional/auto_completes_controller_test.rb b/test/functional/auto_completes_controller_test.rb
index fb49e4914a7b38f12e6bf7f9b21098a5d93d7151..4ee6482d7b339fe0a3f577a2eef0d63bcbde7d93 100644
--- a/test/functional/auto_completes_controller_test.rb
+++ b/test/functional/auto_completes_controller_test.rb
@@ -109,5 +109,23 @@ class AutoCompletesControllerTest < ActionController::TestCase
         assert_select "input[type=checkbox][value=?]", @firstname.id, :count => 0
       end
     end
+    
+    context "restrict by removing issue watchers" do
+      setup do
+        @issue = Issue.find(2)
+        @issue.add_watcher(@login)
+        @issue.add_watcher(@firstname)
+        get :users, :q => 'complete', :remove_watchers => @issue.id, :klass => 'Issue'
+      end
+      
+      should_respond_with :success
+      
+      should "not include existing watchers" do
+        assert_select "input[type=checkbox][value=?]", @lastname.id
+
+        assert_select "input[type=checkbox][value=?]", @login.id, :count => 0
+        assert_select "input[type=checkbox][value=?]", @firstname.id, :count => 0
+      end
+    end
   end
 end