TextViewer.py
changeset 411 9ab97d517ae8
parent 407 0a324a874981
child 437 59e33406eea8
--- a/TextViewer.py	Mon Sep 21 12:06:15 2009 +0200
+++ b/TextViewer.py	Mon Sep 21 12:06:51 2009 +0200
@@ -157,7 +157,9 @@
         self.ParentWindow = window
         self.Controler = controler
 
-        self.SetModEventMask(wx.stc.STC_MOD_BEFOREINSERT|wx.stc.STC_MOD_BEFOREDELETE)
+        self.SetModEventMask(wx.stc.STC_MOD_BEFOREINSERT|
+                             wx.stc.STC_MOD_BEFOREDELETE|
+                             wx.stc.STC_PERFORMED_USER)
 
         self.Bind(wx.stc.EVT_STC_STYLENEEDED, self.OnStyleNeeded, id=ID_TEXTVIEWER)
         if controler:
@@ -190,21 +192,22 @@
     def OnModification(self, event):
         if not self.DisableEvents:
             mod_type = event.GetModificationType()
-            if not (mod_type&wx.stc.STC_PERFORMED_UNDO or mod_type&wx.stc.STC_PERFORMED_REDO):
-                if mod_type&wx.stc.STC_MOD_BEFOREINSERT:
-                    if self.CurrentAction == None:
-                        self.StartBuffering()
-                    elif self.CurrentAction[0] != "Add" or self.CurrentAction[1] != event.GetPosition() - 1:
-                        self.Controler.EndBuffering()
-                        self.StartBuffering()
-                    self.CurrentAction = ("Add", event.GetPosition())
-                elif mod_type&wx.stc.STC_MOD_BEFOREDELETE:
-                    if self.CurrentAction == None:
-                        self.StartBuffering()
-                    elif self.CurrentAction[0] != "Delete" or self.CurrentAction[1] != event.GetPosition() + 1:
-                        self.Controler.EndBuffering()
-                        self.StartBuffering()
-                    self.CurrentAction = ("Delete", event.GetPosition())
+            if mod_type&wx.stc.STC_MOD_BEFOREINSERT:
+                if self.CurrentAction == None:
+                    self.StartBuffering()
+                elif self.CurrentAction[0] != "Add" or self.CurrentAction[1] != event.GetPosition() - 1:
+                    self.Controler.EndBuffering()
+                    self.StartBuffering()
+                self.CurrentAction = ("Add", event.GetPosition())
+                wx.CallAfter(self.RefreshModel)
+            elif mod_type&wx.stc.STC_MOD_BEFOREDELETE:
+                if self.CurrentAction == None:
+                    self.StartBuffering()
+                elif self.CurrentAction[0] != "Delete" or self.CurrentAction[1] != event.GetPosition() + 1:
+                    self.Controler.EndBuffering()
+                    self.StartBuffering()
+                self.CurrentAction = ("Delete", event.GetPosition())
+                wx.CallAfter(self.RefreshModel)
         event.Skip()
     
     def OnDoDrop(self, event):
@@ -506,7 +509,6 @@
                 self.AutoCompSetIgnoreCase(True)
                 self.AutoCompShow(len(words[-1]), " ".join(kw))
         else:
-            wx.CallAfter(self.RefreshModel)
             event.Skip()
 
     def OnKillFocus(self, event):