diff --git a/tryton/gui/window/view_form/view/form.py b/tryton/gui/window/view_form/view/form.py index 74ccb77a9d..6c89d77d8b 100644 --- a/tryton/gui/window/view_form/view/form.py +++ b/tryton/gui/window/view_form/view/form.py @@ -35,13 +35,16 @@ class ViewForm(ParserView): scroll = gtk.ScrolledWindow() scroll.add(vp) scroll.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) - self.viewport = gtk.Viewport() - self.viewport.set_shadow_type(gtk.SHADOW_ETCHED_IN) - self.viewport.add(scroll) + scroll.set_placement(gtk.CORNER_TOP_LEFT) + viewport = gtk.Viewport() + viewport.set_shadow_type(gtk.SHADOW_ETCHED_IN) + viewport.add(scroll) width, height = self.widget.size_request() + if isinstance(self.screen.window, gtk.Dialog): + vbox.set_size_request(width or -1, height or -1) + vbox.pack_start(viewport, expand=True, fill=True) + self.widget = vbox - self.widget.set_size_request(width, height) - self.widget.pack_start(self.viewport, expand=True, fill=True) if toolbar and not CONFIG['client.modepda']: hbox = gtk.HBox(homogeneous=False) diff --git a/tryton/gui/window/view_form/view/form_gtk/many2many.py b/tryton/gui/window/view_form/view/form_gtk/many2many.py index e28dd1581b..12298ae648 100644 --- a/tryton/gui/window/view_form/view/form_gtk/many2many.py +++ b/tryton/gui/window/view_form/view/form_gtk/many2many.py @@ -64,6 +64,8 @@ class Many2Many(WidgetInterface): view_type=['tree'], views_preload=attrs.get('views', {}), row_activate=self._on_activate) + if not isinstance(self.screen.window, gtk.Dialog): + self.screen.widget.set_size_request(0, 0) self.widget.pack_start(self.screen.widget, expand=True, fill=True) self.screen.widget.connect('key_press_event', self.on_keypress) diff --git a/tryton/gui/window/view_form/view/form_gtk/one2many.py b/tryton/gui/window/view_form/view/form_gtk/one2many.py index 23c03f77fb..1233258257 100644 --- a/tryton/gui/window/view_form/view/form_gtk/one2many.py +++ b/tryton/gui/window/view_form/view/form_gtk/one2many.py @@ -166,6 +166,8 @@ class One2Many(WidgetInterface): self.screen.signal_connect(self, 'record-message', self._sig_label) menuitem_title.get_child().set_text(attrs.get('string', '')) + if not isinstance(self.screen.window, gtk.Dialog): + self.screen.widget.set_size_request(0, 0) self.widget.pack_start(self.screen.widget, expand=True, fill=True) self.screen.widget.connect('key_press_event', self.on_keypress) diff --git a/tryton/gui/window/view_form/view/list.py b/tryton/gui/window/view_form/view/list.py index 03b5455a46..c72ac8a057 100644 --- a/tryton/gui/window/view_form/view/list.py +++ b/tryton/gui/window/view_form/view/list.py @@ -150,16 +150,25 @@ class ViewList(ParserView): buttons, toolbar, notebooks, cursor_widget) self.store = None self.view_type = 'tree' - self.widget = gtk.VBox() - self.widget_tree = widget + + vbox = gtk.VBox() scroll = gtk.ScrolledWindow() - scroll.add(self.widget_tree) + scroll.add(self.widget) scroll.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) + scroll.set_placement(gtk.CORNER_TOP_LEFT) viewport = gtk.Viewport() viewport.set_shadow_type(gtk.SHADOW_ETCHED_IN) viewport.add(scroll) - self.widget.pack_start(viewport, expand=True, fill=True) + width, height = self.widget.size_request() + self.widget_tree = self.widget + + if isinstance(self.screen.window, gtk.Dialog): + vbox.set_size_request(width or -1, height or -1) + vbox.pack_start(viewport, expand=True, fill=True) + self.widget_tree.screen = screen + + self.widget = vbox self.reload = False self.children = children