Index: sansview/perspectives/fitting/basepage.py
===================================================================
--- sansview/perspectives/fitting/basepage.py	(revision b421b1a08ae7adfc77e2f7190153fd10bd1931b9)
+++ sansview/perspectives/fitting/basepage.py	(revision e2f7b927b8c7e3a7c17405cf7669b2bd969fa243)
@@ -1443,8 +1443,8 @@
         self.disp_list =self.model.getDispParamList()
         self.state.disp_list = self.disp_list
-        self.sizer4_4.Layout()
+        #self.sizer4_4.Layout()
         self.Layout()
-        self.SetScrollbars(20,20,25,65)
-        self.Refresh()
+        #self.SetScrollbars(20,20,25,65)
+        #self.Refresh()
         
        
@@ -1578,6 +1578,6 @@
         #draw the model with the current dispersity
         self._draw_model()
-        self.sizer4_4.Layout()
-        self.sizer4.Layout()
+        #self.sizer4_4.Layout()
+        #self.sizer4.Layout()
         self.Layout()
         #self.Refresh()
@@ -1625,10 +1625,11 @@
         from sans.models.dispersion_models import GaussianDispersion, ArrayDispersion
         if len(self.disp_cb_dict)==0:
+            self.save_current_state()
             self.sizer4_4.Clear(True)
-            self.sizer4_4.Layout()
-            self.sizer4.Layout()
+            #self.sizer4_4.Layout()
+            #self.sizer4.Layout()
             self.Layout()
-            self.Refresh()
-            self.SetScrollbars(20,20,25,65)   
+            #self.Refresh()
+            #self.SetScrollbars(20,20,25,65)   
             return 
         if (len(self.disp_cb_dict)>0) :
@@ -1647,9 +1648,9 @@
         ## save state into
         self.save_current_state()
-        self.sizer4_4.Layout()
-        self.sizer4.Layout()
+        #self.sizer4_4.Layout()
+        #self.sizer4.Layout()
         self.Layout()
-        self.SetScrollbars(20,20,25,65)    
-        self.Refresh()
+        #self.SetScrollbars(20,20,25,65)    
+        #self.Refresh()
         
             
@@ -1678,9 +1679,9 @@
         wx.PostEvent(self.parent, event)
         
-        self.sizer4_4.Layout()
-        self.sizer4.Layout()
-        self.Layout()
+        #self.sizer4_4.Layout()
+        #self.sizer4.Layout()
+        #self.Layout()
         self.SetScrollbars(20,20,25,65)
-        self.Refresh()
+        #self.Refresh()
         
     def _set_sizer_arraydispersion(self):
@@ -1749,7 +1750,8 @@
         iy +=1 
         self.sizer4_4.Add((20,20),(iy,ix),(1,1), wx.LEFT|wx.EXPAND|wx.ADJUST_MINSIZE, 15)        
-        self.sizer4_4.Layout()
-        self.sizer4.Layout()
-        self.SetScrollbars(20,20,25,65)
+        #self.sizer4_4.Layout()
+        #self.sizer4.Layout()
+        self.Layout()
+        #self.SetScrollbars(20,20,25,65)
         ## save state into
 
Index: sansview/perspectives/fitting/fitpage.py
===================================================================
--- sansview/perspectives/fitting/fitpage.py	(revision eacf1d66e4db3f04ac6ac0ae602ba07dc1067946)
+++ sansview/perspectives/fitting/fitpage.py	(revision e2f7b927b8c7e3a7c17405cf7669b2bd969fa243)
@@ -375,6 +375,6 @@
                         ix = 4
                         ctl3 = BasicPage.ModelTextCtrl(self, -1, size=(_BOX_WIDTH/2,20), style=wx.TE_PROCESS_ENTER,
-                                                       kill_focus_callback = self._on_paramRangeEnter,
-                                                       set_focus_callback  = self._on_paramRangeEnter)
+                                                       kill_focus_callback = self._onparamRangeEnter,
+                                                       set_focus_callback  = self._onparamRangeEnter)
 
                         self.sizer4_4.Add(ctl3, (iy,ix),(1,1), wx.EXPAND|wx.ADJUST_MINSIZE, 0)
@@ -383,6 +383,6 @@
                         ix = 5
                         ctl4 = BasicPage.ModelTextCtrl(self, -1, size=(_BOX_WIDTH/2,20), style=wx.TE_PROCESS_ENTER,
-                                                       kill_focus_callback = self._on_paramRangeEnter,
-                                                       set_focus_callback  = self._on_paramRangeEnter)
+                                                       kill_focus_callback = self._onparamRangeEnter,
+                                                       set_focus_callback  = self._onparamRangeEnter)
                         self.sizer4_4.Add(ctl4, (iy,ix),(1,1), wx.EXPAND|wx.ADJUST_MINSIZE, 0)
 
@@ -485,8 +485,4 @@
                                                        set_focus_callback  = self._onparamRangeEnter)
                         self.sizer4_4.Add(ctl4, (iy,ix),(1,1), wx.EXPAND|wx.ADJUST_MINSIZE, 0)
-                        if param_max==None or not numpy.isfinite(param_max):
-                            ctl4.SetValue("")
-                        else:
-                            ctl4.SetValue(str(param_max))
                         ctl4.Hide()
                         #if self.data.__class__.__name__ =="Data2D":
