Please review this at http://codereview.appspot.com/183144

Affected files:
  M tryton/gui/window/view_form/view/form_gtk/textbox.py


Index: tryton/gui/window/view_form/view/form_gtk/textbox.py
===================================================================
--- a/tryton/gui/window/view_form/view/form_gtk/textbox.py
+++ b/tryton/gui/window/view_form/view/form_gtk/textbox.py
@@ -35,6 +35,7 @@
         self.scrolledwindow.show_all()

         self.widget.pack_start(self.scrolledwindow)
+        self.lang = None

     def grab_focus(self):
         return self.textview.grab_focus()
@@ -52,22 +53,26 @@
                 spell = gtkspell.get_from_text_view(self.textview)
             except:
                 pass
-            if spell:
-                spell.detach()
-                del spell
+
             if not value and self.attrs.get('spell') \
                     and CONFIG['client.spellcheck'] \
                     and self._view and self._view.model:
                 language = self._view.model.expr_eval(self.attrs['spell'])
                 try:
-                    spell = gtkspell.Spell(self.textview)
-                    try:
-                        spell.set_language(language)
-                    except:
-                        spell.detach()
-                        del spell
+                    if not spell:
+                        spell = gtkspell.Spell(self.textview)
+                    if self.lang != language:
+                        try:
+                            spell.set_language(language)
+                        except:
+                            spell.detach()
+                            del spell
+                        self.lang = language
                 except:
                     pass
+            elif spell:
+                spell.detach()
+                del spell

     def _color_widget(self):
         return self.textview
@@ -95,22 +100,25 @@
                 spell = gtkspell.get_from_text_view(self.textview)
             except:
                 pass
-            if spell:
-                spell.detach()
-                del spell

             if self.attrs.get('spell') and CONFIG['client.spellcheck'] \
                     and self._view and self._view.model:
                 language = self._view.model.expr_eval(self.attrs['spell'])
                 try:
-                    spell = gtkspell.Spell(self.textview)
-                    try:
-                        spell.set_language(language)
-                    except:
-                        spell.detach()
-                        del spell
+                    if not spell:
+                        spell = gtkspell.Spell(self.textview)
+                    if self.lang != language:
+                        try:
+                            spell.set_language(language)
+                        except:
+                            spell.detach()
+                            del spell
+                        self.lang = language
                 except:
                     pass
+            elif spell:
+                spell.detach()
+                del spell

     def display_value(self):
         lines = (self._view.modelfield.get_client(self._view.model)
or '').split('\n')



-- 
Cédric Krier

B2CK SPRL
Rue de Rotterdam, 4
4000 Liège
Belgium
Tel: +32 472 54 46 59
Email: [email protected]
Jabber: [email protected]
Website: http://www.b2ck.com/
twitter: http://twitter.com/cedrickrier
identi.ca: http://identi.ca/cedrickrier

Attachment: pgp6nNrxmoUWa.pgp
Description: PGP signature

Reply via email to