Reviewers: ,


Please review this at http://codereview.tryton.org/447001/

Affected files:
  M tryton/gui/window/view_form/view/form.py
  M tryton/gui/window/view_form/view/form_gtk/binary.py
  M tryton/gui/window/view_form/view/form_gtk/calendar.py
  M tryton/gui/window/view_form/view/form_gtk/image.py
  M tryton/gui/window/view_form/view/form_gtk/interface.py
  M tryton/gui/window/view_form/view/form_gtk/many2many.py
  M tryton/gui/window/view_form/view/form_gtk/many2one.py
  M tryton/gui/window/view_form/view/form_gtk/one2many.py
  M tryton/gui/window/view_form/view/form_gtk/richtextbox.py
  M tryton/gui/window/view_form/view/form_gtk/selection.py
  M tryton/gui/window/view_form/view/form_gtk/url.py
  M tryton/gui/window/win_form.py


Index: tryton/gui/window/view_form/view/form.py
===================================================================

--- a/tryton/gui/window/view_form/view/form.py
+++ b/tryton/gui/window/view_form/view/form.py
@@ -23,6 +23,7 @@
         for button in self.buttons:
             if isinstance(button, gtk.Button):
                 button.connect('clicked', self.button_clicked)
+                button.set_focus_on_click(False)

         # Force to display the first time it switches on a page
         # This avoids glitch in position of widgets
@@ -43,6 +44,7 @@
         vbox = gtk.VBox()
         vp = gtk.Viewport()
         vp.set_shadow_type(gtk.SHADOW_NONE)
+        vp.connect('leave-notify-event', self.leave)
         vp.add(self.widget)
         scroll = gtk.ScrolledWindow()
         scroll.add(vp)
@@ -165,6 +167,9 @@
                         notebook.set_current_page(i)
             focus_widget.grab_focus()

+    def leave(self, widget, event):
+        self.set_value()
+
     def button_clicked(self, widget):
         record_id = self.screen.save_current()
         record = self.screen.current_record

Index: tryton/gui/window/view_form/view/form_gtk/binary.py
===================================================================

--- a/tryton/gui/window/view_form/view/form_gtk/binary.py
+++ b/tryton/gui/window/view_form/view/form_gtk/binary.py
@@ -46,6 +46,7 @@
         self.but_new.set_image(img_new)
         self.but_new.set_relief(gtk.RELIEF_NONE)
         self.but_new.connect('clicked', self.sig_new)
+        self.but_new.connect('enter-notify-event', self.enter)
         self.tooltips.set_tip(self.but_new, _('Select a File...'))
         self.widget.pack_start(self.but_new, expand=False, fill=False)

@@ -56,6 +57,7 @@
             self.but_open.set_image(img_open)
             self.but_open.set_relief(gtk.RELIEF_NONE)
             self.but_open.connect('clicked', self.sig_open)
+            self.but_open.connect('enter-notify-event', self.enter)
             self.tooltips.set_tip(self.but_open, _('Open...'))
             self.widget.pack_start(self.but_open, expand=False, fill=False)
         else:
@@ -68,6 +70,7 @@
         self.but_save_as.set_image(img_save_as)
         self.but_save_as.set_relief(gtk.RELIEF_NONE)
         self.but_save_as.connect('clicked', self.sig_save_as)
+        self.but_save_as.connect('enter-notify-event', self.enter)
         self.tooltips.set_tip(self.but_save_as, _('Save As...'))
         self.widget.pack_start(self.but_save_as, expand=False, fill=False)

@@ -77,6 +80,7 @@
         self.but_remove.set_image(img_remove)
         self.but_remove.set_relief(gtk.RELIEF_NONE)
         self.but_remove.connect('clicked', self.sig_remove)
+        self.but_remove.connect('enter-notify-event', self.enter)
         self.tooltips.set_tip(self.but_remove, _('Clear'))
         self.widget.pack_start(self.but_remove, expand=False, fill=False)


Index: tryton/gui/window/view_form/view/form_gtk/calendar.py
===================================================================

--- a/tryton/gui/window/view_form/view/form_gtk/calendar.py
+++ b/tryton/gui/window/view_form/view/form_gtk/calendar.py
@@ -34,6 +34,7 @@
         self.but_open.set_image(img_find)
         self.but_open.set_relief(gtk.RELIEF_NONE)
         self.but_open.connect('clicked', self.cal_open)
