Please review this at http://codereview.appspot.com/3939043/
Affected files:
M tryton/gui/window/view_form/view/form.py
M tryton/gui/window/view_form/view/form_gtk/many2many.py
M tryton/gui/window/view_form/view/form_gtk/one2many.py
M tryton/gui/window/view_form/view/list.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
@@ -35,12 +35,14 @@
scroll = gtk.ScrolledWindow()
scroll.add(vp)
scroll.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
+ scroll.set_placement(gtk.CORNER_TOP_LEFT)
self.viewport = gtk.Viewport()
self.viewport.set_shadow_type(gtk.SHADOW_ETCHED_IN)
self.viewport.add(scroll)
width, height = self.widget.size_request()
self.widget = vbox
- self.widget.set_size_request(width, height)
+ if isinstance(self.screen.window, gtk.Dialog):
+ self.widget.set_size_request(width or -1, height or -1)
self.widget.pack_start(self.viewport, expand=True, fill=True)
if toolbar and not CONFIG['client.modepda']:
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
@@ -64,7 +64,13 @@
view_type=['tree'], views_preload=attrs.get('views', {}),
row_activate=self._on_activate)
- self.widget.pack_start(self.screen.widget, expand=True, fill=True)
+ scroll = gtk.ScrolledWindow()
+ scroll.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
+ scroll.set_placement(gtk.CORNER_TOP_LEFT)
+ scroll.set_shadow_type(gtk.SHADOW_NONE)
+ scroll.add(self.screen.widget)
+ scroll.show()
+ self.widget.pack_start(scroll, expand=True, fill=True)
self.screen.widget.connect('key_press_event', self.on_keypress)
self.wid_text.connect('key_press_event', self.on_keypress)
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
@@ -166,7 +166,18 @@
self.screen.signal_connect(self, 'record-message', self._sig_label)
menuitem_title.get_child().set_text(attrs.get('string', ''))
- self.widget.pack_start(self.screen.widget, expand=True, fill=True)
+ if self.screen.current_view.view_type != 'form':
+ # Having a ScrolledWindow when the first widget is a form
+ # makes GTK reserve not enough spaces for it.
+ self.widget.pack_start(self.screen.widget, expand=True,
fill=True)
+ else:
+ scroll = gtk.ScrolledWindow()
+ scroll.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
+ scroll.set_placement(gtk.CORNER_TOP_LEFT)
+ scroll.set_shadow_type(gtk.SHADOW_NONE)
+ scroll.add(self.screen.widget)
+ scroll.show()
+ self.widget.pack_start(scroll, expand=True, fill=True)
self.screen.widget.connect('key_press_event', self.on_keypress)
if self.attrs.get('add_remove'):
Index: tryton/gui/window/view_form/view/list.py
===================================================================
--- a/tryton/gui/window/view_form/view/list.py
+++ b/tryton/gui/window/view_form/view/list.py
@@ -150,16 +150,28 @@
buttons, toolbar, notebooks, cursor_widget)
self.store = None
self.view_type = 'tree'
- self.widget = gtk.VBox()
- self.widget_tree = widget
+
+ vbox = gtk.VBox()
+ vp = gtk.Viewport()
+ vp.set_shadow_type(gtk.SHADOW_NONE)
+ vp.add(self.widget)
scroll = gtk.ScrolledWindow()
- scroll.add(self.widget_tree)
+ scroll.add(vp)
scroll.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
- viewport = gtk.Viewport()
- viewport.set_shadow_type(gtk.SHADOW_ETCHED_IN)
- viewport.add(scroll)
- self.widget.pack_start(viewport, expand=True, fill=True)
+ scroll.set_placement(gtk.CORNER_TOP_LEFT)
+ self.viewport = gtk.Viewport()
+ self.viewport.set_shadow_type(gtk.SHADOW_ETCHED_IN)
+ self.viewport.add(scroll)
+ width, height = self.widget.size_request()
+ self.widget_tree = self.widget
+ self.widget = vbox
+
+ if isinstance(self.screen.window, gtk.Dialog):
+ self.widget.set_size_request(width or -1, height or -1)
+ self.widget.pack_start(self.viewport, expand=True, fill=True)
+
self.widget_tree.screen = screen
+
self.reload = False
self.children = children
--
Cédric Krier
B2CK SPRL
Rue de Rotterdam, 4
4000 Liège
Belgium
Tel: +32 472 54 46 59
Email/Jabber: [email protected]
Website: http://www.b2ck.com/
pgpj3cMb8nuvG.pgp
Description: PGP signature
