diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/GlobalSearchTabItemFactory.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/GlobalSearchTabItemFactory.java
index 396c6a9a6f39b09f415b74c0ccfd46037f93cb09..83d21db2691b2b72915bbc44e97033dc80485b14 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/GlobalSearchTabItemFactory.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/GlobalSearchTabItemFactory.java
@@ -35,30 +35,35 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.dto.SearchableEntity;
 public class GlobalSearchTabItemFactory
 {
 
+    static class ActionFinish {
+        public void finish() {}
+    }
+    
     /**
      * opens a new tab if there are search results.
      */
     public static void openTabIfEntitiesFound(
             final IViewContext<ICommonClientServiceAsync> viewContext,
-            final SearchableEntity searchableEntity, final String queryText)
+            final SearchableEntity searchableEntity, final String queryText, final ActionFinish actionFinish)
     {
 
-        openTab(viewContext, searchableEntity, queryText, false);
+        openTab(viewContext, searchableEntity, queryText, false, actionFinish);
     }
 
     /**
      * always opens a new tab, regardless if there were any search entities found.
      */
     public static void openTab(final IViewContext<ICommonClientServiceAsync> viewContext,
-            final SearchableEntity searchableEntity, final String queryText)
+            final SearchableEntity searchableEntity, final String queryText, final ActionFinish actionFinish)
     {
 
-        openTab(viewContext, searchableEntity, queryText, true);
+        openTab(viewContext, searchableEntity, queryText, true, actionFinish);
     }
 
     private static void openTab(final IViewContext<ICommonClientServiceAsync> viewContext,
             final SearchableEntity searchableEntity, final String queryText,
-            final boolean openIfNoEntitiesFound)
+            final boolean openIfNoEntitiesFound,
+            final ActionFinish actionFinish)
     {
 
         final boolean useWildcardSearchMode =
@@ -82,6 +87,10 @@ public class GlobalSearchTabItemFactory
                 @Override
                 public void postRefresh(boolean wasSuccessful)
                 {
+                    if(actionFinish != null) {
+                        actionFinish.finish();
+                    }
+                    
                     if (firstCall == false)
                     {
                         return;
@@ -102,7 +111,6 @@ public class GlobalSearchTabItemFactory
                     }
 
                     DispatcherHelper.dispatchNaviEvent(tabFactory);
-
                 }
             });
     }
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/SearchWidget.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/SearchWidget.java
index a4e31b05beb8aa9b8ddde675d184a3fed7b75c5a..b1e8fc34f02e79429e8719f3ef5c1a7040d6410f 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/SearchWidget.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/SearchWidget.java
@@ -24,6 +24,7 @@ import com.google.gwt.user.client.History;
 
 import ch.systemsx.cisd.common.shared.basic.string.StringUtils;
 import ch.systemsx.cisd.openbis.generic.client.web.client.ICommonClientServiceAsync;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.GlobalSearchTabItemFactory.ActionFinish;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.locator.GlobalSearchLocatorResolver;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.locator.ViewLocator;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.EnterKeyListener;
@@ -63,7 +64,7 @@ public final class SearchWidget extends LayoutContainer
     private final ButtonWithLoadingMask searchButton;
 
     private final EnterKeyListener enterKeyListener;
-
+    
     public SearchWidget(final IViewContext<ICommonClientServiceAsync> viewContext)
     {
         final TableRowLayout tableRowLayout = createLayout();
@@ -136,8 +137,9 @@ public final class SearchWidget extends LayoutContainer
 
         // reset the text field
         textField.setValue("");
-
+        searchButton.setEnabled(false);
         SearchableEntity selectedEntity = entityChooser.getSelectedSearchableEntity();
+        
         if (viewContext.isSimpleOrEmbeddedMode())
         {
             // redirect to another URL
@@ -146,10 +148,15 @@ public final class SearchWidget extends LayoutContainer
             History.newItem(url);
         } else
         {
+            ActionFinish searchFinish = new ActionFinish() {
+                public void finish() {
+                    searchButton.setEnabled(true);
+                };
+            };
+            
             GlobalSearchTabItemFactory.openTabIfEntitiesFound(viewContext, selectedEntity,
-                    queryText);
+                    queryText, searchFinish);
         }
-
     }
 
     private static boolean hasOnlyWildcards(final String queryText)
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/locator/GlobalSearchLocatorResolver.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/locator/GlobalSearchLocatorResolver.java
index f5348074d2df679b39aa77605725127898a9cd82..0612140791f893d63246bf4b2d5c0248107d7c16 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/locator/GlobalSearchLocatorResolver.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/locator/GlobalSearchLocatorResolver.java
@@ -36,7 +36,7 @@ public class GlobalSearchLocatorResolver extends AbstractViewLocatorResolver
         // TODO KE: 2011-02-16 we should parse queries that can contain spaces
         final String queryText = getMandatoryParameter(locator, QUERY_PARAMETER_KEY);
 
-        GlobalSearchTabItemFactory.openTab(viewContext, selectedSearchableEntity, queryText);
+        GlobalSearchTabItemFactory.openTab(viewContext, selectedSearchableEntity, queryText, null);
     }
 
 
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/widget/ButtonWithLoadingMask.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/widget/ButtonWithLoadingMask.java
index 24dcbbe5075da24a3d3acb999d733d50dd69f179..6b81a6b59a62c30dba4382ae4a7ae51cefd8a4fe 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/widget/ButtonWithLoadingMask.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/widget/ButtonWithLoadingMask.java
@@ -124,6 +124,7 @@ public abstract class ButtonWithLoadingMask extends LayoutContainer
     private final static Image createLoadingImage()
     {
         final Image image = new Image(LOADING_IMAGE_URL);
+        image.setSize("19px", "19px");
         image.setVisible(false);
         return image;
     }