+        self.but_open.connect('enter-notify-event', self.enter)
         self.but_open.set_alignment(0.5, 0.5)
         self.widget.pack_start(self.but_open, expand=False, fill=False)
         self.widget.set_focus_chain([self.entry])

Index: tryton/gui/window/view_form/view/form_gtk/image.py
===================================================================

--- a/tryton/gui/window/view_form/view/form_gtk/image.py
+++ b/tryton/gui/window/view_form/view/form_gtk/image.py
@@ -48,6 +48,7 @@
             self.but_add.set_image(img_add)
             self.but_add.set_relief(gtk.RELIEF_NONE)
             self.but_add.connect('clicked', self.sig_add)
+            self.but_add.connect('enter-notify-event', self.enter)
             self.tooltips.set_tip(self.but_add, _('Select an Image...'))
             hbox.pack_start(self.but_add, expand=False, fill=False)

@@ -59,6 +60,7 @@
                 self.but_open.set_image(img_open)
                 self.but_open.set_relief(gtk.RELIEF_NONE)
                 self.but_open.connect('clicked', self.sig_open)
+                self.but_open.connect('enter-notify-event', self.enter)
                 self.tooltips.set_tip(self.but_open, _('Open...'))
                 hbox.pack_start(self.but_open, expand=False, fill=False)
             else:
@@ -71,6 +73,7 @@
             self.but_save_as.set_image(img_save_as)
             self.but_save_as.set_relief(gtk.RELIEF_NONE)
             self.but_save_as.connect('clicked', self.sig_save_as)
+            self.but_save_as.connect('enter-notify-event', self.enter)
             self.tooltips.set_tip(self.but_save_as, _('Save As...'))
             hbox.pack_start(self.but_save_as, expand=False, fill=False)

@@ -81,6 +84,7 @@
             self.but_remove.set_image(img_remove)
             self.but_remove.set_relief(gtk.RELIEF_NONE)
             self.but_remove.connect('clicked', self.sig_remove)
+            self.but_remove.connect('enter-notify-event', self.enter)
             self.tooltips.set_tip(self.but_remove, _('Clear'))
             hbox.pack_start(self.but_remove, expand=False, fill=False)


Index: tryton/gui/window/view_form/view/form_gtk/interface.py
===================================================================

--- a/tryton/gui/window/view_form/view/form_gtk/interface.py
+++ b/tryton/gui/window/view_form/view/form_gtk/interface.py
@@ -164,6 +164,10 @@
     def cancel(self):
         pass

+    def enter(self, widget, event):
+        if self.view:
+            self.view.set_value()
+

 class TranslateDialog(NoModal):

@@ -295,6 +299,7 @@
         button.set_image(img)
         button.set_relief(gtk.RELIEF_NONE)
         button.connect('clicked', self.translate)
+        button.connect('enter-notify-event', self.enter)
         return button

     def translate(self, widget):

Index: tryton/gui/window/view_form/view/form_gtk/many2many.py
===================================================================

--- a/tryton/gui/window/view_form/view/form_gtk/many2many.py
+++ b/tryton/gui/window/view_form/view/form_gtk/many2many.py
@@ -43,6 +43,7 @@
         self.but_add = gtk.Button()
         tooltips.set_tip(self.but_add, _('Add'))
         self.but_add.connect('clicked', self._sig_add)
+        self.but_add.connect('enter-notify-event', self.enter)
         img_add = gtk.Image()
         img_add.set_from_stock('tryton-list-add',
             gtk.ICON_SIZE_SMALL_TOOLBAR)
@@ -54,6 +55,7 @@
         self.but_remove = gtk.Button()
         tooltips.set_tip(self.but_remove, _('Remove <Del>'))
         self.but_remove.connect('clicked', self._sig_remove)
+        self.but_remove.connect('enter-notify-event', self.enter)
         img_remove = gtk.Image()
         img_remove.set_from_stock('tryton-list-remove',
             gtk.ICON_SIZE_SMALL_TOOLBAR)

Index: tryton/gui/window/view_form/view/form_gtk/many2one.py
===================================================================

--- a/tryton/gui/window/view_form/view/form_gtk/many2one.py
+++ b/tryton/gui/window/view_form/view/form_gtk/many2one.py
@@ -44,6 +44,7 @@
         self.but_open.set_image(img_find)
         self.but_open.set_relief(gtk.RELIEF_NONE)
         self.but_open.connect('clicked', self.sig_edit)
