Fix parent window of Dialogs opened from field

The window attribute is not always the right parent window when the form is in
a Dialog.

issue2064
review49001
This commit is contained in:
Cédric Krier committed 2011-06-23 16:55:44 +02:00
1 parent 7c08d5fb69
commit 92b7dcc67c
5 files changed
+16 -14

No files matched your search

@@ -116,7 +116,7 @@ class Binary(WidgetInterface):
def sig_new(self, widget=None):
filename = file_selection(_('Open...'),
parent=self.window)
parent=self.widget.get_toplevel())
if filename and self.field:
self.field.set_client(self.record,
base64.encodestring(open(filename, 'rb').read()))
@@ -144,7 +144,8 @@ class Binary(WidgetInterface):
if self.filename_field:
filename = self.filename_field.get(self.record)
filename = file_selection(_('Save As...'), filename=filename,
parent=self.window, action=gtk.FILE_CHOOSER_ACTION_SAVE)
parent=self.widget.get_toplevel(),
action=gtk.FILE_CHOOSER_ACTION_SAVE)
if filename:
with open(filename,'wb') as fp:
fp.write(base64.decodestring(self.field.get(self.record)))
@@ -134,8 +134,9 @@ class Many2Many(WidgetInterface):
return False
if len(ids) != 1 or not value:
win = WinSearch(self.attrs['relation'], sel_multi=True, ids=ids,
context=context, domain=domain, parent=self.window,
views_preload=self.attrs.get('views', {}))
context=context, domain=domain,
parent=self.widget.get_toplevel(),
views_preload=self.attrs.get('views', {}))
ids = win.run()
res_id = None
@@ -159,7 +160,7 @@ class Many2Many(WidgetInterface):
def _sig_edit(self):
if self.screen.current_record:
win = WinForm(self.screen, self.window)
win = WinForm(self.screen, self.widget.get_toplevel())
if win.run():
self.screen.current_record.save()
else:
@@ -128,7 +128,7 @@ class Many2One(WidgetInterface):
win = WinSearch(self.attrs['relation'], sel_multi=False,
ids=ids, context=context, domain=domain,
parent=self.window,
parent=self.widget.get_toplevel(),
views_preload=self.attrs.get('views', {}))
ids = win.run()
if ids:
@@ -157,7 +157,7 @@ class Many2One(WidgetInterface):
def sig_new(self, *args):
self.focus_out = False
screen = self.get_screen()
win = WinForm(screen, self.window, new=True)
win = WinForm(screen, self.widget.get_toplevel(), new=True)
if win.run():
if screen.save_current():
value = (screen.current_record.id,
@@ -173,7 +173,7 @@ class Many2One(WidgetInterface):
if value:
screen = self.get_screen()
screen.load([self.field.get(self.record)])
win = WinForm(screen, self.window)
win = WinForm(screen, self.widget.get_toplevel())
while win.run():
if screen.save_current():
value = (screen.current_record.id,
@@ -214,7 +214,7 @@ class Many2One(WidgetInterface):
win = WinSearch(self.attrs['relation'], sel_multi=False,
ids=ids, context=context,
domain=domain, parent=self.window,
domain=domain, parent=self.widget.get_toplevel(),
views_preload=self.attrs.get('views', {}))
ids = win.run()
if ids:
@@ -241,7 +241,7 @@ class One2Many(WidgetInterface):
self.screen.new(context=ctx)
self.screen.current_view.widget.set_sensitive(True)
else:
win = WinForm(self.screen, self.window, new=True,
win = WinForm(self.screen, self.widget.get_toplevel(), new=True,
many=True, context=ctx)
win.run()
win.destroy()
@@ -256,7 +256,7 @@ class One2Many(WidgetInterface):
if not record.validate(fields):
self.screen.display()
return
win = WinForm(self.screen, self.window)
win = WinForm(self.screen, self.widget.get_toplevel())
win.run()
win.destroy()
@@ -156,7 +156,7 @@ class Reference(WidgetInterface):
if not leave:
screen = Screen(model, self.window, mode=['form'])
screen.load([obj_id])
win = WinForm(screen, self.window)
win = WinForm(screen, self.widget.get_toplevel())
if win.run():
if screen.save_current():
value = (screen.current_record.id,
@@ -191,7 +191,7 @@ class Reference(WidgetInterface):
return True
win = WinSearch(model, sel_multi=False, ids=ids, context=context,
domain=domain, parent=self.window)
domain=domain, parent=self.widget.get_toplevel())
ids = win.run()
if ids:
self.field.set_client(self.record, (model, (ids[0], '')))
@@ -206,7 +206,7 @@ class Reference(WidgetInterface):
if not model:
return
screen = Screen(model, self.window, mode=['form'])
win = WinForm(screen, self.window, new=True)
win = WinForm(screen, self.widget.get_toplevel(), new=True)
if win.run():
if screen.save_current():
value = (screen.current_record.id,