Index: trunk/FACT++/src/DimState.h
===================================================================
--- trunk/FACT++/src/DimState.h	(revision 13947)
+++ trunk/FACT++/src/DimState.h	(revision 13948)
@@ -37,5 +37,5 @@
     }
 
-    virtual void Handler(const EventImp &evt)
+    void HandlerImp(const EventImp &evt)
     {
         const bool disconnected = evt.GetSize()==0;
@@ -44,8 +44,18 @@
 
         msg = disconnected ? "" : evt.GetString();
-
+    }
+
+    void Callback(const EventImp &evt)
+    {
         if (fCallback)
             fCallback(evt);
     }
+
+    virtual void Handler(const EventImp &evt)
+    {
+        HandlerImp(evt);
+        Callback(evt);
+    }
+
 
     const Time &time() const { return info.first; }
@@ -127,9 +137,11 @@
     void Handler(const EventImp &evt)
     {
-        DimState::Handler(evt);
+        HandlerImp(evt);
 
         info.second = evt.GetSize()==4 ? evt.GetInt() : -256;
         if (info.second==0)
             info.second=-256;
+
+        Callback(evt);
     }
 
@@ -168,5 +180,5 @@
     void Handler(const EventImp &evt)
     {
-        DimState::Handler(evt);
+        HandlerImp(evt);
 
         shortmsg    = msg;
@@ -197,4 +209,6 @@
         shortmsg.erase(p0, p3-p0);
 
+        Callback(evt);
+
         const auto func = fCallbacks.find(file);
         if (func==fCallbacks.end())