+        self.but_open.connect('enter-notify-event', self.enter)
         self.but_open.set_alignment(0.5, 0.5)

         self.but_new = gtk.Button()
@@ -52,6 +53,7 @@
         self.but_new.set_image(img_new)
         self.but_new.set_relief(gtk.RELIEF_NONE)
         self.but_new.connect('clicked', self.sig_new)
+        self.but_new.connect('enter-notify-event', self.enter)
         self.but_new.set_alignment(0.5, 0.5)

         self.widget.pack_end(self.but_new, expand=False, fill=False)

Index: tryton/gui/window/view_form/view/form_gtk/one2many.py
===================================================================

--- a/tryton/gui/window/view_form/view/form_gtk/one2many.py
+++ b/tryton/gui/window/view_form/view/form_gtk/one2many.py
@@ -46,6 +46,7 @@
             self.but_add = gtk.Button()
             tooltips.set_tip(self.but_add, _('Add'))
             self.but_add.connect('clicked', self._sig_add)
+            self.but_add.connect('enter-notify-event', self.enter)
             img_add = gtk.Image()
             img_add.set_from_stock('tryton-list-add',
                 gtk.ICON_SIZE_SMALL_TOOLBAR)
@@ -57,6 +58,7 @@
             self.but_remove = gtk.Button()
             tooltips.set_tip(self.but_remove, _('Remove <Del>'))
             self.but_remove.connect('clicked', self._sig_remove, True)
+            self.but_remove.connect('enter-notify-event', self.enter)
             img_remove = gtk.Image()
             img_remove.set_from_stock('tryton-list-remove',
                 gtk.ICON_SIZE_SMALL_TOOLBAR)
@@ -70,6 +72,7 @@
         self.but_new = gtk.Button()
         tooltips.set_tip(self.but_new, _('Create a new record <F3>'))
         self.but_new.connect('clicked', self._sig_new)
+        self.but_new.connect('enter-notify-event', self.enter)
         img_new = gtk.Image()
         img_new.set_from_stock('tryton-new', gtk.ICON_SIZE_SMALL_TOOLBAR)
         img_new.set_alignment(0.5, 0.5)
@@ -80,6 +83,7 @@
         self.but_open = gtk.Button()
         tooltips.set_tip(self.but_open, _('Edit selected record <F2>'))
         self.but_open.connect('clicked', self._sig_edit)
+        self.but_open.connect('enter-notify-event', self.enter)
         img_open = gtk.Image()
         img_open.set_from_stock('tryton-open', gtk.ICON_SIZE_SMALL_TOOLBAR)
         img_open.set_alignment(0.5, 0.5)
@@ -90,6 +94,7 @@
         self.but_del = gtk.Button()
         tooltips.set_tip(self.but_del, _('Delete selected record <Del>'))
         self.but_del.connect('clicked', self._sig_remove, False)
+        self.but_del.connect('enter-notify-event', self.enter)
         img_del = gtk.Image()
img_del.set_from_stock('tryton-delete', gtk.ICON_SIZE_SMALL_TOOLBAR)
         img_del.set_alignment(0.5, 0.5)
@@ -100,6 +105,7 @@
         self.but_undel = gtk.Button()
tooltips.set_tip(self.but_undel, _('Undelete selected record <Ins>'))
         self.but_undel.connect('clicked', self._sig_undelete)
+        self.but_undel.connect('enter-notify-event', self.enter)
         img_undel = gtk.Image()
img_undel.set_from_stock('tryton-undo', gtk.ICON_SIZE_SMALL_TOOLBAR)
         img_undel.set_alignment(0.5, 0.5)
@@ -112,6 +118,7 @@
         self.but_pre = gtk.Button()
         tooltips.set_tip(self.but_pre, _('Previous'))
         self.but_pre.connect('clicked', self._sig_previous)
+        self.but_pre.connect('enter-notify-event', self.enter)
         img_pre = gtk.Image()
         img_pre.set_from_stock('tryton-go-previous',
             gtk.ICON_SIZE_SMALL_TOOLBAR)
@@ -126,6 +133,7 @@
         self.but_next = gtk.Button()
         tooltips.set_tip(self.but_next, _('Next'))
         self.but_next.connect('clicked', self._sig_next)
+        self.but_next.connect('enter-notify-event', self.enter)
         img_next = gtk.Image()