@@ -565,9 +561,9 @@
         ix =0
         iy +=1 
-        self.sizer4_4.Layout()
-        self.sizer4.Layout()
+        #self.sizer4_4.Layout()
+        #self.sizer4.Layout()
         self.Layout()
-        self.SetScrollbars(20,20,25,65)
-        self.Refresh()
+        #self.SetScrollbars(20,20,25,65)
+        #self.Refresh()
      
         
@@ -671,41 +667,5 @@
             wx.PostEvent(self.parent, event) 
      
-   
-    def _onparamRangeEnter(self, event):
-        """
-            Check validity of value enter in the parameters range field
-        """
-        tcrtl= event.GetEventObject()
-        if tcrtl.GetValue().lstrip().rstrip()!="":
-
-            try:
-                value = float(tcrtl.GetValue())
-                tcrtl.SetBackgroundColour(wx.WHITE)
-                tcrtl.Refresh()
-            except:
-                tcrtl.SetBackgroundColour("pink")
-                tcrtl.Refresh()
-                return
-        else:
-           tcrtl.SetBackgroundColour(wx.WHITE)
-           tcrtl.Refresh()  
-        self._onparamEnter_helper() 
-        
-        ##compute chisqr for range change
-        temp_smearer = None
-        if self.enable_smearer.GetValue():
-            msg=""
-            temp_smearer= self.smearer   
-         ##Calculate chi2
-       
-        self.compute_chisqr(smearer= temp_smearer)  
-        ## new state posted
-        if self.state_change:
-            #self._undo.Enable(True)
-            event = PageInfoEvent(page = self)
-            wx.PostEvent(self.parent, event)
-            self.state_change= False
-        
-        
+                
     def _onparamEnter(self,event):
         """ 
@@ -733,7 +693,6 @@
             return 
         
-    ### Same as _onparamRangeEnter but smear and chi^2 calculations are removed
-    ### and _onparamEnter_helper is not used, which causing mess sizer display
-    def _on_paramRangeEnter(self, event):
+
+    def _onparamRangeEnter(self, event):
         """
             Check validity of value enter in the parameters range field
@@ -744,5 +703,4 @@
                 value = float(tcrtl.GetValue())
                 tcrtl.SetBackgroundColour(wx.WHITE)
-                tcrtl.Refresh()
             except:
                 tcrtl.SetBackgroundColour("pink")
@@ -751,9 +709,18 @@
         else:
            tcrtl.SetBackgroundColour(wx.WHITE)
-           tcrtl.Refresh()  
-        self._onparamEnter_helper() 
-
+           
+        is_modified = False   
+        if self.model !=None:         
+            # Flag to register when a parameter has changed.            
+            is_modified =self._check_value_enter( self.fittable_param ,is_modified)
+            is_modified =self._check_value_enter( self.fixed_param ,is_modified)
+            is_modified =self._check_value_enter( self.parameters ,is_modified) 
+                
+        #self._onparamEnter_helper() 
+        tcrtl.Refresh()
         ## new state posted
-        if self.state_change:
+        if is_modified:
+            #self._undo.Enable(True)
+            self.save_current_state()
             #self._undo.Enable(True)
             event = PageInfoEvent(page = self)
@@ -1245,6 +1212,6 @@
                 ix += 1
                 ctl3 = BasicPage.ModelTextCtrl(self, -1, size=(_BOX_WIDTH/2,20), style=wx.TE_PROCESS_ENTER,
-                                               kill_focus_callback = self._on_paramRangeEnter,
-                                               set_focus_callback  = self._on_paramRangeEnter)
+                                               kill_focus_callback = self._onparamRangeEnter,
+                                               set_focus_callback  = self._onparamRangeEnter)
      
                 sizer.Add(ctl3, (iy,ix),(1,1), wx.EXPAND|wx.ADJUST_MINSIZE, 0)
@@ -1253,6 +1220,6 @@
                 ix += 1
                 ctl4 = BasicPage.ModelTextCtrl(self, -1, size=(_BOX_WIDTH/2,20), style=wx.TE_PROCESS_ENTER,
-                                               kill_focus_callback = self._on_paramRangeEnter,
-                                               set_focus_callback  = self._on_paramRangeEnter)
+                                               kill_focus_callback = self._onparamRangeEnter,
+                                               set_focus_callback  = self._onparamRangeEnter)
                 sizer.Add(ctl4, (iy,ix),(1,1), wx.EXPAND|wx.ADJUST_MINSIZE, 0)
       
@@ -1334,14 +1301,8 @@
                     ix += 1
                     ctl2 = wx.TextCtrl(self, -1, size=(_BOX_WIDTH,20), style=wx.TE_PROCESS_ENTER)
-                    ctl2.SetValue(str(format_number(fit_errs)))
+                    
                     sizer.Add(ctl2, (iy,ix),(1,1), wx.EXPAND|wx.ADJUST_MINSIZE, 0)
                     ctl2.Hide()
-                    if self.data.__class__.__name__ !="Data2D":
-                        ctl2.Hide()
-                    else:
-                      
-                        if not text2.IsShown():
-                            text2.Show(True)
-                        ctl2.Show(True)
+                    
                     
                     #param_min, param_max= self.model.details[item][1:]
