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/

Attachment: pgpj3cMb8nuvG.pgp
Description: PGP signature

Reply via email to