img_next.set_from_stock('tryton-go-next', gtk.ICON_SIZE_SMALL_TOOLBAR)
         img_next.set_alignment(0.5, 0.5)
@@ -138,6 +146,7 @@
         but_switch = gtk.Button()
         tooltips.set_tip(but_switch, _('Switch'))
         but_switch.connect('clicked', self.switch_view)
+        but_switch.connect('enter-notify-event', self.enter)
         img_switch = gtk.Image()
         img_switch.set_from_stock('tryton-fullscreen',
             gtk.ICON_SIZE_SMALL_TOOLBAR)

Index: tryton/gui/window/view_form/view/form_gtk/richtextbox.py
===================================================================

--- a/tryton/gui/window/view_form/view/form_gtk/richtextbox.py
+++ b/tryton/gui/window/view_form/view/form_gtk/richtextbox.py
@@ -187,6 +187,7 @@
self.tools['markup'].set_tooltip_text(_('Change the markup text view'))
         # Packing widgets
         tool_bar = gtk.Toolbar()
+        tool_bar.connect('enter-notify-event', self.enter)

         tool_bar.set_style(gtk.TOOLBAR_ICONS)
         for tag in tags:

Index: tryton/gui/window/view_form/view/form_gtk/selection.py
===================================================================

--- a/tryton/gui/window/view_form/view/form_gtk/selection.py
+++ b/tryton/gui/window/view_form/view/form_gtk/selection.py
@@ -14,6 +14,8 @@
super(Selection, self).__init__(field_name, model_name, attrs=attrs)

         self.widget = gtk.HBox(spacing=3)
+        ev_box = gtk.EventBox()
+        ev_box.connect('enter-notify-event', self.enter)
         self.entry = gtk.ComboBoxEntry()
         child = self.entry.child
         child.set_property('activates_default', True)
@@ -25,7 +27,8 @@
         child.connect_after('focus-out-event', self.sig_activate)
         child.connect('changed', self.send_modified)
         self.entry.connect('notify::active', lambda *a: self._focus_out())
-        self.widget.pack_start(self.entry)
+        ev_box.add(self.entry)
+        self.widget.pack_start(ev_box)
         self.widget.set_focus_chain([child])

         self._selection = {}

Index: tryton/gui/window/view_form/view/form_gtk/url.py
===================================================================

--- a/tryton/gui/window/view_form/view/form_gtk/url.py
+++ b/tryton/gui/window/view_form/view/form_gtk/url.py
@@ -19,6 +19,7 @@
         self.button.set_image(img)
         self.button.set_relief(gtk.RELIEF_NONE)
         self.button.connect('clicked', self.button_clicked)
+        self.button.connect('enter-notify-event', self.enter)
         self.button.set_alignment(0.5, 0.5)
         self.widget.pack_start(self.button, expand=False, fill=False)
         self.widget.set_focus_chain([self.entry])

Index: tryton/gui/window/win_form.py
===================================================================

--- a/tryton/gui/window/win_form.py
+++ b/tryton/gui/window/win_form.py
@@ -54,9 +54,11 @@
             icon_cancel = gtk.STOCK_CANCEL
             self.but_cancel = self.win.add_button(icon_cancel,
                     gtk.RESPONSE_CANCEL)
+            self.but_cancel.set_focus_on_click(False)

         self.but_ok = self.win.add_button(gtk.STOCK_OK,
             gtk.RESPONSE_OK)
+        self.but_ok.set_focus_on_click(False)
         if new and self.many:
             self.but_ok.add_accelerator('clicked',
                 self.accel_group, gtk.keysyms.Return,
@@ -65,6 +67,7 @@

             self.but_new = self.win.add_button(gtk.STOCK_NEW,
                 gtk.RESPONSE_ACCEPT)
+            self.but_new.set_focus_on_click(False)
             self.but_new.add_accelerator('clicked', self.accel_group,
                 gtk.keysyms.Return, gtk.gdk.CONTROL_MASK,
                 gtk.ACCEL_VISIBLE)
@@ -376,6 +379,8 @@
         validate = False
         cancel_responses = (gtk.RESPONSE_CANCEL, gtk.RESPONSE_DELETE_EVENT)
         self.screen.current_view.set_value()
+        if not self.win.get_focus():
+            return
         if (response_id not in cancel_responses
                 and self.screen.current_record is not None):
             validate = self.screen.current_record.validate(



--
[email protected] mailing list

Reply via email to