Index: trunk/MagicSoft/Mars/mmain/MStatusDisplay.cc
===================================================================
--- trunk/MagicSoft/Mars/mmain/MStatusDisplay.cc	(revision 2110)
+++ trunk/MagicSoft/Mars/mmain/MStatusDisplay.cc	(revision 2117)
@@ -485,5 +485,5 @@
 //
 MStatusDisplay::MStatusDisplay(Long_t t)
-: TGMainFrame(gClient->GetRoot(), 1, 1), fTimer(this, t, kTRUE), fStatus(kLoopNone), fLog(&gLog), fLogIdx(-1), fLogTimer(this, 250, kTRUE), fLogBox(NULL)
+: TGMainFrame(gClient->GetRoot(), 1, 1), fTimer(this, t, kTRUE), fStatus(kLoopNone), fLog(&gLog), fLogIdx(-1), fLogTimer(this, 250, kTRUE), fLogBox(NULL), fIsLocked(0)
 {
     gROOT->GetListOfSpecials()->Add(this);
@@ -758,5 +758,5 @@
     case kLoopStop:
     case kFileExit:
-        if (id==kFileExit && !TestBit(kIsLocked))
+        if (id==kFileExit && !fIsLocked)
             delete this;
         fStatus = (Status_t)id;
@@ -1075,4 +1075,7 @@
 void MStatusDisplay::SetNoContextMenu(Bool_t flag)
 {
+    if (fIsLocked>1)
+        return;
+
     flag ? SetBit(kNoContextMenu) : ResetBit(kNoContextMenu);
     for (int i=1; i<fTab->GetNumberOfTabs(); i++)
@@ -1253,4 +1256,7 @@
 void MStatusDisplay::StartUpdate(Int_t millisec)
 {
+    if (fIsLocked>1)
+        return;
+
     if (fTimer.GetTime()<TTime(0))
         return;
@@ -1264,4 +1270,7 @@
 void MStatusDisplay::StopUpdate()
 {
+    if (fIsLocked>1)
+        return;
+
     fTimer.Stop();
 }
Index: trunk/MagicSoft/Mars/mmain/MStatusDisplay.h
===================================================================
--- trunk/MagicSoft/Mars/mmain/MStatusDisplay.h	(revision 2110)
+++ trunk/MagicSoft/Mars/mmain/MStatusDisplay.h	(revision 2117)
@@ -72,4 +72,6 @@
     FontStruct_t fFont;
 
+    UInt_t fIsLocked;
+
     void AddMenuBar();
     void AddProgressBar();
@@ -100,7 +102,4 @@
     void UpdatePSHeader(const TString &name) const;
 
-    enum {
-        kIsLocked = BIT(14)
-    };
 public:
      MStatusDisplay(Long_t t=1000);
@@ -152,6 +151,6 @@
      void ClearStatus() { fStatus = kLoopNone; }
 
-     void Lock() { SetBit(kIsLocked); }
-     void UnLock() { ResetBit(kIsLocked); }
+     void Lock() { fIsLocked++; }
+     void UnLock() { if (fIsLocked>0) fIsLocked--; }
 
      Bool_t CheckTabForCanvas(int num) const;
