Index: trunk/Mars/mbase/MStatusDisplay.cc
===================================================================
--- trunk/Mars/mbase/MStatusDisplay.cc	(revision 11411)
+++ trunk/Mars/mbase/MStatusDisplay.cc	(revision 11412)
@@ -1201,4 +1201,22 @@
         return;
 
+    //
+    // If we are in a multithreaded environment (gThreadXAR) we
+    // have to make sure, that thus function is called from
+    // the main thread.
+    //
+    if (gThreadXAR)
+    {
+        // Tell the X-Requester how to call this method
+        const TString str = MString::Format("%ld", (ULong_t)f);
+
+        TMethodCall call(IsA(), "UpdateTab", "NULL");
+        void *arr[4] = { NULL, &call, this, (void*)(const char*)str };
+
+        // If this is not the main thread return
+        if (((*gThreadXAR)("METH", 4, arr, NULL)))
+            return;
+    }
+
     TCanvas *c=GetCanvas(*f);
     if (!c)
@@ -1208,24 +1226,13 @@
     const TString title = c->GetTitle();
 
-    if (!title.IsNull() && name != title)
-        SetStatusLine1(title);
-
-    //
-    // If we are in a multithreaded environment (gThreadXAR) we
-    // have to make sure, that thus function is called from
-    // the main thread.
-    //
-    if (gThreadXAR)
-    {
-        // Tell the X-Requester how to call this method
-        TString str = MString::Format("%d", (ULong_t)f);
-
-        TMethodCall call(IsA(), "UpdateTab", "NULL");
-        void *arr[4] = { NULL, &call, this, (void*)(const char*)str };
-
-        // If this is not the main thread return
-        if (((*gThreadXAR)("METH", 4, arr, NULL)))
-            return;
-    }
+    if (!gROOT->IsBatch())
+        fStatusBar->SetText(title, 0);
+
+    // It seems that we cannot use this because an update
+    // initiated by a gui event can interfere with the regular
+    // update from the timer and then ProcessEvents will
+    // end in an infinite loop.
+    // SetStatusLine1(title);
+
 
     //
