=== added file 'gtk/gtkscrollable.c'
--- gtk/gtkscrollable.c	1970-01-01 00:00:00 +0000
+++ gtk/gtkscrollable.c	2007-08-20 20:03:55 +0000
@@ -0,0 +1,96 @@
+/* gtkscrollable.c
+ * Copyright (C) 2007 Jan Arne Petersen <jap@gnome.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#include <config.h>
+#include "gtkscrollable.h"
+#include "gtkwidget.h"
+#include "gtkintl.h"
+#include "gtkalias.h"
+
+static void gtk_scrollable_class_init (gpointer g_class);
+
+GType
+gtk_scrollable_get_type (void)
+{
+  static GType gtk_scrollable_type_id = 0;
+
+  if (G_UNLIKELY (gtk_scrollable_type_id == 0)) {
+      static const GTypeInfo g_define_type_info =
+        {
+          sizeof (GtkScrollableIface),
+          (GBaseInitFunc) NULL,
+          (GBaseFinalizeFunc) NULL,
+          (GClassInitFunc) gtk_scrollable_class_init,
+          (GClassFinalizeFunc) NULL,
+          NULL,
+          0,
+          0,
+          (GInstanceInitFunc) NULL
+        };
+
+      gtk_scrollable_type_id = g_type_register_static (G_TYPE_INTERFACE, I_("GtkScrollable"),
+                                                       &g_define_type_info, 0);
+      g_type_interface_add_prerequisite (gtk_scrollable_type_id, GTK_TYPE_WIDGET);
+  }
+  return gtk_scrollable_type_id;
+}
+
+GtkAdjustment *
+gtk_scrollable_get_hadjustment (GtkScrollable *scrollable)
+{
+  GtkAdjustment *hadjustment;
+
+  g_return_val_if_fail (GTK_IS_SCROLLABLE (scrollable), NULL);
+
+  g_object_get (G_OBJECT (scrollable), "hadjustment", &hadjustment, NULL);
+
+  return hadjustment;
+}
+
+GtkAdjustment *
+gtk_scrollable_get_vadjustment (GtkScrollable *scrollable)
+{
+  GtkAdjustment *vadjustment;
+
+  g_return_val_if_fail (GTK_IS_SCROLLABLE (scrollable), NULL);
+
+  g_object_get (G_OBJECT (scrollable), "vadjustment", &vadjustment, NULL);
+
+  return vadjustment;
+}
+
+static void gtk_scrollable_class_init (gpointer g_class)
+{
+  g_object_interface_install_property (g_class,
+				       g_param_spec_object ("hadjustment",
+							    P_("Horizontal Adjustment"),
+							    P_("Horizontal Adjustment for the widget"),
+							    GTK_TYPE_ADJUSTMENT,
+							    G_PARAM_READABLE));
+
+  g_object_interface_install_property (g_class,
+				       g_param_spec_object ("vadjustment",
+							    P_("Vertical Adjustment"),
+							    P_("Vertical Adjustment for the widget"),
+							    GTK_TYPE_ADJUSTMENT,
+							    G_PARAM_READABLE));
+}
+
+#define __GTK_SCROLLABLE_C__
+#include "gtkaliasdef.c"

=== added file 'gtk/gtkscrollable.h'
--- gtk/gtkscrollable.h	1970-01-01 00:00:00 +0000
+++ gtk/gtkscrollable.h	2007-08-20 20:03:55 +0000
@@ -0,0 +1,49 @@
+/* gtkscrollable.h
+ * Copyright (C) 2007 Jan Arne Petersen <jap@gnome.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+
+#ifndef __GTK_SCROLLABLE_H__
+#define __GTK_SCROLLABLE_H__
+
+#include <glib-object.h>
+
+#include <gtk/gtkadjustment.h>
+
+G_BEGIN_DECLS
+
+#define GTK_TYPE_SCROLLABLE               (gtk_scrollable_get_type ())
+#define GTK_SCROLLABLE(obj)               (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_SCROLLABLE, GtkScrollable))
+#define GTK_IS_SCROLLABLE(obj)            (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_SCROLLABLE))
+#define GTK_SCROLLABLE_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GTK_TYPE_SCROLLABLE, GtkScrollableIface))
+
+typedef struct _GtkScrollable GtkScrollable;
+typedef struct _GtkScrollableIface GtkScrollableIface;
+
+struct _GtkScrollableIface {
+    GTypeInterface parent;
+};
+
+GType          gtk_scrollable_get_type        (void) G_GNUC_CONST;
+
+GtkAdjustment *gtk_scrollable_get_hadjustment (GtkScrollable *scrollable);
+GtkAdjustment *gtk_scrollable_get_vadjustment (GtkScrollable *scrollable);
+
+G_END_DECLS
+
+#endif /* __GTK_SCROLLABLE_H__ */

=== modified file 'demos/gtk-demo/appwindow.c'
--- demos/gtk-demo/appwindow.c	2007-08-14 14:01:36 +0000
+++ demos/gtk-demo/appwindow.c	2007-08-20 20:03:55 +0000
@@ -521,7 +521,7 @@
       /* Create document
        */
 
-      sw = gtk_scrolled_window_new (NULL, NULL);
+      sw = gtk_scrolled_window_new ();
 
       gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw),
                                       GTK_POLICY_AUTOMATIC,

=== modified file 'demos/gtk-demo/changedisplay.c'
--- demos/gtk-demo/changedisplay.c	2007-08-14 14:01:36 +0000
+++ demos/gtk-demo/changedisplay.c	2007-08-20 20:03:55 +0000
@@ -354,7 +354,7 @@
   gtk_container_set_border_width (GTK_CONTAINER (hbox), 8);
   gtk_container_add (GTK_CONTAINER (*frame), hbox);
 
-  scrollwin = gtk_scrolled_window_new (NULL, NULL);
+  scrollwin = gtk_scrolled_window_new ();
   gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrollwin),
 				  GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
   gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrollwin),

=== modified file 'demos/gtk-demo/editable_cells.c'
--- demos/gtk-demo/editable_cells.c	2007-08-14 14:01:36 +0000
+++ demos/gtk-demo/editable_cells.c	2007-08-20 20:03:55 +0000
@@ -339,7 +339,7 @@
                           gtk_label_new ("Shopping list (you can edit the cells!)"),
                           FALSE, FALSE, 0);
 
-      sw = gtk_scrolled_window_new (NULL, NULL);
+      sw = gtk_scrolled_window_new ();
       gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (sw),
                                            GTK_SHADOW_ETCHED_IN);
       gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw),

=== modified file 'demos/gtk-demo/hypertext.c'
--- demos/gtk-demo/hypertext.c	2007-08-14 14:01:36 +0000
+++ demos/gtk-demo/hypertext.c	2007-08-20 20:03:55 +0000
@@ -288,7 +288,7 @@
 
       buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view));
       
-      sw = gtk_scrolled_window_new (NULL, NULL);
+      sw = gtk_scrolled_window_new ();
       gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw),
 				      GTK_POLICY_AUTOMATIC,
 				      GTK_POLICY_AUTOMATIC);

=== modified file 'demos/gtk-demo/iconview.c'
--- demos/gtk-demo/iconview.c	2007-08-14 14:01:36 +0000
+++ demos/gtk-demo/iconview.c	2007-08-20 20:03:55 +0000
@@ -316,7 +316,7 @@
 	  gtk_toolbar_insert (GTK_TOOLBAR (tool_bar), home_button, -1);
 	  
 	  
-	  sw = gtk_scrolled_window_new (NULL, NULL);
+	  sw = gtk_scrolled_window_new ();
 	  gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (sw),
 					       GTK_SHADOW_ETCHED_IN);
 	  gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw),

=== modified file 'demos/gtk-demo/list_store.c'
--- demos/gtk-demo/list_store.c	2007-08-14 14:01:36 +0000
+++ demos/gtk-demo/list_store.c	2007-08-20 20:03:55 +0000
@@ -181,7 +181,7 @@
       label = gtk_label_new ("This is the bug list (note: not based on real data, it would be nice to have a nice ODBC interface to bugzilla or so, though).");
       gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0);
 
-      sw = gtk_scrolled_window_new (NULL, NULL);
+      sw = gtk_scrolled_window_new ();
       gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (sw),
 					   GTK_SHADOW_ETCHED_IN);
       gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw),

=== modified file 'demos/gtk-demo/main.c'
--- demos/gtk-demo/main.c	2007-08-14 14:01:36 +0000
+++ demos/gtk-demo/main.c	2007-08-20 20:03:55 +0000
@@ -650,7 +650,7 @@
   GtkWidget *text_view;
   PangoFontDescription *font_desc;
 
-  scrolled_window = gtk_scrolled_window_new (NULL, NULL);
+  scrolled_window = gtk_scrolled_window_new ();
   gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window),
 				  GTK_POLICY_AUTOMATIC,
 				  GTK_POLICY_AUTOMATIC);
@@ -771,7 +771,7 @@
   gtk_tree_view_collapse_all (GTK_TREE_VIEW (tree_view));
   gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (tree_view), FALSE);
   				    
-  scrolled_window = gtk_scrolled_window_new (NULL, NULL);
+  scrolled_window = gtk_scrolled_window_new ();
   gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window),
 				  GTK_POLICY_NEVER,
 				  GTK_POLICY_AUTOMATIC);

=== modified file 'demos/gtk-demo/stock_browser.c'
--- demos/gtk-demo/stock_browser.c	2007-08-14 14:01:36 +0000
+++ demos/gtk-demo/stock_browser.c	2007-08-20 20:03:55 +0000
@@ -428,7 +428,7 @@
       hbox = gtk_hbox_new (FALSE, 8);
       gtk_container_add (GTK_CONTAINER (window), hbox);
 
-      sw = gtk_scrolled_window_new (NULL, NULL);
+      sw = gtk_scrolled_window_new ();
       gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw),
                                       GTK_POLICY_NEVER,
                                       GTK_POLICY_AUTOMATIC);

=== modified file 'demos/gtk-demo/textscroll.c'
--- demos/gtk-demo/textscroll.c	2007-08-14 14:01:36 +0000
+++ demos/gtk-demo/textscroll.c	2007-08-20 20:03:55 +0000
@@ -155,7 +155,7 @@
   GtkWidget *textview;
   guint timeout;
 
-  swindow = gtk_scrolled_window_new (NULL, NULL);
+  swindow = gtk_scrolled_window_new ();
   gtk_box_pack_start_defaults (GTK_BOX (hbox), swindow);
   textview = gtk_text_view_new ();
   gtk_container_add (GTK_CONTAINER (swindow), textview);

=== modified file 'demos/gtk-demo/textview.c'
--- demos/gtk-demo/textview.c	2007-08-14 14:01:36 +0000
+++ demos/gtk-demo/textview.c	2007-08-20 20:03:55 +0000
@@ -475,7 +475,7 @@
       buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view1));
       view2 = gtk_text_view_new_with_buffer (buffer);
       
-      sw = gtk_scrolled_window_new (NULL, NULL);
+      sw = gtk_scrolled_window_new ();
       gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw),
 				      GTK_POLICY_AUTOMATIC,
 				      GTK_POLICY_AUTOMATIC);
@@ -483,7 +483,7 @@
 
       gtk_container_add (GTK_CONTAINER (sw), view1);
 
-      sw = gtk_scrolled_window_new (NULL, NULL);
+      sw = gtk_scrolled_window_new ();
       gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw),
 				      GTK_POLICY_AUTOMATIC,
 				      GTK_POLICY_AUTOMATIC);
@@ -578,7 +578,7 @@
   g_object_unref (buffer);
 
   window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
-  sw = gtk_scrolled_window_new (NULL, NULL);
+  sw = gtk_scrolled_window_new ();
   gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw),
                                   GTK_POLICY_AUTOMATIC,
                                   GTK_POLICY_AUTOMATIC);

=== modified file 'demos/gtk-demo/tree_store.c'
--- demos/gtk-demo/tree_store.c	2007-08-14 14:01:36 +0000
+++ demos/gtk-demo/tree_store.c	2007-08-20 20:03:55 +0000
@@ -410,7 +410,7 @@
 			  gtk_label_new ("Jonathan's Holiday Card Planning Sheet"),
 			  FALSE, FALSE, 0);
 
-      sw = gtk_scrolled_window_new (NULL, NULL);
+      sw = gtk_scrolled_window_new ();
       gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (sw),
 					   GTK_SHADOW_ETCHED_IN);
       gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw),

=== modified file 'gtk/Makefile.am'
--- gtk/Makefile.am	2007-08-14 14:01:36 +0000
+++ gtk/Makefile.am	2007-08-20 20:03:55 +0000
@@ -262,6 +262,7 @@
 	gtkruler.h		\
 	gtkscale.h		\
 	gtkscalebutton.h	\
+	gtkscrollable.h		\
 	gtkscrollbar.h		\
 	gtkscrolledwindow.h	\
 	gtkselection.h		\
@@ -542,6 +543,7 @@
 	gtkruler.c		\
 	gtkscale.c		\
 	gtkscalebutton.c	\
+	gtkscrollable.c		\
 	gtkscrollbar.c		\
 	gtkscrolledwindow.c	\
 	gtkselection.c		\

=== modified file 'gtk/gtk.symbols'
--- gtk/gtk.symbols	2007-08-14 14:01:36 +0000
+++ gtk/gtk.symbols	2007-08-20 20:03:55 +0000
@@ -2086,16 +2086,12 @@
 
 #if IN_HEADER(__GTK_LAYOUT_H__)
 #if IN_FILE(__GTK_LAYOUT_C__)
-gtk_layout_get_hadjustment
 gtk_layout_get_size
 gtk_layout_get_type G_GNUC_CONST
-gtk_layout_get_vadjustment
 gtk_layout_move
 gtk_layout_new
 gtk_layout_put
-gtk_layout_set_hadjustment
 gtk_layout_set_size
-gtk_layout_set_vadjustment
 #ifndef GTK_DISABLE_DEPRECATED
 gtk_layout_freeze
 gtk_layout_thaw
@@ -3308,6 +3304,14 @@
 #endif
 #endif
 
+#if IN_HEADER(__GTK_SCROLLABLE_H__)
+#if IN_FILE(__GTK_SCROLLABLE_C__)
+gtk_scrollable_get_hadjustment
+gtk_scrollable_get_type G_GNUC_CONST
+gtk_scrollable_get_vadjustment
+#endif
+#endif
+
 #if IN_HEADER(__GTK_SCROLLBAR_H__)
 #if IN_FILE(__GTK_SCROLLBAR_C__)
 gtk_scrollbar_get_type G_GNUC_CONST
@@ -3323,14 +3327,12 @@
 gtk_scrolled_window_get_policy
 gtk_scrolled_window_get_shadow_type
 gtk_scrolled_window_get_type G_GNUC_CONST
+gtk_scrolled_window_get_vscrollbar
 gtk_scrolled_window_get_vadjustment
-gtk_scrolled_window_get_vscrollbar
 gtk_scrolled_window_new
-gtk_scrolled_window_set_hadjustment
 gtk_scrolled_window_set_placement
 gtk_scrolled_window_set_policy
 gtk_scrolled_window_set_shadow_type
-gtk_scrolled_window_set_vadjustment
 gtk_scrolled_window_unset_placement
 #endif
 #endif
@@ -4411,7 +4413,6 @@
 gtk_tree_view_get_expander_column
 gtk_tree_view_get_fixed_height_mode
 gtk_tree_view_get_grid_lines
-gtk_tree_view_get_hadjustment
 gtk_tree_view_get_headers_clickable
 gtk_tree_view_get_headers_visible
 gtk_tree_view_get_hover_expand
@@ -4432,7 +4433,6 @@
 gtk_tree_view_get_tooltip_column
 gtk_tree_view_get_tooltip_context
 gtk_tree_view_get_type G_GNUC_CONST
-gtk_tree_view_get_vadjustment
 gtk_tree_view_get_visible_range
 gtk_tree_view_get_visible_rect
 gtk_tree_view_insert_column
@@ -4458,7 +4458,6 @@
 gtk_tree_view_set_expander_column
 gtk_tree_view_set_fixed_height_mode
 gtk_tree_view_set_grid_lines
-gtk_tree_view_set_hadjustment
 gtk_tree_view_set_headers_clickable
 gtk_tree_view_set_headers_visible
 gtk_tree_view_set_hover_expand
@@ -4477,7 +4476,6 @@
 gtk_tree_view_set_tooltip_row
 gtk_tree_view_set_tooltip_cell
 gtk_tree_view_set_tooltip_column
-gtk_tree_view_set_vadjustment
 #ifndef GTK_DISABLE_DEPRECATED
 gtk_tree_view_tree_to_widget_coords
 #endif
@@ -4554,14 +4552,10 @@
 
 #if IN_HEADER(__GTK_VIEWPORT_H__)
 #if IN_FILE(__GTK_VIEWPORT_C__)
-gtk_viewport_get_hadjustment
 gtk_viewport_get_shadow_type
 gtk_viewport_get_type G_GNUC_CONST
-gtk_viewport_get_vadjustment
 gtk_viewport_new
-gtk_viewport_set_hadjustment
 gtk_viewport_set_shadow_type
-gtk_viewport_set_vadjustment
 #endif
 #endif
 
@@ -4734,7 +4728,6 @@
 gtk_widget_set_parent
 gtk_widget_set_parent_window
 gtk_widget_set_redraw_on_allocate
-gtk_widget_set_scroll_adjustments
 gtk_widget_set_sensitive
 gtk_widget_set_size_request
 gtk_widget_set_state

=== modified file 'gtk/gtkaboutdialog.c'
--- gtk/gtkaboutdialog.c	2007-08-14 14:01:36 +0000
+++ gtk/gtkaboutdialog.c	2007-08-20 20:03:55 +0000
@@ -1915,7 +1915,7 @@
   g_signal_connect (view, "visibility_notify_event", 
                     G_CALLBACK (credits_visibility_notify_event), about);
 
-  sw = gtk_scrolled_window_new (NULL, NULL);
+  sw = gtk_scrolled_window_new ();
   gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (sw),
   				       GTK_SHADOW_IN);
   gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw),
@@ -2121,7 +2121,7 @@
 		    G_CALLBACK (gtk_widget_destroyed),
 		    &(priv->license_dialog));
 
-  sw = gtk_scrolled_window_new (NULL, NULL);
+  sw = gtk_scrolled_window_new ();
   gtk_container_set_border_width (GTK_CONTAINER (sw), 5);
   gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (sw),
 				       GTK_SHADOW_IN);

=== modified file 'gtk/gtkclist.c'
--- gtk/gtkclist.c	2007-08-14 14:01:36 +0000
+++ gtk/gtkclist.c	2007-08-20 20:03:55 +0000
@@ -608,7 +608,6 @@
 			   GTK_ARG_READWRITE | G_PARAM_STATIC_NAME,
 			   ARG_SORT_TYPE);  
 
-  widget_class->set_scroll_adjustments_signal =
     gtk_signal_new (I_("set_scroll_adjustments"),
 		    GTK_RUN_LAST,
 		    GTK_CLASS_TYPE (object_class),

=== modified file 'gtk/gtkcombo.c'
--- gtk/gtkcombo.c	2007-08-14 14:01:36 +0000
+++ gtk/gtkcombo.c	2007-08-20 20:03:55 +0000
@@ -961,7 +961,7 @@
   gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_OUT);
   gtk_widget_show (frame);
 
-  combo->popup = gtk_scrolled_window_new (NULL, NULL);
+  combo->popup = gtk_scrolled_window_new ();
   gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (combo->popup),
 				  GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
   GTK_WIDGET_UNSET_FLAGS (GTK_SCROLLED_WINDOW (combo->popup)->hscrollbar, GTK_CAN_FOCUS);

=== modified file 'gtk/gtkcombobox.c'
--- gtk/gtkcombobox.c	2007-08-14 14:01:36 +0000
+++ gtk/gtkcombobox.c	2007-08-20 20:03:55 +0000
@@ -1390,7 +1390,7 @@
           gtk_window_set_screen (GTK_WINDOW (combo_box->priv->popup_window),
                                  gtk_widget_get_screen (GTK_WIDGET (combo_box)));
 
-	  combo_box->priv->scrolled_window = gtk_scrolled_window_new (NULL, NULL);
+	  combo_box->priv->scrolled_window = gtk_scrolled_window_new ();
 	  
 	  gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (combo_box->priv->scrolled_window),
 					  GTK_POLICY_NEVER,

=== modified file 'gtk/gtkentrycompletion.c'
--- gtk/gtkentrycompletion.c	2007-08-14 14:01:36 +0000
+++ gtk/gtkentrycompletion.c	2007-08-20 20:03:55 +0000
@@ -460,7 +460,7 @@
   priv->column = gtk_tree_view_column_new ();
   gtk_tree_view_append_column (GTK_TREE_VIEW (priv->tree_view), priv->column);
 
-  priv->scrolled_window = gtk_scrolled_window_new (NULL, NULL);
+  priv->scrolled_window = gtk_scrolled_window_new ();
   gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (priv->scrolled_window),
                                   GTK_POLICY_NEVER,
                                   GTK_POLICY_AUTOMATIC);

=== modified file 'gtk/gtkfilechooserdefault.c'
--- gtk/gtkfilechooserdefault.c	2007-08-14 14:01:36 +0000
+++ gtk/gtkfilechooserdefault.c	2007-08-20 20:03:55 +0000
@@ -3877,7 +3877,7 @@
 
   /* Scrolled window */
 
-  swin = gtk_scrolled_window_new (NULL, NULL);
+  swin = gtk_scrolled_window_new ();
   gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (swin),
 				  GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
   gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (swin),
@@ -4560,7 +4560,7 @@
 
   /* Scrolled window */
 
-  swin = gtk_scrolled_window_new (NULL, NULL);
+  swin = gtk_scrolled_window_new ();
   gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (swin),
 				  GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS);
   gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (swin),

=== modified file 'gtk/gtkfilesel.c'
--- gtk/gtkfilesel.c	2007-08-14 14:01:36 +0000
+++ gtk/gtkfilesel.c	2007-08-20 20:03:55 +0000
@@ -708,7 +708,7 @@
 
   /*  gtk_clist_column_titles_passive (GTK_CLIST (filesel->dir_list)); */
 
-  scrolled_win = gtk_scrolled_window_new (NULL, NULL);
+  scrolled_win = gtk_scrolled_window_new ();
   gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolled_win), GTK_SHADOW_IN);  
   gtk_container_add (GTK_CONTAINER (scrolled_win), filesel->dir_list);
   gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_win),
@@ -746,7 +746,7 @@
 
   /* gtk_clist_column_titles_passive (GTK_CLIST (filesel->file_list)); */
 
-  scrolled_win = gtk_scrolled_window_new (NULL, NULL);
+  scrolled_win = gtk_scrolled_window_new ();
   gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolled_win), GTK_SHADOW_IN);
   gtk_container_add (GTK_CONTAINER (scrolled_win), filesel->file_list);
   gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_win),

=== modified file 'gtk/gtkfontsel.c'
--- gtk/gtkfontsel.c	2007-08-14 14:01:36 +0000
+++ gtk/gtkfontsel.c	2007-08-20 20:03:55 +0000
@@ -368,7 +368,7 @@
   
   gtk_label_set_mnemonic_widget (GTK_LABEL (font_label), fontsel->family_list);
 
-  scrolled_win = gtk_scrolled_window_new (NULL, NULL);
+  scrolled_win = gtk_scrolled_window_new ();
   gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolled_win), GTK_SHADOW_IN);
   gtk_widget_set_size_request (scrolled_win,
 			       FONT_LIST_WIDTH, FONT_LIST_HEIGHT);
@@ -404,7 +404,7 @@
   gtk_tree_selection_set_mode (gtk_tree_view_get_selection (GTK_TREE_VIEW (fontsel->face_list)),
 			       GTK_SELECTION_BROWSE);
   
-  scrolled_win = gtk_scrolled_window_new (NULL, NULL);
+  scrolled_win = gtk_scrolled_window_new ();
   gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolled_win), GTK_SHADOW_IN);
   gtk_widget_set_size_request (scrolled_win,
 			       FONT_STYLE_LIST_WIDTH, FONT_LIST_HEIGHT);
@@ -437,7 +437,7 @@
   gtk_tree_selection_set_mode (gtk_tree_view_get_selection (GTK_TREE_VIEW (fontsel->size_list)),
 			       GTK_SELECTION_BROWSE);
   
-  scrolled_win = gtk_scrolled_window_new (NULL, NULL);
+  scrolled_win = gtk_scrolled_window_new ();
   gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolled_win), GTK_SHADOW_IN);
   gtk_container_add (GTK_CONTAINER (scrolled_win), fontsel->size_list);
   gtk_widget_set_size_request (scrolled_win, -1, FONT_LIST_HEIGHT);

=== modified file 'gtk/gtkiconview.c'
--- gtk/gtkiconview.c	2007-08-14 14:01:36 +0000
+++ gtk/gtkiconview.c	2007-08-20 20:03:55 +0000
@@ -41,6 +41,7 @@
 #include "gtkcombobox.h"
 #include "gtktextbuffer.h"
 #include "gtktreednd.h"
+#include "gtkscrollable.h"
 #include "gtkprivate.h"
 #include "gtkalias.h"
 
@@ -221,7 +222,9 @@
   PROP_COLUMN_SPACING,
   PROP_MARGIN,
   PROP_REORDERABLE,
-  PROP_TOOLTIP_COLUMN
+  PROP_TOOLTIP_COLUMN,
+  PROP_HADJUSTMENT,
+  PROP_VADJUSTMENT
 };
 
 /* GObject vfuncs */
@@ -274,16 +277,13 @@
 								 gpointer            callback_data);
 
 /* GtkIconView vfuncs */
-static void             gtk_icon_view_set_adjustments           (GtkIconView        *icon_view,
-								 GtkAdjustment      *hadj,
-								 GtkAdjustment      *vadj);
 static void             gtk_icon_view_real_select_all           (GtkIconView        *icon_view);
 static void             gtk_icon_view_real_unselect_all         (GtkIconView        *icon_view);
 static void             gtk_icon_view_real_select_cursor_item   (GtkIconView        *icon_view);
 static void             gtk_icon_view_real_toggle_cursor_item   (GtkIconView        *icon_view);
 static gboolean         gtk_icon_view_real_activate_cursor_item (GtkIconView        *icon_view);
 
- /* Internal functions */
+/* Internal functions */
 static void                 gtk_icon_view_adjustment_changed             (GtkAdjustment          *adjustment,
 									  GtkIconView            *icon_view);
 static void                 gtk_icon_view_layout                         (GtkIconView            *icon_view);
@@ -473,6 +473,8 @@
 G_DEFINE_TYPE_WITH_CODE (GtkIconView, gtk_icon_view, GTK_TYPE_CONTAINER,
 			 G_IMPLEMENT_INTERFACE (GTK_TYPE_CELL_LAYOUT,
 						gtk_icon_view_cell_layout_init)
+			 G_IMPLEMENT_INTERFACE (GTK_TYPE_SCROLLABLE,
+						NULL)
 			 G_IMPLEMENT_INTERFACE (GTK_TYPE_BUILDABLE,
 						gtk_icon_view_buildable_init))
 
@@ -525,7 +527,6 @@
   container_class->remove = gtk_icon_view_remove;
   container_class->forall = gtk_icon_view_forall;
 
-  klass->set_scroll_adjustments = gtk_icon_view_set_adjustments;
   klass->select_all = gtk_icon_view_real_select_all;
   klass->unselect_all = gtk_icon_view_real_unselect_all;
   klass->select_cursor_item = gtk_icon_view_real_select_cursor_item;
@@ -749,17 +750,23 @@
 							 FALSE,
 							 G_PARAM_READWRITE));
 
-    g_object_class_install_property (gobject_class,
-                                     PROP_TOOLTIP_COLUMN,
-                                     g_param_spec_int ("tooltip-column",
-                                                       P_("Tooltip Column"),
-                                                       P_("The column in the model containing the tooltip texts for the items"),
-                                                       -1,
-                                                       G_MAXINT,
-                                                       -1,
-                                                       GTK_PARAM_READWRITE));
-
-
+  g_object_class_install_property (gobject_class,
+				   PROP_TOOLTIP_COLUMN,
+				   g_param_spec_int ("tooltip-column",
+						     P_("Tooltip Column"),
+						     P_("The column in the model containing the tooltip texts for the items"),
+						     -1,
+						     G_MAXINT,
+						     -1,
+						     GTK_PARAM_READWRITE));
+
+  g_object_class_override_property (gobject_class,
+				    PROP_HADJUSTMENT,
+				    "hadjustment");
+
+  g_object_class_override_property (gobject_class,
+				    PROP_VADJUSTMENT,
+				    "vadjustment");
 
   /* Style properties */
   gtk_widget_class_install_style_property (widget_class,
@@ -778,16 +785,6 @@
                                                                GTK_PARAM_READABLE));
 
   /* Signals */
-  widget_class->set_scroll_adjustments_signal =
-    g_signal_new (I_("set_scroll_adjustments"),
-		  G_TYPE_FROM_CLASS (gobject_class),
-		  G_SIGNAL_RUN_LAST,
-		  G_STRUCT_OFFSET (GtkIconViewClass, set_scroll_adjustments),
-		  NULL, NULL, 
-		  _gtk_marshal_VOID__OBJECT_OBJECT,
-		  G_TYPE_NONE, 2,
-		  GTK_TYPE_ADJUSTMENT, GTK_TYPE_ADJUSTMENT);
-
   icon_view_signals[ITEM_ACTIVATED] =
     g_signal_new (I_("item_activated"),
 		  G_TYPE_FROM_CLASS (gobject_class),
@@ -969,7 +966,14 @@
 
   GTK_WIDGET_SET_FLAGS (icon_view, GTK_CAN_FOCUS);
   
-  gtk_icon_view_set_adjustments (icon_view, NULL, NULL);
+  icon_view->priv->hadjustment = g_object_new (GTK_TYPE_ADJUSTMENT, NULL);
+  g_signal_connect (icon_view->priv->hadjustment, "value-changed",
+		    G_CALLBACK (gtk_icon_view_adjustment_changed),
+		    icon_view);
+  icon_view->priv->vadjustment = g_object_new (GTK_TYPE_ADJUSTMENT, NULL);
+  g_signal_connect (icon_view->priv->vadjustment, "value-changed",
+		    G_CALLBACK (gtk_icon_view_adjustment_changed),
+		    icon_view);
 
   icon_view->priv->cell_list = NULL;
   icon_view->priv->n_cells = 0;
@@ -1154,6 +1158,10 @@
     case PROP_TOOLTIP_COLUMN:
       g_value_set_int (value, icon_view->priv->tooltip_column);
       break;
+    case PROP_HADJUSTMENT:
+      g_value_set_object (value, icon_view->priv->hadjustment);
+    case PROP_VADJUSTMENT:
+      g_value_set_object (value, icon_view->priv->vadjustment);
 
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
@@ -2325,65 +2333,8 @@
   return dirty;
 }
 
-
 /* GtkIconView signals */
 static void
-gtk_icon_view_set_adjustments (GtkIconView   *icon_view,
-			       GtkAdjustment *hadj,
-			       GtkAdjustment *vadj)
-{
-  gboolean need_adjust = FALSE;
-
-  if (hadj)
-    g_return_if_fail (GTK_IS_ADJUSTMENT (hadj));
-  else
-    hadj = GTK_ADJUSTMENT (gtk_adjustment_new (0.0, 0.0, 0.0, 0.0, 0.0, 0.0));
-  if (vadj)
-    g_return_if_fail (GTK_IS_ADJUSTMENT (vadj));
-  else
-    vadj = GTK_ADJUSTMENT (gtk_adjustment_new (0.0, 0.0, 0.0, 0.0, 0.0, 0.0));
-
-  if (icon_view->priv->hadjustment && (icon_view->priv->hadjustment != hadj))
-    {
-      g_signal_handlers_disconnect_matched (icon_view->priv->hadjustment, G_SIGNAL_MATCH_DATA,
-					   0, 0, NULL, NULL, icon_view);
-      g_object_unref (icon_view->priv->hadjustment);
-    }
-
-  if (icon_view->priv->vadjustment && (icon_view->priv->vadjustment != vadj))
-    {
-      g_signal_handlers_disconnect_matched (icon_view->priv->vadjustment, G_SIGNAL_MATCH_DATA,
-					    0, 0, NULL, NULL, icon_view);
-      g_object_unref (icon_view->priv->vadjustment);
-    }
-
-  if (icon_view->priv->hadjustment != hadj)
-    {
-      icon_view->priv->hadjustment = hadj;
-      g_object_ref_sink (icon_view->priv->hadjustment);
-
-      g_signal_connect (icon_view->priv->hadjustment, "value_changed",
-			G_CALLBACK (gtk_icon_view_adjustment_changed),
-			icon_view);
-      need_adjust = TRUE;
-    }
-
-  if (icon_view->priv->vadjustment != vadj)
-    {
-      icon_view->priv->vadjustment = vadj;
-      g_object_ref_sink (icon_view->priv->vadjustment);
-
-      g_signal_connect (icon_view->priv->vadjustment, "value_changed",
-			G_CALLBACK (gtk_icon_view_adjustment_changed),
-			icon_view);
-      need_adjust = TRUE;
-    }
-
-  if (need_adjust)
-    gtk_icon_view_adjustment_changed (NULL, icon_view);
-}
-
-static void
 gtk_icon_view_real_select_all (GtkIconView *icon_view)
 {
   gtk_icon_view_select_all (icon_view);
@@ -4946,10 +4897,8 @@
   GList *icons;
 
   g_return_val_if_fail (GTK_IS_ICON_VIEW (icon_view), FALSE);
-
-  if (icon_view->priv->hadjustment == NULL ||
-      icon_view->priv->vadjustment == NULL)
-    return FALSE;
+  g_return_val_if_fail (icon_view->priv->hadjustment == NULL, FALSE);
+  g_return_val_if_fail (icon_view->priv->vadjustment == NULL, FALSE);
 
   if (start_path == NULL && end_path == NULL)
     return FALSE;
@@ -8588,9 +8537,6 @@
 {
   GList *items;
 
-  GtkAdjustment *old_hadj;
-  GtkAdjustment *old_vadj;
-
   GtkTreeModel *model;
 
 } GtkIconViewAccessiblePrivate;
@@ -8626,8 +8572,6 @@
       items = items->next;
     }
   priv->items = g_list_insert_before (priv->items, items, info);
-  priv->old_hadj = NULL;
-  priv->old_vadj = NULL;
 }
 
 static gint
@@ -8761,7 +8705,7 @@
 
 static void
 gtk_icon_view_accessible_adjustment_changed (GtkAdjustment *adjustment,
-                                             GtkIconView   *icon_view)
+					     GtkIconView *icon_view)
 {
   AtkObject *obj;
   GtkIconViewAccessible *view;
@@ -8776,63 +8720,6 @@
 }
 
 static void
-gtk_icon_view_accessible_set_scroll_adjustments (GtkWidget      *widget,
-                                                 GtkAdjustment *hadj,
-                                                 GtkAdjustment *vadj)
-{
-  AtkObject *atk_obj;
-  GtkIconViewAccessiblePrivate *priv;
-
-  atk_obj = gtk_widget_get_accessible (widget);
-  priv = gtk_icon_view_accessible_get_priv (atk_obj);
-
-  if (priv->old_hadj != hadj)
-    {
-      if (priv->old_hadj)
-        {
-          g_object_remove_weak_pointer (G_OBJECT (priv->old_hadj),
-                                        (gpointer *)&priv->old_hadj);
-          
-          g_signal_handlers_disconnect_by_func (priv->old_hadj,
-                                                (gpointer) gtk_icon_view_accessible_adjustment_changed,
-                                                widget);
-        }
-      priv->old_hadj = hadj;
-      if (priv->old_hadj)
-        {
-          g_object_add_weak_pointer (G_OBJECT (priv->old_hadj),
-                                     (gpointer *)&priv->old_hadj);
-          g_signal_connect (hadj,
-                            "value-changed",
-                            G_CALLBACK (gtk_icon_view_accessible_adjustment_changed),
-                            widget);
-        }
-    }
-  if (priv->old_vadj != vadj)
-    {
-      if (priv->old_vadj)
-        {
-          g_object_remove_weak_pointer (G_OBJECT (priv->old_vadj),
-                                        (gpointer *)&priv->old_vadj);
-          
-          g_signal_handlers_disconnect_by_func (priv->old_vadj,
-                                                (gpointer) gtk_icon_view_accessible_adjustment_changed,
-                                                widget);
-        }
-      priv->old_vadj = vadj;
-      if (priv->old_vadj)
-        {
-          g_object_add_weak_pointer (G_OBJECT (priv->old_vadj),
-                                     (gpointer *)&priv->old_vadj);
-          g_signal_connect (vadj,
-                            "value-changed",
-                            G_CALLBACK (gtk_icon_view_accessible_adjustment_changed),
-                            widget);
-        }
-    }
-}
-
-static void
 gtk_icon_view_accessible_model_row_changed (GtkTreeModel *tree_model,
                                             GtkTreePath  *path,
                                             GtkTreeIter  *iter,
@@ -9082,6 +8969,7 @@
 {
   GtkIconViewAccessiblePrivate *priv;
   GtkIconView *icon_view;
+  GtkAdjustment *hadjustment, *vadjustment;
 
   if (ATK_OBJECT_CLASS (accessible_parent_class)->initialize)
     ATK_OBJECT_CLASS (accessible_parent_class)->initialize (accessible, data);
@@ -9092,28 +8980,18 @@
                       priv);
 
   icon_view = GTK_ICON_VIEW (data);
-  if (icon_view->priv->hadjustment)
-    {
-      priv->old_hadj = icon_view->priv->hadjustment;
-      g_object_add_weak_pointer (G_OBJECT (priv->old_hadj), (gpointer *)&priv->old_hadj);
-      g_signal_connect (icon_view->priv->hadjustment,
-                        "value-changed",
-                        G_CALLBACK (gtk_icon_view_accessible_adjustment_changed),
-                        icon_view);
-    } 
-  if (icon_view->priv->vadjustment)
-    {
-      priv->old_vadj = icon_view->priv->vadjustment;
-      g_object_add_weak_pointer (G_OBJECT (priv->old_vadj), (gpointer *)&priv->old_vadj);
-      g_signal_connect (icon_view->priv->vadjustment,
-                        "value-changed",
-                        G_CALLBACK (gtk_icon_view_accessible_adjustment_changed),
-                        icon_view);
-    }
-  g_signal_connect_after (data,
-                          "set_scroll_adjustments",
-                          G_CALLBACK (gtk_icon_view_accessible_set_scroll_adjustments),
-                          NULL);
+
+  g_object_get (data, "hadjustment", &hadjustment, "vadjustment", &vadjustment, NULL);
+  g_signal_connect_after (hadjustment,
+                          "value-changed",
+                          G_CALLBACK (gtk_icon_view_accessible_adjustment_changed),
+                          NULL);
+  g_signal_connect_after (vadjustment,
+                          "value-changed",
+                          G_CALLBACK (gtk_icon_view_accessible_adjustment_changed),
+                          NULL);
+  g_object_unref (hadjustment);
+  g_object_unref (vadjustment);
   g_signal_connect (data,
                     "notify",
                     G_CALLBACK (gtk_icon_view_accessible_notify_gtk),
@@ -9151,26 +9029,6 @@
 
   atk_obj = ATK_OBJECT (accessible);
   priv = gtk_icon_view_accessible_get_priv (atk_obj);
-  if (priv->old_hadj)
-    {
-      g_object_remove_weak_pointer (G_OBJECT (priv->old_hadj),
-                                    (gpointer *)&priv->old_hadj);
-          
-      g_signal_handlers_disconnect_by_func (priv->old_hadj,
-                                            (gpointer) gtk_icon_view_accessible_adjustment_changed,
-                                            widget);
-      priv->old_hadj = NULL;
-    }
-  if (priv->old_vadj)
-    {
-      g_object_remove_weak_pointer (G_OBJECT (priv->old_vadj),
-                                    (gpointer *)&priv->old_vadj);
-          
-      g_signal_handlers_disconnect_by_func (priv->old_vadj,
-                                            (gpointer) gtk_icon_view_accessible_adjustment_changed,
-                                            widget);
-      priv->old_vadj = NULL;
-    }
 }
 
 static void

=== modified file 'gtk/gtkiconview.h'
--- gtk/gtkiconview.h	2007-08-14 14:01:36 +0000
+++ gtk/gtkiconview.h	2007-08-20 20:03:55 +0000
@@ -63,10 +63,6 @@
 {
   GtkContainerClass parent_class;
 
-  void    (* set_scroll_adjustments) (GtkIconView      *icon_view,
-				      GtkAdjustment    *hadjustment,
-				      GtkAdjustment    *vadjustment);
-  
   void    (* item_activated)         (GtkIconView      *icon_view,
 				      GtkTreePath      *path);
   void    (* selection_changed)      (GtkIconView      *icon_view);

=== modified file 'gtk/gtkinputdialog.c'
--- gtk/gtkinputdialog.c	2007-08-14 14:01:36 +0000
+++ gtk/gtkinputdialog.c	2007-08-20 20:03:55 +0000
@@ -276,7 +276,7 @@
 
   label = gtk_label_new (_("Axes"));
 
-  inputd->axis_listbox = gtk_scrolled_window_new (NULL, NULL);
+  inputd->axis_listbox = gtk_scrolled_window_new ();
   gtk_container_set_border_width (GTK_CONTAINER (inputd->axis_listbox), 12);
   gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW(inputd->axis_listbox),
 				  GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
@@ -294,7 +294,7 @@
 
   label = gtk_label_new (_("Keys"));
 
-  inputd->keys_listbox = gtk_scrolled_window_new (NULL, NULL);
+  inputd->keys_listbox = gtk_scrolled_window_new ();
   gtk_container_set_border_width (GTK_CONTAINER (inputd->keys_listbox), 12);
   gtk_widget_set_size_request (inputd->keys_listbox,
 			       KEYS_LIST_WIDTH, KEYS_LIST_HEIGHT);
@@ -544,7 +544,7 @@
   gtk_table_set_row_spacings (GTK_TABLE (inputd->axis_list), 6);
   gtk_table_set_col_spacings (GTK_TABLE (inputd->axis_list), 12);
   
-  viewport = gtk_viewport_new (NULL, NULL);
+  viewport = gtk_viewport_new ();
   old_child = gtk_bin_get_child (GTK_BIN (inputd->axis_listbox));
   if (old_child != NULL)
     gtk_widget_destroy (old_child);
@@ -699,7 +699,7 @@
   gtk_table_set_row_spacings (GTK_TABLE (inputd->keys_list), 6);
   gtk_table_set_col_spacings (GTK_TABLE (inputd->keys_list), 12);
   
-  viewport = gtk_viewport_new (NULL, NULL);
+  viewport = gtk_viewport_new ();
   old_child = gtk_bin_get_child (GTK_BIN (inputd->keys_listbox));
   if (old_child != NULL)
     gtk_widget_destroy (old_child);

=== modified file 'gtk/gtklayout.c'
--- gtk/gtklayout.c	2007-08-14 14:01:36 +0000
+++ gtk/gtklayout.c	2007-08-20 20:03:55 +0000
@@ -32,6 +32,7 @@
 #include "gdkconfig.h"
 
 #include "gtklayout.h"
+#include "gtkscrollable.h"
 #include "gtkprivate.h"
 #include "gtkintl.h"
 #include "gtkmarshalers.h"
@@ -67,9 +68,6 @@
                                            guint           prop_id,
                                            const GValue   *value,
                                            GParamSpec     *pspec);
-static GObject *gtk_layout_constructor    (GType                  type,
-					   guint                  n_properties,
-					   GObjectConstructParam *properties);
 static void gtk_layout_finalize           (GObject        *object);
 static void gtk_layout_realize            (GtkWidget      *widget);
 static void gtk_layout_unrealize          (GtkWidget      *widget);
@@ -88,9 +86,6 @@
                                            gboolean        include_internals,
                                            GtkCallback     callback,
                                            gpointer        callback_data);
-static void gtk_layout_set_adjustments    (GtkLayout      *layout,
-                                           GtkAdjustment  *hadj,
-                                           GtkAdjustment  *vadj);
 static void gtk_layout_set_child_property (GtkContainer   *container,
                                            GtkWidget      *child,
                                            guint           property_id,
@@ -112,147 +107,30 @@
 					     gdouble        upper,
 					     gboolean       always_emit_changed);
 
-G_DEFINE_TYPE (GtkLayout, gtk_layout, GTK_TYPE_CONTAINER)
+G_DEFINE_TYPE_WITH_CODE (GtkLayout, gtk_layout, GTK_TYPE_CONTAINER,
+			 G_IMPLEMENT_INTERFACE (GTK_TYPE_SCROLLABLE,
+						NULL))
 
 /* Public interface
  */
 /**
  * gtk_layout_new:
- * @hadjustment: horizontal scroll adjustment, or %NULL
- * @vadjustment: vertical scroll adjustment, or %NULL
  * 
- * Creates a new #GtkLayout. Unless you have a specific adjustment
- * you'd like the layout to use for scrolling, pass %NULL for
- * @hadjustment and @vadjustment.
+ * Creates a new #GtkLayout.
  * 
  * Return value: a new #GtkLayout
  **/
   
 GtkWidget*    
-gtk_layout_new (GtkAdjustment *hadjustment,
-		GtkAdjustment *vadjustment)
+gtk_layout_new (void)
 {
   GtkLayout *layout;
 
-  layout = g_object_new (GTK_TYPE_LAYOUT,
-			 "hadjustment", hadjustment,
-			 "vadjustment", vadjustment,
-			 NULL);
+  layout = g_object_new (GTK_TYPE_LAYOUT, NULL);
 
   return GTK_WIDGET (layout);
 }
 
-/**
- * gtk_layout_get_hadjustment:
- * @layout: a #GtkLayout
- * 
- * This function should only be called after the layout has been
- * placed in a #GtkScrolledWindow or otherwise configured for
- * scrolling. It returns the #GtkAdjustment used for communication
- * between the horizontal scrollbar and @layout.
- *
- * See #GtkScrolledWindow, #GtkScrollbar, #GtkAdjustment for details.
- * 
- * Return value: horizontal scroll adjustment
- **/
-GtkAdjustment* 
-gtk_layout_get_hadjustment (GtkLayout     *layout)
-{
-  g_return_val_if_fail (GTK_IS_LAYOUT (layout), NULL);
-
-  return layout->hadjustment;
-}
-/**
- * gtk_layout_get_vadjustment:
- * @layout: a #GtkLayout
- * 
- * This function should only be called after the layout has been
- * placed in a #GtkScrolledWindow or otherwise configured for
- * scrolling. It returns the #GtkAdjustment used for communication
- * between the vertical scrollbar and @layout.
- *
- * See #GtkScrolledWindow, #GtkScrollbar, #GtkAdjustment for details.
- * 
- * Return value: vertical scroll adjustment
- **/
-GtkAdjustment* 
-gtk_layout_get_vadjustment (GtkLayout     *layout)
-{
-  g_return_val_if_fail (GTK_IS_LAYOUT (layout), NULL);
-
-  return layout->vadjustment;
-}
-
-static GtkAdjustment *
-new_default_adjustment (void)
-{
-  return GTK_ADJUSTMENT (gtk_adjustment_new (0.0, 0.0, 0.0, 0.0, 0.0, 0.0));
-}
-
-static void           
-gtk_layout_set_adjustments (GtkLayout     *layout,
-			    GtkAdjustment *hadj,
-			    GtkAdjustment *vadj)
-{
-  gboolean need_adjust = FALSE;
-
-  g_return_if_fail (GTK_IS_LAYOUT (layout));
-
-  if (hadj)
-    g_return_if_fail (GTK_IS_ADJUSTMENT (hadj));
-  else if (layout->hadjustment)
-    hadj = new_default_adjustment ();
-  if (vadj)
-    g_return_if_fail (GTK_IS_ADJUSTMENT (vadj));
-  else if (layout->vadjustment)
-    vadj = new_default_adjustment ();
-  
-  if (layout->hadjustment && (layout->hadjustment != hadj))
-    {
-      g_signal_handlers_disconnect_by_func (layout->hadjustment,
-					    gtk_layout_adjustment_changed,
-					    layout);
-      g_object_unref (layout->hadjustment);
-    }
-  
-  if (layout->vadjustment && (layout->vadjustment != vadj))
-    {
-      g_signal_handlers_disconnect_by_func (layout->vadjustment,
-					    gtk_layout_adjustment_changed,
-					    layout);
-      g_object_unref (layout->vadjustment);
-    }
-  
-  if (layout->hadjustment != hadj)
-    {
-      layout->hadjustment = hadj;
-      g_object_ref_sink (layout->hadjustment);
-      gtk_layout_set_adjustment_upper (layout->hadjustment, layout->width, FALSE);
-      
-      g_signal_connect (layout->hadjustment, "value_changed",
-			G_CALLBACK (gtk_layout_adjustment_changed),
-			layout);
-      need_adjust = TRUE;
-    }
-  
-  if (layout->vadjustment != vadj)
-    {
-      layout->vadjustment = vadj;
-      g_object_ref_sink (layout->vadjustment);
-      gtk_layout_set_adjustment_upper (layout->vadjustment, layout->height, FALSE);
-      
-      g_signal_connect (layout->vadjustment, "value_changed",
-			G_CALLBACK (gtk_layout_adjustment_changed),
-			layout);
-      need_adjust = TRUE;
-    }
-
-  /* vadj or hadj can be NULL while constructing; don't emit a signal
-     then */
-  if (need_adjust && vadj && hadj)
-    gtk_layout_adjustment_changed (NULL, layout);
-}
-
 static void
 gtk_layout_finalize (GObject *object)
 {
@@ -264,46 +142,6 @@
   G_OBJECT_CLASS (gtk_layout_parent_class)->finalize (object);
 }
 
-/**
- * gtk_layout_set_hadjustment:
- * @layout: a #GtkLayout
- * @adjustment: new scroll adjustment
- *
- * Sets the horizontal scroll adjustment for the layout.
- *
- * See #GtkScrolledWindow, #GtkScrollbar, #GtkAdjustment for details.
- * 
- **/
-void           
-gtk_layout_set_hadjustment (GtkLayout     *layout,
-			    GtkAdjustment *adjustment)
-{
-  g_return_if_fail (GTK_IS_LAYOUT (layout));
-
-  gtk_layout_set_adjustments (layout, adjustment, layout->vadjustment);
-  g_object_notify (G_OBJECT (layout), "hadjustment");
-}
- 
-/**
- * gtk_layout_set_vadjustment:
- * @layout: a #GtkLayout
- * @adjustment: new scroll adjustment
- *
- * Sets the vertical scroll adjustment for the layout.
- *
- * See #GtkScrolledWindow, #GtkScrollbar, #GtkAdjustment for details.
- * 
- **/
-void           
-gtk_layout_set_vadjustment (GtkLayout     *layout,
-			    GtkAdjustment *adjustment)
-{
-  g_return_if_fail (GTK_IS_LAYOUT (layout));
-  
-  gtk_layout_set_adjustments (layout, layout->hadjustment, adjustment);
-  g_object_notify (G_OBJECT (layout), "vadjustment");
-}
-
 static GtkLayoutChild*
 get_child (GtkLayout  *layout,
            GtkWidget  *widget)
@@ -571,7 +409,6 @@
   gobject_class->set_property = gtk_layout_set_property;
   gobject_class->get_property = gtk_layout_get_property;
   gobject_class->finalize = gtk_layout_finalize;
-  gobject_class->constructor = gtk_layout_constructor;
 
   container_class->set_child_property = gtk_layout_set_child_property;
   container_class->get_child_property = gtk_layout_get_child_property;
@@ -596,21 +433,13 @@
                                                                 0,
                                                                 GTK_PARAM_READWRITE));
   
-  g_object_class_install_property (gobject_class,
-				   PROP_HADJUSTMENT,
-				   g_param_spec_object ("hadjustment",
-							P_("Horizontal adjustment"),
-							P_("The GtkAdjustment for the horizontal position"),
-							GTK_TYPE_ADJUSTMENT,
-							GTK_PARAM_READWRITE));
-  
-  g_object_class_install_property (gobject_class,
-				   PROP_VADJUSTMENT,
-				   g_param_spec_object ("vadjustment",
-							P_("Vertical adjustment"),
-							P_("The GtkAdjustment for the vertical position"),
-							GTK_TYPE_ADJUSTMENT,
-							GTK_PARAM_READWRITE));
+  g_object_class_override_property (gobject_class,
+				    PROP_HADJUSTMENT,
+				    "hadjustment");
+
+  g_object_class_override_property (gobject_class,
+				    PROP_VADJUSTMENT,
+				    "vadjustment");
 
   g_object_class_install_property (gobject_class,
 				   PROP_WIDTH,
@@ -641,19 +470,6 @@
   container_class->add = gtk_layout_add;
   container_class->remove = gtk_layout_remove;
   container_class->forall = gtk_layout_forall;
-
-  class->set_scroll_adjustments = gtk_layout_set_adjustments;
-
-  widget_class->set_scroll_adjustments_signal =
-    g_signal_new (I_("set_scroll_adjustments"),
-		  G_OBJECT_CLASS_TYPE (gobject_class),
-		  G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
-		  G_STRUCT_OFFSET (GtkLayoutClass, set_scroll_adjustments),
-		  NULL, NULL,
-		  _gtk_marshal_VOID__OBJECT_OBJECT,
-		  G_TYPE_NONE, 2,
-		  GTK_TYPE_ADJUSTMENT,
-		  GTK_TYPE_ADJUSTMENT);
 }
 
 static void
@@ -694,14 +510,6 @@
   
   switch (prop_id)
     {
-    case PROP_HADJUSTMENT:
-      gtk_layout_set_hadjustment (layout, 
-				  (GtkAdjustment*) g_value_get_object (value));
-      break;
-    case PROP_VADJUSTMENT:
-      gtk_layout_set_vadjustment (layout, 
-				  (GtkAdjustment*) g_value_get_object (value));
-      break;
     case PROP_WIDTH:
       gtk_layout_set_size (layout, g_value_get_uint (value),
 			   layout->height);
@@ -776,8 +584,14 @@
   layout->width = 100;
   layout->height = 100;
 
-  layout->hadjustment = NULL;
-  layout->vadjustment = NULL;
+  layout->hadjustment = g_object_new (GTK_TYPE_ADJUSTMENT, NULL);
+  g_signal_connect (layout->hadjustment, "value_changed",
+		    G_CALLBACK (gtk_layout_adjustment_changed),
+		    layout);
+  layout->vadjustment = g_object_new (GTK_TYPE_ADJUSTMENT, NULL);
+  g_signal_connect (layout->vadjustment, "value_changed",
+		    G_CALLBACK (gtk_layout_adjustment_changed),
+		    layout);
 
   layout->bin_window = NULL;
 
@@ -788,30 +602,6 @@
   layout->freeze_count = 0;
 }
 
-static GObject *
-gtk_layout_constructor (GType                  type,
-			guint                  n_properties,
-			GObjectConstructParam *properties)
-{
-  GtkLayout *layout;
-  GObject *object;
-  GtkAdjustment *hadj, *vadj;
-  
-  object = G_OBJECT_CLASS (gtk_layout_parent_class)->constructor (type,
-								  n_properties,
-								  properties);
-
-  layout = GTK_LAYOUT (object);
-
-  hadj = layout->hadjustment ? layout->hadjustment : new_default_adjustment ();
-  vadj = layout->vadjustment ? layout->vadjustment : new_default_adjustment ();
-
-  if (!layout->hadjustment || !layout->vadjustment)
-    gtk_layout_set_adjustments (layout, hadj, vadj);
-
-  return object;
-}
-
 /* Widget methods
  */
 

=== modified file 'gtk/gtklayout.h'
--- gtk/gtklayout.h	2007-08-14 14:01:36 +0000
+++ gtk/gtklayout.h	2007-08-20 20:03:55 +0000
@@ -75,10 +75,6 @@
 {
   GtkContainerClass parent_class;
 
-  void  (*set_scroll_adjustments)   (GtkLayout	    *layout,
-				     GtkAdjustment  *hadjustment,
-				     GtkAdjustment  *vadjustment);
-
   /* Padding for future expansion */
   void (*_gtk_reserved1) (void);
   void (*_gtk_reserved2) (void);
@@ -87,8 +83,7 @@
 };
 
 GType          gtk_layout_get_type        (void) G_GNUC_CONST;
-GtkWidget*     gtk_layout_new             (GtkAdjustment *hadjustment,
-				           GtkAdjustment *vadjustment);
+GtkWidget*     gtk_layout_new             (void);
 void           gtk_layout_put             (GtkLayout     *layout, 
 		                           GtkWidget     *child_widget, 
 		                           gint           x, 
@@ -106,14 +101,6 @@
 					   guint         *width,
 					   guint         *height);
 
-GtkAdjustment* gtk_layout_get_hadjustment (GtkLayout     *layout);
-GtkAdjustment* gtk_layout_get_vadjustment (GtkLayout     *layout);
-void           gtk_layout_set_hadjustment (GtkLayout     *layout,
-					   GtkAdjustment *adjustment);
-void           gtk_layout_set_vadjustment (GtkLayout     *layout,
-					   GtkAdjustment *adjustment);
-
-
 #ifndef GTK_DISABLE_DEPRECATED
 /* These disable and enable moving and repainting the scrolling window
  * of the GtkLayout, respectively.  If you want to update the layout's

=== modified file 'gtk/gtkpagesetupunixdialog.c'
--- gtk/gtkpagesetupunixdialog.c	2007-08-14 14:01:36 +0000
+++ gtk/gtkpagesetupunixdialog.c	2007-08-20 20:03:55 +0000
@@ -1856,7 +1856,7 @@
   gtk_box_pack_start (GTK_BOX (hbox), vbox, TRUE, TRUE, 0);
   gtk_widget_show (vbox);
   
-  scrolled = gtk_scrolled_window_new (NULL, NULL);
+  scrolled = gtk_scrolled_window_new ();
   gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled),
 				  GTK_POLICY_AUTOMATIC,
 				  GTK_POLICY_AUTOMATIC);

=== modified file 'gtk/gtkprintunixdialog.c'
--- gtk/gtkprintunixdialog.c	2007-08-14 14:01:36 +0000
+++ gtk/gtkprintunixdialog.c	2007-08-20 20:03:55 +0000
@@ -1444,7 +1444,7 @@
   gtk_box_pack_start (GTK_BOX (main_vbox), vbox, TRUE, TRUE, 0);
   gtk_widget_show (vbox);
 
-  scrolled = gtk_scrolled_window_new (NULL, NULL);
+  scrolled = gtk_scrolled_window_new ();
   gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled),
 				  GTK_POLICY_AUTOMATIC,
 				  GTK_POLICY_AUTOMATIC);
@@ -2304,7 +2304,7 @@
   GtkPrintUnixDialogPrivate *priv = dialog->priv;
   GtkWidget *table, *label, *scrolled;
 
-  scrolled = gtk_scrolled_window_new (NULL, NULL);
+  scrolled = gtk_scrolled_window_new ();
   gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled),
 				  GTK_POLICY_NEVER,
 				  GTK_POLICY_AUTOMATIC);
@@ -2336,7 +2336,7 @@
   GtkPrintUnixDialogPrivate *priv = dialog->priv;
   GtkWidget *main_vbox, *label, *scrolled;
 
-  scrolled = gtk_scrolled_window_new (NULL, NULL);
+  scrolled = gtk_scrolled_window_new ();
   priv->advanced_page = scrolled;
   gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled),
 				  GTK_POLICY_NEVER,

=== modified file 'gtk/gtkrecentchooserdefault.c'
--- gtk/gtkrecentchooserdefault.c	2007-08-14 14:01:36 +0000
+++ gtk/gtkrecentchooserdefault.c	2007-08-20 20:03:55 +0000
@@ -382,7 +382,7 @@
 
   impl->limit = get_recent_files_limit (GTK_WIDGET (impl));
   
-  scrollw = gtk_scrolled_window_new (NULL, NULL);
+  scrollw = gtk_scrolled_window_new ();
   gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrollw),
   				       GTK_SHADOW_IN);
   gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrollw),

=== modified file 'gtk/gtkscrolledwindow.c'
--- gtk/gtkscrolledwindow.c	2007-08-14 14:01:36 +0000
+++ gtk/gtkscrolledwindow.c	2007-08-20 20:03:55 +0000
@@ -29,6 +29,7 @@
 #include <gdk/gdkkeysyms.h>
 #include "gtkbindings.h"
 #include "gtkmarshalers.h"
+#include "gtkscrollable.h"
 #include "gtkscrolledwindow.h"
 #include "gtkwindow.h"
 #include "gtkprivate.h"
@@ -139,8 +140,9 @@
 
 static void gtk_scrolled_window_relative_allocation(GtkWidget              *widget,
 						    GtkAllocation          *allocation);
-static void gtk_scrolled_window_adjustment_changed (GtkAdjustment          *adjustment,
-						    gpointer                data);
+
+static void gtk_scrolled_window_adjustment_changed       (GtkAdjustment          *adjustment,
+							  gpointer                data);
 
 static void gtk_scrolled_window_update_real_placement (GtkScrolledWindow   *scrolled_window);
 
@@ -216,20 +218,6 @@
   class->move_focus_out = gtk_scrolled_window_move_focus_out;
   
   g_object_class_install_property (gobject_class,
-				   PROP_HADJUSTMENT,
-				   g_param_spec_object ("hadjustment",
-							P_("Horizontal Adjustment"),
-							P_("The GtkAdjustment for the horizontal position"),
-							GTK_TYPE_ADJUSTMENT,
-							GTK_PARAM_READWRITE | G_PARAM_CONSTRUCT));
-  g_object_class_install_property (gobject_class,
-				   PROP_VADJUSTMENT,
-				   g_param_spec_object ("vadjustment",
-							P_("Vertical Adjustment"),
-							P_("The GtkAdjustment for the vertical position"),
-							GTK_TYPE_ADJUSTMENT,
-							GTK_PARAM_READWRITE | G_PARAM_CONSTRUCT));
-  g_object_class_install_property (gobject_class,
                                    PROP_HSCROLLBAR_POLICY,
                                    g_param_spec_enum ("hscrollbar-policy",
                                                       P_("Horizontal Scrollbar Policy"),
@@ -367,8 +355,18 @@
 {
   GTK_WIDGET_SET_FLAGS (scrolled_window, GTK_NO_WINDOW | GTK_CAN_FOCUS);
 
-  scrolled_window->hscrollbar = NULL;
-  scrolled_window->vscrollbar = NULL;
+  gtk_widget_push_composite_child ();
+  scrolled_window->hscrollbar = gtk_hscrollbar_new (NULL);
+  scrolled_window->vscrollbar = gtk_vscrollbar_new (NULL);
+  gtk_widget_set_composite_name (scrolled_window->hscrollbar, "hscrollbar");
+  gtk_widget_set_composite_name (scrolled_window->vscrollbar, "vscrollbar");
+  gtk_widget_pop_composite_child ();
+  gtk_widget_set_parent (scrolled_window->hscrollbar, GTK_WIDGET (scrolled_window));
+  gtk_widget_set_parent (scrolled_window->vscrollbar, GTK_WIDGET (scrolled_window));
+  g_object_ref_sink (scrolled_window->hscrollbar);
+  g_object_ref_sink (scrolled_window->vscrollbar);
+  gtk_widget_show (scrolled_window->hscrollbar);
+  gtk_widget_show (scrolled_window->vscrollbar);
   scrolled_window->hscrollbar_policy = GTK_POLICY_ALWAYS;
   scrolled_window->vscrollbar_policy = GTK_POLICY_ALWAYS;
   scrolled_window->hscrollbar_visible = FALSE;
@@ -379,153 +377,15 @@
 }
 
 GtkWidget*
-gtk_scrolled_window_new (GtkAdjustment *hadjustment,
-			 GtkAdjustment *vadjustment)
+gtk_scrolled_window_new (void)
 {
   GtkWidget *scrolled_window;
 
-  if (hadjustment)
-    g_return_val_if_fail (GTK_IS_ADJUSTMENT (hadjustment), NULL);
-
-  if (vadjustment)
-    g_return_val_if_fail (GTK_IS_ADJUSTMENT (vadjustment), NULL);
-
-  scrolled_window = gtk_widget_new (GTK_TYPE_SCROLLED_WINDOW,
-				    "hadjustment", hadjustment,
-				    "vadjustment", vadjustment,
-				    NULL);
+  scrolled_window = gtk_widget_new (GTK_TYPE_SCROLLED_WINDOW, NULL);
 
   return scrolled_window;
 }
 
-void
-gtk_scrolled_window_set_hadjustment (GtkScrolledWindow *scrolled_window,
-				     GtkAdjustment     *hadjustment)
-{
-  GtkBin *bin;
-
-  g_return_if_fail (GTK_IS_SCROLLED_WINDOW (scrolled_window));
-  if (hadjustment)
-    g_return_if_fail (GTK_IS_ADJUSTMENT (hadjustment));
-  else
-    hadjustment = (GtkAdjustment*) g_object_new (GTK_TYPE_ADJUSTMENT, NULL);
-
-  bin = GTK_BIN (scrolled_window);
-
-  if (!scrolled_window->hscrollbar)
-    {
-      gtk_widget_push_composite_child ();
-      scrolled_window->hscrollbar = gtk_hscrollbar_new (hadjustment);
-      gtk_widget_set_composite_name (scrolled_window->hscrollbar, "hscrollbar");
-      gtk_widget_pop_composite_child ();
-
-      gtk_widget_set_parent (scrolled_window->hscrollbar, GTK_WIDGET (scrolled_window));
-      g_object_ref (scrolled_window->hscrollbar);
-      gtk_widget_show (scrolled_window->hscrollbar);
-    }
-  else
-    {
-      GtkAdjustment *old_adjustment;
-      
-      old_adjustment = gtk_range_get_adjustment (GTK_RANGE (scrolled_window->hscrollbar));
-      if (old_adjustment == hadjustment)
-	return;
-
-      g_signal_handlers_disconnect_by_func (old_adjustment,
-					    gtk_scrolled_window_adjustment_changed,
-					    scrolled_window);
-      gtk_range_set_adjustment (GTK_RANGE (scrolled_window->hscrollbar),
-				hadjustment);
-    }
-  hadjustment = gtk_range_get_adjustment (GTK_RANGE (scrolled_window->hscrollbar));
-  g_signal_connect (hadjustment,
-		    "changed",
-		    G_CALLBACK (gtk_scrolled_window_adjustment_changed),
-		    scrolled_window);
-  gtk_scrolled_window_adjustment_changed (hadjustment, scrolled_window);
-  
-  if (bin->child)
-    gtk_widget_set_scroll_adjustments (bin->child,
-				       gtk_range_get_adjustment (GTK_RANGE (scrolled_window->hscrollbar)),
-				       gtk_range_get_adjustment (GTK_RANGE (scrolled_window->vscrollbar)));
-
-  g_object_notify (G_OBJECT (scrolled_window), "hadjustment");
-}
-
-void
-gtk_scrolled_window_set_vadjustment (GtkScrolledWindow *scrolled_window,
-				     GtkAdjustment     *vadjustment)
-{
-  GtkBin *bin;
-
-  g_return_if_fail (GTK_IS_SCROLLED_WINDOW (scrolled_window));
-  if (vadjustment)
-    g_return_if_fail (GTK_IS_ADJUSTMENT (vadjustment));
-  else
-    vadjustment = (GtkAdjustment*) g_object_new (GTK_TYPE_ADJUSTMENT, NULL);
-
-  bin = GTK_BIN (scrolled_window);
-
-  if (!scrolled_window->vscrollbar)
-    {
-      gtk_widget_push_composite_child ();
-      scrolled_window->vscrollbar = gtk_vscrollbar_new (vadjustment);
-      gtk_widget_set_composite_name (scrolled_window->vscrollbar, "vscrollbar");
-      gtk_widget_pop_composite_child ();
-
-      gtk_widget_set_parent (scrolled_window->vscrollbar, GTK_WIDGET (scrolled_window));
-      g_object_ref (scrolled_window->vscrollbar);
-      gtk_widget_show (scrolled_window->vscrollbar);
-    }
-  else
-    {
-      GtkAdjustment *old_adjustment;
-      
-      old_adjustment = gtk_range_get_adjustment (GTK_RANGE (scrolled_window->vscrollbar));
-      if (old_adjustment == vadjustment)
-	return;
-
-      g_signal_handlers_disconnect_by_func (old_adjustment,
-					    gtk_scrolled_window_adjustment_changed,
-					    scrolled_window);
-      gtk_range_set_adjustment (GTK_RANGE (scrolled_window->vscrollbar),
-				vadjustment);
-    }
-  vadjustment = gtk_range_get_adjustment (GTK_RANGE (scrolled_window->vscrollbar));
-  g_signal_connect (vadjustment,
-		    "changed",
-		    G_CALLBACK (gtk_scrolled_window_adjustment_changed),
-		    scrolled_window);
-  gtk_scrolled_window_adjustment_changed (vadjustment, scrolled_window);
-
-  if (bin->child)
-    gtk_widget_set_scroll_adjustments (bin->child,
-				       gtk_range_get_adjustment (GTK_RANGE (scrolled_window->hscrollbar)),
-				       gtk_range_get_adjustment (GTK_RANGE (scrolled_window->vscrollbar)));
-
-  g_object_notify (G_OBJECT (scrolled_window), "vadjustment");
-}
-
-GtkAdjustment*
-gtk_scrolled_window_get_hadjustment (GtkScrolledWindow *scrolled_window)
-{
-  g_return_val_if_fail (GTK_IS_SCROLLED_WINDOW (scrolled_window), NULL);
-
-  return (scrolled_window->hscrollbar ?
-	  gtk_range_get_adjustment (GTK_RANGE (scrolled_window->hscrollbar)) :
-	  NULL);
-}
-
-GtkAdjustment*
-gtk_scrolled_window_get_vadjustment (GtkScrolledWindow *scrolled_window)
-{
-  g_return_val_if_fail (GTK_IS_SCROLLED_WINDOW (scrolled_window), NULL);
-
-  return (scrolled_window->vscrollbar ?
-	  gtk_range_get_adjustment (GTK_RANGE (scrolled_window->vscrollbar)) :
-	  NULL);
-}
-
 /**
  * gtk_scrolled_window_get_hscrollbar:
  * @scrolled_window: a #GtkScrolledWindow
@@ -564,6 +424,22 @@
   return scrolled_window->vscrollbar;
 }
 
+GtkAdjustment*
+gtk_scrolled_window_get_hadjustment (GtkScrolledWindow *scrolled_window)
+{
+  g_return_val_if_fail (GTK_IS_SCROLLED_WINDOW (scrolled_window), NULL);
+
+  return gtk_range_get_adjustment (GTK_RANGE (scrolled_window->hscrollbar));
+}
+
+GtkAdjustment*
+gtk_scrolled_window_get_vadjustment (GtkScrolledWindow *scrolled_window)
+{
+  g_return_val_if_fail (GTK_IS_SCROLLED_WINDOW (scrolled_window), NULL);
+
+  return gtk_range_get_adjustment (GTK_RANGE (scrolled_window->vscrollbar));
+}
+
 void
 gtk_scrolled_window_set_policy (GtkScrolledWindow *scrolled_window,
 				GtkPolicyType      hscrollbar_policy,
@@ -820,14 +696,6 @@
   
   switch (prop_id)
     {
-    case PROP_HADJUSTMENT:
-      gtk_scrolled_window_set_hadjustment (scrolled_window,
-					   g_value_get_object (value));
-      break;
-    case PROP_VADJUSTMENT:
-      gtk_scrolled_window_set_vadjustment (scrolled_window,
-					   g_value_get_object (value));
-      break;
     case PROP_HSCROLLBAR_POLICY:
       gtk_scrolled_window_set_policy (scrolled_window,
 				      g_value_get_enum (value),
@@ -868,14 +736,6 @@
   
   switch (prop_id)
     {
-    case PROP_HADJUSTMENT:
-      g_value_set_object (value,
-			  G_OBJECT (gtk_scrolled_window_get_hadjustment (scrolled_window)));
-      break;
-    case PROP_VADJUSTMENT:
-      g_value_set_object (value,
-			  G_OBJECT (gtk_scrolled_window_get_vadjustment (scrolled_window)));
-      break;
     case PROP_HSCROLLBAR_POLICY:
       g_value_set_enum (value, scrolled_window->hscrollbar_policy);
       break;
@@ -1612,32 +1472,53 @@
 {
   GtkScrolledWindow *scrolled_window;
   GtkBin *bin;
+  GtkAdjustment *adjustment;
 
   bin = GTK_BIN (container);
   g_return_if_fail (bin->child == NULL);
 
   scrolled_window = GTK_SCROLLED_WINDOW (container);
 
+  if (!GTK_IS_SCROLLABLE (child))
+    {
+      g_warning ("GtkScrolledWindow::add cannot add non scrollable widget "
+		 "use gtk_scrolled_window_add_with_viewport() instead");
+      return;
+    }
+
   bin->child = child;
   gtk_widget_set_parent (child, GTK_WIDGET (bin));
 
-  /* this is a temporary message */
-  if (!gtk_widget_set_scroll_adjustments (child,
-					  gtk_range_get_adjustment (GTK_RANGE (scrolled_window->hscrollbar)),
-					  gtk_range_get_adjustment (GTK_RANGE (scrolled_window->vscrollbar))))
-    g_warning ("gtk_scrolled_window_add(): cannot add non scrollable widget "
-	       "use gtk_scrolled_window_add_with_viewport() instead");
+  adjustment = gtk_scrollable_get_hadjustment (GTK_SCROLLABLE (child));
+  g_signal_connect (adjustment, "changed",
+		    G_CALLBACK (gtk_scrolled_window_adjustment_changed), scrolled_window);
+  gtk_range_set_adjustment (GTK_RANGE (scrolled_window->hscrollbar), adjustment);
+  adjustment = gtk_scrollable_get_vadjustment (GTK_SCROLLABLE (child));
+  g_signal_connect (adjustment, "changed",
+		    G_CALLBACK (gtk_scrolled_window_adjustment_changed), scrolled_window);
+  gtk_range_set_adjustment (GTK_RANGE (scrolled_window->vscrollbar), adjustment);
 }
 
 static void
 gtk_scrolled_window_remove (GtkContainer *container,
 			    GtkWidget    *child)
 {
+  GtkScrolledWindow *scrolled_window;
+  GtkAdjustment *adjustment;
+
   g_return_if_fail (GTK_IS_SCROLLED_WINDOW (container));
   g_return_if_fail (child != NULL);
   g_return_if_fail (GTK_BIN (container)->child == child);
-  
-  gtk_widget_set_scroll_adjustments (child, NULL, NULL);
+
+  scrolled_window = GTK_SCROLLED_WINDOW (container);
+
+  adjustment = gtk_range_get_adjustment (GTK_RANGE (scrolled_window->hscrollbar));
+  g_signal_handlers_disconnect_by_func (adjustment, gtk_scrolled_window_adjustment_changed, scrolled_window);
+  gtk_range_set_adjustment (GTK_RANGE (scrolled_window->hscrollbar), NULL);
+
+  adjustment = gtk_range_get_adjustment (GTK_RANGE (scrolled_window->vscrollbar));
+  g_signal_handlers_disconnect_by_func (adjustment, gtk_scrolled_window_adjustment_changed, scrolled_window);
+  gtk_range_set_adjustment (GTK_RANGE (scrolled_window->vscrollbar), NULL);
 
   /* chain parent class handler to remove child */
   GTK_CONTAINER_CLASS (gtk_scrolled_window_parent_class)->remove (container, child);
@@ -1665,9 +1546,7 @@
     }
   else
     {
-      viewport =
-        gtk_viewport_new (gtk_scrolled_window_get_hadjustment (scrolled_window),
-			  gtk_scrolled_window_get_vadjustment (scrolled_window));
+      viewport = gtk_viewport_new ();
       gtk_container_add (GTK_CONTAINER (scrolled_window), viewport);
     }
 

=== modified file 'gtk/gtkscrolledwindow.h'
--- gtk/gtkscrolledwindow.h	2007-08-14 14:01:36 +0000
+++ gtk/gtkscrolledwindow.h	2007-08-20 20:03:55 +0000
@@ -97,16 +97,11 @@
 
 
 GType          gtk_scrolled_window_get_type          (void) G_GNUC_CONST;
-GtkWidget*     gtk_scrolled_window_new               (GtkAdjustment     *hadjustment,
-						      GtkAdjustment     *vadjustment);
-void           gtk_scrolled_window_set_hadjustment   (GtkScrolledWindow *scrolled_window,
-						      GtkAdjustment     *hadjustment);
-void           gtk_scrolled_window_set_vadjustment   (GtkScrolledWindow *scrolled_window,
-						      GtkAdjustment     *vadjustment);
+GtkWidget*     gtk_scrolled_window_new               (void);
+GtkWidget*     gtk_scrolled_window_get_hscrollbar    (GtkScrolledWindow *scrolled_window);
+GtkWidget*     gtk_scrolled_window_get_vscrollbar    (GtkScrolledWindow *scrolled_window);
 GtkAdjustment* gtk_scrolled_window_get_hadjustment   (GtkScrolledWindow *scrolled_window);
 GtkAdjustment* gtk_scrolled_window_get_vadjustment   (GtkScrolledWindow *scrolled_window);
-GtkWidget*     gtk_scrolled_window_get_hscrollbar    (GtkScrolledWindow *scrolled_window);
-GtkWidget*     gtk_scrolled_window_get_vscrollbar    (GtkScrolledWindow *scrolled_window);
 void           gtk_scrolled_window_set_policy        (GtkScrolledWindow *scrolled_window,
 						      GtkPolicyType      hscrollbar_policy,
 						      GtkPolicyType      vscrollbar_policy);

=== modified file 'gtk/gtktext.c'
--- gtk/gtktext.c	2007-08-14 14:01:36 +0000
+++ gtk/gtktext.c	2007-08-20 20:03:55 +0000
@@ -567,7 +567,6 @@
 							 FALSE,
 							 GTK_PARAM_READWRITE));
 
-  widget_class->set_scroll_adjustments_signal =
     gtk_signal_new (I_("set_scroll_adjustments"),
 		    GTK_RUN_LAST,
 		    GTK_CLASS_TYPE (object_class),

=== modified file 'gtk/gtktextview.c'
--- gtk/gtktextview.c	2007-08-14 14:01:36 +0000
+++ gtk/gtktextview.c	2007-08-20 20:03:55 +0000
@@ -37,6 +37,7 @@
 #include "gtkmarshalers.h"
 #include "gtkmenu.h"
 #include "gtkmenuitem.h"
+#include "gtkscrollable.h"
 #include "gtkseparatormenuitem.h"
 #include "gtksettings.h"
 #include "gtkstock.h"
@@ -121,7 +122,6 @@
   
 enum
 {
-  SET_SCROLL_ADJUSTMENTS,
   POPULATE_POPUP,
   MOVE_CURSOR,
   PAGE_HORIZONTALLY,
@@ -156,6 +156,8 @@
   PROP_BUFFER,
   PROP_OVERWRITE,
   PROP_ACCEPTS_TAB,
+  PROP_HADJUSTMENT,
+  PROP_VADJUSTMENT,
   LAST_PROP
 };
 
@@ -246,9 +248,6 @@
                                                   guint             info,
                                                   guint             time);
 
-static void gtk_text_view_set_scroll_adjustments (GtkTextView   *text_view,
-                                                  GtkAdjustment *hadj,
-                                                  GtkAdjustment *vadj);
 static gboolean gtk_text_view_popup_menu         (GtkWidget     *widget);
 
 static void gtk_text_view_move_cursor       (GtkTextView           *text_view,
@@ -338,9 +337,6 @@
                                                   gint               x,
                                                   gint               y);
 
-static GtkAdjustment* get_hadjustment            (GtkTextView       *text_view);
-static GtkAdjustment* get_vadjustment            (GtkTextView       *text_view);
-
 static void gtk_text_view_do_popup               (GtkTextView       *text_view,
 						  GdkEventButton    *event);
 
@@ -431,7 +427,8 @@
 
 static guint signals[LAST_SIGNAL] = { 0 };
 
-G_DEFINE_TYPE (GtkTextView, gtk_text_view, GTK_TYPE_CONTAINER)
+G_DEFINE_TYPE_WITH_CODE (GtkTextView, gtk_text_view, GTK_TYPE_CONTAINER,
+			 G_IMPLEMENT_INTERFACE (GTK_TYPE_SCROLLABLE, NULL))
 
 static void
 add_move_binding (GtkBindingSet  *binding_set,
@@ -528,7 +525,6 @@
   klass->paste_clipboard = gtk_text_view_paste_clipboard;
   klass->toggle_overwrite = gtk_text_view_toggle_overwrite;
   klass->move_focus = gtk_text_view_compat_move_focus;
-  klass->set_scroll_adjustments = gtk_text_view_set_scroll_adjustments;
 
   /*
    * Properties
@@ -660,6 +656,14 @@
 							 TRUE,
 							 GTK_PARAM_READWRITE));
 
+  g_object_class_override_property (gobject_class,
+				    PROP_HADJUSTMENT,
+				    "hadjustment");
+
+  g_object_class_override_property (gobject_class,
+				    PROP_VADJUSTMENT,
+				    "vadjustment");
+
   /*
    * Style properties
    */
@@ -915,18 +919,6 @@
 		  _gtk_marshal_VOID__VOID,
 		  G_TYPE_NONE, 0);
 
-  signals[SET_SCROLL_ADJUSTMENTS] =
-    g_signal_new (I_("set_scroll_adjustments"),
-		  G_OBJECT_CLASS_TYPE (gobject_class),
-		  G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
-		  G_STRUCT_OFFSET (GtkTextViewClass, set_scroll_adjustments),
-		  NULL, NULL,
-		  _gtk_marshal_VOID__OBJECT_OBJECT,
-		  G_TYPE_NONE, 2,
-		  GTK_TYPE_ADJUSTMENT,
-		  GTK_TYPE_ADJUSTMENT);
-  widget_class->set_scroll_adjustments_signal = signals[SET_SCROLL_ADJUSTMENTS];
-
   signals[POPULATE_POPUP] =
     g_signal_new (I_("populate_popup"),
 		  G_OBJECT_CLASS_TYPE (gobject_class),
@@ -1206,6 +1198,15 @@
   text_view->virtual_cursor_x = -1;
   text_view->virtual_cursor_y = -1;
 
+  text_view->hadjustment = g_object_ref_sink (g_object_new (GTK_TYPE_ADJUSTMENT, NULL));
+  g_signal_connect (text_view->hadjustment, "value-changed",
+		    G_CALLBACK (gtk_text_view_value_changed),
+		    text_view);
+  text_view->vadjustment = g_object_ref_sink (g_object_new (GTK_TYPE_ADJUSTMENT, NULL));
+  g_signal_connect (text_view->vadjustment, "value-changed",
+		    G_CALLBACK (gtk_text_view_value_changed),
+		    text_view);
+
   /* This object is completely private. No external entity can gain a reference
    * to it; so we create it here and destroy it in finalize ().
    */
@@ -1727,7 +1728,7 @@
   
   if (scroll_inc != 0)
     {
-      retval = set_adjustment_clamped (get_vadjustment (text_view),
+      retval = set_adjustment_clamped (text_view->vadjustment,
                                        current_y_scroll + scroll_inc);
 
       DV (g_print (" vert increment %d\n", scroll_inc));
@@ -1764,7 +1765,7 @@
   
   if (scroll_inc != 0)
     {
-      retval = set_adjustment_clamped (get_hadjustment (text_view),
+      retval = set_adjustment_clamped (text_view->hadjustment,
                                        current_x_scroll + scroll_inc);
 
       DV (g_print (" horiz increment %d\n", scroll_inc));
@@ -1934,13 +1935,11 @@
       text_view->width = width;
       text_view->height = height;
 
-      gtk_text_view_set_adjustment_upper (get_hadjustment (text_view),
+      gtk_text_view_set_adjustment_upper (text_view->hadjustment,
                                           MAX (SCREEN_WIDTH (text_view), width));
-      gtk_text_view_set_adjustment_upper (get_vadjustment (text_view),
+      gtk_text_view_set_adjustment_upper (text_view->vadjustment,
                                           MAX (SCREEN_HEIGHT (text_view), height));
       
-      /* hadj/vadj exist since we called get_hadjustment/get_vadjustment above */
-
       /* Set up the step sizes; we'll say that a page is
          our allocation minus one step, and a step is
          1/10 of our allocation. */
@@ -1954,8 +1953,8 @@
       text_view->vadjustment->page_increment =
         SCREEN_HEIGHT (text_view) * 0.9;
 
-      gtk_adjustment_changed (get_hadjustment (text_view));
-      gtk_adjustment_changed (get_vadjustment (text_view));
+      gtk_adjustment_changed (text_view->hadjustment);
+      gtk_adjustment_changed (text_view->vadjustment);
     }
 }
 
@@ -2897,8 +2896,16 @@
     case PROP_ACCEPTS_TAB:
       g_value_set_boolean (value, text_view->accepts_tab);
       break;
+
+    case PROP_HADJUSTMENT:
+      g_value_set_object (value, text_view->hadjustment);
+      break;
       
-    default:
+    case PROP_VADJUSTMENT:
+      g_value_set_object (value, text_view->vadjustment);
+      break;
+
+     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
       break;
     }
@@ -3255,10 +3262,6 @@
   /* Note that this will do some layout validation */
   gtk_text_view_allocate_children (text_view);
 
-  /* Ensure h/v adj exist */
-  get_hadjustment (text_view);
-  get_vadjustment (text_view);
-
   text_view->hadjustment->page_size = SCREEN_WIDTH (text_view);
   text_view->hadjustment->page_increment = SCREEN_WIDTH (text_view) * 0.9;
   text_view->hadjustment->step_increment = SCREEN_WIDTH (text_view) * 0.1;
@@ -3561,14 +3564,14 @@
         {
           text_view->yoffset += new_first_para_top - old_first_para_top;
           
-          get_vadjustment (text_view)->value = text_view->yoffset;
+          text_view->vadjustment->value = text_view->yoffset;
           yoffset_changed = TRUE;
         }
 
       if (yoffset_changed)
         {
           DV(g_print ("Changing scroll position (%s)\n", G_STRLOC));
-          gtk_adjustment_value_changed (get_vadjustment (text_view));
+          gtk_adjustment_value_changed (text_view->vadjustment);
         }
 
       /* FIXME be smarter about which anchored widgets we update */
@@ -5092,15 +5095,15 @@
     case GTK_SCROLL_STEPS:
     case GTK_SCROLL_PAGES:
     case GTK_SCROLL_ENDS:
-      adjustment = get_vadjustment (text_view);
+      adjustment = text_view->vadjustment;
       break;
     case GTK_SCROLL_HORIZONTAL_STEPS:
     case GTK_SCROLL_HORIZONTAL_PAGES:
     case GTK_SCROLL_HORIZONTAL_ENDS:
-      adjustment = get_hadjustment (text_view);
+      adjustment = text_view->hadjustment;
       break;
     default:
-      adjustment = get_vadjustment (text_view);
+      adjustment = text_view->vadjustment;
       break;
     }
 
@@ -6779,86 +6782,6 @@
     }
 }
 
-static GtkAdjustment*
-get_hadjustment (GtkTextView *text_view)
-{
-  if (text_view->hadjustment == NULL)
-    gtk_text_view_set_scroll_adjustments (text_view,
-                                          NULL, /* forces creation */
-                                          text_view->vadjustment);
-
-  return text_view->hadjustment;
-}
-
-static GtkAdjustment*
-get_vadjustment (GtkTextView *text_view)
-{
-  if (text_view->vadjustment == NULL)
-    gtk_text_view_set_scroll_adjustments (text_view,
-                                          text_view->hadjustment,
-                                          NULL); /* forces creation */
-  return text_view->vadjustment;
-}
-
-
-static void
-gtk_text_view_set_scroll_adjustments (GtkTextView   *text_view,
-                                      GtkAdjustment *hadj,
-                                      GtkAdjustment *vadj)
-{
-  gboolean need_adjust = FALSE;
-
-  if (hadj)
-    g_return_if_fail (GTK_IS_ADJUSTMENT (hadj));
-  else
-    hadj = GTK_ADJUSTMENT (gtk_adjustment_new (0.0, 0.0, 0.0, 0.0, 0.0, 0.0));
-  if (vadj)
-    g_return_if_fail (GTK_IS_ADJUSTMENT (vadj));
-  else
-    vadj = GTK_ADJUSTMENT (gtk_adjustment_new (0.0, 0.0, 0.0, 0.0, 0.0, 0.0));
-
-  if (text_view->hadjustment && (text_view->hadjustment != hadj))
-    {
-      g_signal_handlers_disconnect_by_func (text_view->hadjustment,
-					    gtk_text_view_value_changed,
-					    text_view);
-      g_object_unref (text_view->hadjustment);
-    }
-
-  if (text_view->vadjustment && (text_view->vadjustment != vadj))
-    {
-      g_signal_handlers_disconnect_by_func (text_view->vadjustment,
-					    gtk_text_view_value_changed,
-					    text_view);
-      g_object_unref (text_view->vadjustment);
-    }
-
-  if (text_view->hadjustment != hadj)
-    {
-      text_view->hadjustment = hadj;
-      g_object_ref_sink (text_view->hadjustment);
-      
-      g_signal_connect (text_view->hadjustment, "value_changed",
-                        G_CALLBACK (gtk_text_view_value_changed),
-			text_view);
-      need_adjust = TRUE;
-    }
-
-  if (text_view->vadjustment != vadj)
-    {
-      text_view->vadjustment = vadj;
-      g_object_ref_sink (text_view->vadjustment);
-      
-      g_signal_connect (text_view->vadjustment, "value_changed",
-                        G_CALLBACK (gtk_text_view_value_changed),
-			text_view);
-      need_adjust = TRUE;
-    }
-
-  if (need_adjust)
-    gtk_text_view_value_changed (NULL, text_view);
-}
-
 /* FIXME this adjust_allocation is a big cut-and-paste from
  * GtkCList, needs to be some "official" way to do this
  * factored out.
@@ -7068,7 +6991,7 @@
     }
 
   gtk_text_view_update_im_spot_location (text_view);
-  
+
   DV(g_print(">End scroll offset changed handler ("G_STRLOC")\n"));
 }
 

=== modified file 'gtk/gtktextview.h'
--- gtk/gtktextview.h	2007-08-14 14:01:36 +0000
+++ gtk/gtktextview.h	2007-08-20 20:03:55 +0000
@@ -154,10 +154,6 @@
 {
   GtkContainerClass parent_class;
 
-  void (* set_scroll_adjustments)   (GtkTextView    *text_view,
-                                     GtkAdjustment  *hadjustment,
-                                     GtkAdjustment  *vadjustment);
-
   void (* populate_popup)           (GtkTextView    *text_view,
                                      GtkMenu        *menu);
   

=== modified file 'gtk/gtktreeview.c'
--- gtk/gtktreeview.c	2007-08-14 14:01:36 +0000
+++ gtk/gtktreeview.c	2007-08-20 20:03:55 +0000
@@ -41,6 +41,7 @@
 #include "gtkcontainer.h"
 #include "gtkentry.h"
 #include "gtkframe.h"
+#include "gtkscrollable.h"
 #include "gtktreemodelsort.h"
 #include "gtktooltip.h"
 #include "gtkprivate.h"
@@ -250,9 +251,6 @@
                                                   guint             time);
 
 /* tree_model signals */
-static void gtk_tree_view_set_adjustments                 (GtkTreeView     *tree_view,
-							   GtkAdjustment   *hadj,
-							   GtkAdjustment   *vadj);
 static gboolean gtk_tree_view_real_move_cursor            (GtkTreeView     *tree_view,
 							   GtkMovementStep  step,
 							   gint             count);
@@ -484,7 +482,8 @@
 
 G_DEFINE_TYPE_WITH_CODE (GtkTreeView, gtk_tree_view, GTK_TYPE_CONTAINER,
 			 G_IMPLEMENT_INTERFACE (GTK_TYPE_BUILDABLE,
-						gtk_tree_view_buildable_init))
+						gtk_tree_view_buildable_init)
+			 G_IMPLEMENT_INTERFACE (GTK_TYPE_SCROLLABLE, NULL))
 
 static void
 gtk_tree_view_class_init (GtkTreeViewClass *class)
@@ -546,7 +545,6 @@
   container_class->forall = gtk_tree_view_forall;
   container_class->set_focus_child = gtk_tree_view_set_focus_child;
 
-  class->set_scroll_adjustments = gtk_tree_view_set_adjustments;
   class->move_cursor = gtk_tree_view_real_move_cursor;
   class->select_all = gtk_tree_view_real_select_all;
   class->unselect_all = gtk_tree_view_real_unselect_all;
@@ -566,21 +564,13 @@
 							GTK_TYPE_TREE_MODEL,
 							GTK_PARAM_READWRITE));
 
-  g_object_class_install_property (o_class,
-                                   PROP_HADJUSTMENT,
-                                   g_param_spec_object ("hadjustment",
-							P_("Horizontal Adjustment"),
-                                                        P_("Horizontal Adjustment for the widget"),
-                                                        GTK_TYPE_ADJUSTMENT,
-                                                        GTK_PARAM_READWRITE));
+  g_object_class_override_property (o_class,
+				    PROP_HADJUSTMENT,
+				    "hadjustment");
 
-  g_object_class_install_property (o_class,
-                                   PROP_VADJUSTMENT,
-                                   g_param_spec_object ("vadjustment",
-							P_("Vertical Adjustment"),
-                                                        P_("Vertical Adjustment for the widget"),
-                                                        GTK_TYPE_ADJUSTMENT,
-                                                        GTK_PARAM_READWRITE));
+  g_object_class_override_property (o_class,
+				    PROP_VADJUSTMENT,
+				    "vadjustment");
 
   g_object_class_install_property (o_class,
                                    PROP_HEADERS_VISIBLE,
@@ -863,17 +853,6 @@
 								GTK_PARAM_READABLE));
 
   /* Signals */
-  widget_class->set_scroll_adjustments_signal =
-    g_signal_new (I_("set_scroll_adjustments"),
-		  G_TYPE_FROM_CLASS (o_class),
-		  G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
-		  G_STRUCT_OFFSET (GtkTreeViewClass, set_scroll_adjustments),
-		  NULL, NULL,
-		  _gtk_marshal_VOID__OBJECT_OBJECT,
-		  G_TYPE_NONE, 2,
-		  GTK_TYPE_ADJUSTMENT,
-		  GTK_TYPE_ADJUSTMENT);
-
   /**
    * GtkTreeView::row-activated:
    * @tree_view: the object on which the signal is emitted
@@ -1340,7 +1319,8 @@
   tree_view->priv->fixed_height = -1;
   tree_view->priv->fixed_height_mode = FALSE;
   tree_view->priv->fixed_height_check = 0;
-  gtk_tree_view_set_adjustments (tree_view, NULL, NULL);
+  tree_view->priv->hadjustment = g_object_ref_sink (g_object_new (GTK_TYPE_ADJUSTMENT, NULL));
+  tree_view->priv->vadjustment = g_object_ref_sink (g_object_new (GTK_TYPE_ADJUSTMENT, NULL));
   tree_view->priv->selection = _gtk_tree_selection_new_with_tree_view (tree_view);
   tree_view->priv->enable_search = TRUE;
   tree_view->priv->search_column = -1;
@@ -1362,6 +1342,13 @@
   tree_view->priv->tree_lines_enabled = FALSE;
 
   tree_view->priv->tooltip_column = -1;
+
+  g_signal_connect (tree_view->priv->hadjustment, "value_changed",
+		    G_CALLBACK (gtk_tree_view_adjustment_changed),
+		    tree_view);
+  g_signal_connect (tree_view->priv->vadjustment, "value_changed",
+		    G_CALLBACK (gtk_tree_view_adjustment_changed),
+		    tree_view);
 }
 
 
@@ -1384,12 +1371,6 @@
     case PROP_MODEL:
       gtk_tree_view_set_model (tree_view, g_value_get_object (value));
       break;
-    case PROP_HADJUSTMENT:
-      gtk_tree_view_set_hadjustment (tree_view, g_value_get_object (value));
-      break;
-    case PROP_VADJUSTMENT:
-      gtk_tree_view_set_vadjustment (tree_view, g_value_get_object (value));
-      break;
     case PROP_HEADERS_VISIBLE:
       gtk_tree_view_set_headers_visible (tree_view, g_value_get_boolean (value));
       break;
@@ -7874,67 +7855,6 @@
   GTK_CONTAINER_CLASS (gtk_tree_view_parent_class)->set_focus_child (container, child);
 }
 
-static void
-gtk_tree_view_set_adjustments (GtkTreeView   *tree_view,
-			       GtkAdjustment *hadj,
-			       GtkAdjustment *vadj)
-{
-  gboolean need_adjust = FALSE;
-
-  g_return_if_fail (GTK_IS_TREE_VIEW (tree_view));
-
-  if (hadj)
-    g_return_if_fail (GTK_IS_ADJUSTMENT (hadj));
-  else
-    hadj = GTK_ADJUSTMENT (gtk_adjustment_new (0.0, 0.0, 0.0, 0.0, 0.0, 0.0));
-  if (vadj)
-    g_return_if_fail (GTK_IS_ADJUSTMENT (vadj));
-  else
-    vadj = GTK_ADJUSTMENT (gtk_adjustment_new (0.0, 0.0, 0.0, 0.0, 0.0, 0.0));
-
-  if (tree_view->priv->hadjustment && (tree_view->priv->hadjustment != hadj))
-    {
-      g_signal_handlers_disconnect_by_func (tree_view->priv->hadjustment,
-					    gtk_tree_view_adjustment_changed,
-					    tree_view);
-      g_object_unref (tree_view->priv->hadjustment);
-    }
-
-  if (tree_view->priv->vadjustment && (tree_view->priv->vadjustment != vadj))
-    {
-      g_signal_handlers_disconnect_by_func (tree_view->priv->vadjustment,
-					    gtk_tree_view_adjustment_changed,
-					    tree_view);
-      g_object_unref (tree_view->priv->vadjustment);
-    }
-
-  if (tree_view->priv->hadjustment != hadj)
-    {
-      tree_view->priv->hadjustment = hadj;
-      g_object_ref_sink (tree_view->priv->hadjustment);
-
-      g_signal_connect (tree_view->priv->hadjustment, "value_changed",
-			G_CALLBACK (gtk_tree_view_adjustment_changed),
-			tree_view);
-      need_adjust = TRUE;
-    }
-
-  if (tree_view->priv->vadjustment != vadj)
-    {
-      tree_view->priv->vadjustment = vadj;
-      g_object_ref_sink (tree_view->priv->vadjustment);
-
-      g_signal_connect (tree_view->priv->vadjustment, "value_changed",
-			G_CALLBACK (gtk_tree_view_adjustment_changed),
-			tree_view);
-      need_adjust = TRUE;
-    }
-
-  if (need_adjust)
-    gtk_tree_view_adjustment_changed (NULL, tree_view);
-}
-
-
 static gboolean
 gtk_tree_view_real_move_cursor (GtkTreeView       *tree_view,
 				GtkMovementStep    step,
@@ -10685,86 +10605,6 @@
   return tree_view->priv->selection;
 }
 
-/**
- * gtk_tree_view_get_hadjustment:
- * @tree_view: A #GtkTreeView
- *
- * Gets the #GtkAdjustment currently being used for the horizontal aspect.
- *
- * Return value: A #GtkAdjustment object, or %NULL if none is currently being
- * used.
- **/
-GtkAdjustment *
-gtk_tree_view_get_hadjustment (GtkTreeView *tree_view)
-{
-  g_return_val_if_fail (GTK_IS_TREE_VIEW (tree_view), NULL);
-
-  if (tree_view->priv->hadjustment == NULL)
-    gtk_tree_view_set_hadjustment (tree_view, NULL);
-
-  return tree_view->priv->hadjustment;
-}
-
-/**
- * gtk_tree_view_set_hadjustment:
- * @tree_view: A #GtkTreeView
- * @adjustment: The #GtkAdjustment to set, or %NULL
- *
- * Sets the #GtkAdjustment for the current horizontal aspect.
- **/
-void
-gtk_tree_view_set_hadjustment (GtkTreeView   *tree_view,
-			       GtkAdjustment *adjustment)
-{
-  g_return_if_fail (GTK_IS_TREE_VIEW (tree_view));
-
-  gtk_tree_view_set_adjustments (tree_view,
-				 adjustment,
-				 tree_view->priv->vadjustment);
-
-  g_object_notify (G_OBJECT (tree_view), "hadjustment");
-}
-
-/**
- * gtk_tree_view_get_vadjustment:
- * @tree_view: A #GtkTreeView
- *
- * Gets the #GtkAdjustment currently being used for the vertical aspect.
- *
- * Return value: A #GtkAdjustment object, or %NULL if none is currently being
- * used.
- **/
-GtkAdjustment *
-gtk_tree_view_get_vadjustment (GtkTreeView *tree_view)
-{
-  g_return_val_if_fail (GTK_IS_TREE_VIEW (tree_view), NULL);
-
-  if (tree_view->priv->vadjustment == NULL)
-    gtk_tree_view_set_vadjustment (tree_view, NULL);
-
-  return tree_view->priv->vadjustment;
-}
-
-/**
- * gtk_tree_view_set_vadjustment:
- * @tree_view: A #GtkTreeView
- * @adjustment: The #GtkAdjustment to set, or %NULL
- *
- * Sets the #GtkAdjustment for the current vertical aspect.
- **/
-void
-gtk_tree_view_set_vadjustment (GtkTreeView   *tree_view,
-			       GtkAdjustment *adjustment)
-{
-  g_return_if_fail (GTK_IS_TREE_VIEW (tree_view));
-
-  gtk_tree_view_set_adjustments (tree_view,
-				 tree_view->priv->hadjustment,
-				 adjustment);
-
-  g_object_notify (G_OBJECT (tree_view), "vadjustment");
-}
-
 /* Column and header operations */
 
 /**

=== modified file 'gtk/gtktreeview.h'
--- gtk/gtktreeview.h	2007-08-14 14:01:36 +0000
+++ gtk/gtktreeview.h	2007-08-20 20:03:55 +0000
@@ -66,9 +66,6 @@
 {
   GtkContainerClass parent_class;
 
-  void     (* set_scroll_adjustments)     (GtkTreeView       *tree_view,
-				           GtkAdjustment     *hadjustment,
-				           GtkAdjustment     *vadjustment);
   void     (* row_activated)              (GtkTreeView       *tree_view,
 				           GtkTreePath       *path,
 					   GtkTreeViewColumn *column);
@@ -143,12 +140,6 @@
 void                   gtk_tree_view_set_model                     (GtkTreeView               *tree_view,
 								    GtkTreeModel              *model);
 GtkTreeSelection      *gtk_tree_view_get_selection                 (GtkTreeView               *tree_view);
-GtkAdjustment         *gtk_tree_view_get_hadjustment               (GtkTreeView               *tree_view);
-void                   gtk_tree_view_set_hadjustment               (GtkTreeView               *tree_view,
-								    GtkAdjustment             *adjustment);
-GtkAdjustment         *gtk_tree_view_get_vadjustment               (GtkTreeView               *tree_view);
-void                   gtk_tree_view_set_vadjustment               (GtkTreeView               *tree_view,
-								    GtkAdjustment             *adjustment);
 gboolean               gtk_tree_view_get_headers_visible           (GtkTreeView               *tree_view);
 void                   gtk_tree_view_set_headers_visible           (GtkTreeView               *tree_view,
 								    gboolean                   headers_visible);

=== modified file 'gtk/gtkviewport.c'
--- gtk/gtkviewport.c	2007-08-14 14:01:36 +0000
+++ gtk/gtkviewport.c	2007-08-20 20:03:55 +0000
@@ -29,6 +29,7 @@
 #include "gtkintl.h"
 #include "gtkmarshalers.h"
 #include "gtkprivate.h"
+#include "gtkscrollable.h"
 #include "gtkalias.h"
 
 enum {
@@ -49,9 +50,6 @@
 						   guint            prop_id,
 						   GValue          *value,
 						   GParamSpec      *pspec);
-static void gtk_viewport_set_scroll_adjustments	  (GtkViewport	    *viewport,
-						   GtkAdjustment    *hadjustment,
-						   GtkAdjustment    *vadjustment);
 static void gtk_viewport_realize                  (GtkWidget        *widget);
 static void gtk_viewport_unrealize                (GtkWidget        *widget);
 static void gtk_viewport_paint                    (GtkWidget        *widget,
@@ -69,7 +67,10 @@
 static void gtk_viewport_style_set                (GtkWidget *widget,
 			                           GtkStyle  *previous_style);
 
-G_DEFINE_TYPE (GtkViewport, gtk_viewport, GTK_TYPE_BIN)
+static void gtk_viewport_scrollable_init          (GtkScrollableIface *iface);
+
+G_DEFINE_TYPE_WITH_CODE (GtkViewport, gtk_viewport, GTK_TYPE_BIN,
+			 G_IMPLEMENT_INTERFACE (GTK_TYPE_SCROLLABLE, NULL))
 
 static void
 gtk_viewport_class_init (GtkViewportClass *class)
@@ -98,23 +99,13 @@
   
   container_class->add = gtk_viewport_add;
 
-  class->set_scroll_adjustments = gtk_viewport_set_scroll_adjustments;
-
-  g_object_class_install_property (gobject_class,
-                                   PROP_HADJUSTMENT,
-                                   g_param_spec_object ("hadjustment",
-							P_("Horizontal adjustment"),
-							P_("The GtkAdjustment that determines the values of the horizontal position for this viewport"),
-                                                        GTK_TYPE_ADJUSTMENT,
-                                                        GTK_PARAM_READWRITE | G_PARAM_CONSTRUCT));
-
-  g_object_class_install_property (gobject_class,
-                                   PROP_VADJUSTMENT,
-                                   g_param_spec_object ("vadjustment",
-							P_("Vertical adjustment"),
-							P_("The GtkAdjustment that determines the values of the vertical position for this viewport"),
-                                                        GTK_TYPE_ADJUSTMENT,
-                                                        GTK_PARAM_READWRITE | G_PARAM_CONSTRUCT));
+  g_object_class_override_property (gobject_class,
+				    PROP_HADJUSTMENT,
+				    "hadjustment");
+
+  g_object_class_override_property (gobject_class,
+				    PROP_VADJUSTMENT,
+				    "vadjustment");
 
   g_object_class_install_property (gobject_class,
                                    PROP_SHADOW_TYPE,
@@ -124,17 +115,6 @@
 						      GTK_TYPE_SHADOW_TYPE,
 						      GTK_SHADOW_IN,
 						      GTK_PARAM_READWRITE));
-
-  widget_class->set_scroll_adjustments_signal =
-    g_signal_new (I_("set_scroll_adjustments"),
-		  G_OBJECT_CLASS_TYPE (gobject_class),
-		  G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
-		  G_STRUCT_OFFSET (GtkViewportClass, set_scroll_adjustments),
-		  NULL, NULL,
-		  _gtk_marshal_VOID__OBJECT_OBJECT,
-		  G_TYPE_NONE, 2,
-		  GTK_TYPE_ADJUSTMENT,
-		  GTK_TYPE_ADJUSTMENT);
 }
 
 static void
@@ -149,12 +129,6 @@
 
   switch (prop_id)
     {
-    case PROP_HADJUSTMENT:
-      gtk_viewport_set_hadjustment (viewport, g_value_get_object (value));
-      break;
-    case PROP_VADJUSTMENT:
-      gtk_viewport_set_vadjustment (viewport, g_value_get_object (value));
-      break;
     case PROP_SHADOW_TYPE:
       gtk_viewport_set_shadow_type (viewport, g_value_get_enum (value));
       break;
@@ -202,8 +176,13 @@
   viewport->shadow_type = GTK_SHADOW_IN;
   viewport->view_window = NULL;
   viewport->bin_window = NULL;
-  viewport->hadjustment = NULL;
-  viewport->vadjustment = NULL;
+  viewport->hadjustment = g_object_ref_sink (g_object_new (GTK_TYPE_ADJUSTMENT, NULL));
+  viewport->vadjustment = g_object_ref_sink (g_object_new (GTK_TYPE_ADJUSTMENT, NULL));
+
+  g_signal_connect (viewport->hadjustment, "value-changed",
+		    G_CALLBACK (gtk_viewport_adjustment_value_changed), viewport);
+  g_signal_connect (viewport->vadjustment, "value-changed",
+		    G_CALLBACK (gtk_viewport_adjustment_value_changed), viewport);
 }
 
 /**
@@ -216,46 +195,37 @@
  *
  **/
 GtkWidget*
-gtk_viewport_new (GtkAdjustment *hadjustment,
-		  GtkAdjustment *vadjustment)
+gtk_viewport_new (void)
 {
   GtkWidget *viewport;
 
-  viewport = gtk_widget_new (GTK_TYPE_VIEWPORT,
-			     "hadjustment", hadjustment,
-			     "vadjustment", vadjustment,
-			     NULL);
+  viewport = gtk_widget_new (GTK_TYPE_VIEWPORT, NULL);
 
   return viewport;
 }
 
-#define ADJUSTMENT_POINTER(viewport, orientation)         \
-  (((orientation) == GTK_ORIENTATION_HORIZONTAL) ?        \
-     &(viewport)->hadjustment : &(viewport)->vadjustment)
-
-static void
-viewport_disconnect_adjustment (GtkViewport    *viewport,
-				GtkOrientation  orientation)
-{
-  GtkAdjustment **adjustmentp = ADJUSTMENT_POINTER (viewport, orientation);
-
-  if (*adjustmentp)
-    {
-      g_signal_handlers_disconnect_by_func (*adjustmentp,
-					    gtk_viewport_adjustment_value_changed,
-					    viewport);
-      g_object_unref (*adjustmentp);
-      *adjustmentp = NULL;
-    }
-}
-
 static void
 gtk_viewport_finalize (GObject *object)
 {
   GtkViewport *viewport = GTK_VIEWPORT (object);
 
-  viewport_disconnect_adjustment (viewport, GTK_ORIENTATION_HORIZONTAL);
-  viewport_disconnect_adjustment (viewport, GTK_ORIENTATION_VERTICAL);
+  if (viewport->hadjustment)
+    {
+      g_signal_handlers_disconnect_by_func (viewport->hadjustment,
+					    gtk_viewport_adjustment_value_changed,
+					    viewport);
+      g_object_unref (viewport->hadjustment);
+      viewport->hadjustment = NULL;
+    }
+
+  if (viewport->vadjustment)
+    {
+      g_signal_handlers_disconnect_by_func (viewport->vadjustment,
+					    gtk_viewport_adjustment_value_changed,
+					    viewport);
+      g_object_unref (viewport->vadjustment);
+      viewport->vadjustment = NULL;
+    }
 
   G_OBJECT_CLASS (gtk_viewport_parent_class)->finalize (object);
 }
@@ -265,50 +235,9 @@
 {
   GtkViewport *viewport = GTK_VIEWPORT (object);
 
-  viewport_disconnect_adjustment (viewport, GTK_ORIENTATION_HORIZONTAL);
-  viewport_disconnect_adjustment (viewport, GTK_ORIENTATION_VERTICAL);
-
   GTK_OBJECT_CLASS (gtk_viewport_parent_class)->destroy (object);
 }
 
-/**
- * gtk_viewport_get_hadjustment:
- * @viewport: a #GtkViewport.
- * 
- * Returns the horizontal adjustment of the viewport.
- *
- * Return value: the horizontal adjustment of @viewport.
- **/
-GtkAdjustment*
-gtk_viewport_get_hadjustment (GtkViewport *viewport)
-{
-  g_return_val_if_fail (GTK_IS_VIEWPORT (viewport), NULL);
-
-  if (!viewport->hadjustment)
-    gtk_viewport_set_hadjustment (viewport, NULL);
-
-  return viewport->hadjustment;
-}
-
-/**
- * gtk_viewport_get_vadjustment:
- * @viewport: a #GtkViewport.
- * 
- * Returns the vertical adjustment of the viewport.
- *
- * Return value: the vertical adjustment of @viewport.
- **/
-GtkAdjustment*
-gtk_viewport_get_vadjustment (GtkViewport *viewport)
-{
-  g_return_val_if_fail (GTK_IS_VIEWPORT (viewport), NULL);
-
-  if (!viewport->vadjustment)
-    gtk_viewport_set_vadjustment (viewport, NULL);
-
-  return viewport->vadjustment;
-}
-
 static void
 viewport_get_view_allocation (GtkViewport   *viewport,
 			      GtkAllocation *view_allocation)
@@ -353,7 +282,7 @@
 {
   GtkBin *bin = GTK_BIN (viewport);
   GtkAllocation view_allocation;
-  GtkAdjustment *hadjustment = gtk_viewport_get_hadjustment (viewport);
+  GtkAdjustment *hadjustment = viewport->hadjustment;
   gdouble old_page_size;
   gdouble old_upper;
   gdouble old_value;
@@ -396,7 +325,7 @@
 {
   GtkBin *bin = GTK_BIN (viewport);
   GtkAllocation view_allocation;
-  GtkAdjustment *vadjustment = gtk_viewport_get_vadjustment (viewport);
+  GtkAdjustment *vadjustment = viewport->vadjustment;
 
   viewport_get_view_allocation (viewport, &view_allocation);  
 
@@ -419,90 +348,6 @@
   viewport_reclamp_adjustment (vadjustment, value_changed);
 }
 
-static void
-viewport_set_adjustment (GtkViewport    *viewport,
-			 GtkOrientation  orientation,
-			 GtkAdjustment  *adjustment)
-{
-  GtkAdjustment **adjustmentp = ADJUSTMENT_POINTER (viewport, orientation);
-  gboolean value_changed;
-
-  if (adjustment && adjustment == *adjustmentp)
-    return;
-
-  if (!adjustment)
-    adjustment = GTK_ADJUSTMENT (gtk_adjustment_new (0.0, 0.0, 0.0,
-						     0.0, 0.0, 0.0));
-  viewport_disconnect_adjustment (viewport, orientation);
-  *adjustmentp = adjustment;
-  g_object_ref_sink (adjustment);
-
-  if (orientation == GTK_ORIENTATION_HORIZONTAL)
-    viewport_set_hadjustment_values (viewport, &value_changed);
-  else
-    viewport_set_vadjustment_values (viewport, &value_changed);
-
-  g_signal_connect (adjustment, "value_changed",
-		    G_CALLBACK (gtk_viewport_adjustment_value_changed),
-		    viewport);
-
-  gtk_adjustment_changed (adjustment);
-  
-  if (value_changed)
-    gtk_adjustment_value_changed (adjustment);
-  else
-    gtk_viewport_adjustment_value_changed (adjustment, viewport);
-}
-
-/**
- * gtk_viewport_set_hadjustment:
- * @viewport: a #GtkViewport.
- * @adjustment: a #GtkAdjustment.
- * 
- * Sets the horizontal adjustment of the viewport.
- **/
-void
-gtk_viewport_set_hadjustment (GtkViewport   *viewport,
-			      GtkAdjustment *adjustment)
-{
-  g_return_if_fail (GTK_IS_VIEWPORT (viewport));
-  if (adjustment)
-    g_return_if_fail (GTK_IS_ADJUSTMENT (adjustment));
-
-  viewport_set_adjustment (viewport, GTK_ORIENTATION_HORIZONTAL, adjustment);
-
-  g_object_notify (G_OBJECT (viewport), "hadjustment");
-}
-
-/**
- * gtk_viewport_set_vadjustment:
- * @viewport: a #GtkViewport.
- * @adjustment: a #GtkAdjustment.
- * 
- * Sets the vertical adjustment of the viewport.
- **/
-void
-gtk_viewport_set_vadjustment (GtkViewport   *viewport,
-			      GtkAdjustment *adjustment)
-{
-  g_return_if_fail (GTK_IS_VIEWPORT (viewport));
-  if (adjustment)
-    g_return_if_fail (GTK_IS_ADJUSTMENT (adjustment));
-
-  viewport_set_adjustment (viewport, GTK_ORIENTATION_VERTICAL, adjustment);
-
-  g_object_notify (G_OBJECT (viewport), "vadjustment");
-}
-
-static void
-gtk_viewport_set_scroll_adjustments (GtkViewport      *viewport,
-				     GtkAdjustment    *hadjustment,
-				     GtkAdjustment    *vadjustment)
-{
-  gtk_viewport_set_hadjustment (viewport, hadjustment);
-  gtk_viewport_set_vadjustment (viewport, vadjustment);
-}
-
 /** 
  * gtk_viewport_set_shadow_type:
  * @viewport: a #GtkViewport.
@@ -552,8 +397,8 @@
 {
   GtkViewport *viewport = GTK_VIEWPORT (widget);
   GtkBin *bin = GTK_BIN (widget);
-  GtkAdjustment *hadjustment = gtk_viewport_get_hadjustment (viewport);
-  GtkAdjustment *vadjustment = gtk_viewport_get_vadjustment (viewport);
+  GtkAdjustment *hadjustment = viewport->hadjustment;
+  GtkAdjustment *vadjustment = viewport->vadjustment;
   gint border_width = GTK_CONTAINER (widget)->border_width;
   
   GtkAllocation view_allocation;
@@ -738,8 +583,8 @@
   GtkBin *bin = GTK_BIN (widget);
   gint border_width = GTK_CONTAINER (widget)->border_width;
   gboolean hadjustment_value_changed, vadjustment_value_changed;
-  GtkAdjustment *hadjustment = gtk_viewport_get_hadjustment (viewport);
-  GtkAdjustment *vadjustment = gtk_viewport_get_vadjustment (viewport);
+  GtkAdjustment *hadjustment = viewport->hadjustment;
+  GtkAdjustment *vadjustment = viewport->vadjustment;
   GtkAllocation child_allocation;
 
   /* If our size changed, and we have a shadow, queue a redraw on widget->window to
@@ -808,8 +653,8 @@
   if (bin->child && GTK_WIDGET_VISIBLE (bin->child)  &&
       GTK_WIDGET_REALIZED (viewport))
     {
-      GtkAdjustment *hadjustment = gtk_viewport_get_hadjustment (viewport);
-      GtkAdjustment *vadjustment = gtk_viewport_get_vadjustment (viewport);
+      GtkAdjustment *hadjustment = viewport->hadjustment;
+      GtkAdjustment *vadjustment = viewport->vadjustment;
       gint old_x, old_y;
       gint new_x, new_y;
 

=== modified file 'gtk/gtkviewport.h'
--- gtk/gtkviewport.h	2007-08-14 14:01:36 +0000
+++ gtk/gtkviewport.h	2007-08-20 20:03:55 +0000
@@ -61,22 +61,11 @@
 struct _GtkViewportClass
 {
   GtkBinClass parent_class;
-
-  void	(*set_scroll_adjustments)	(GtkViewport	*viewport,
-					 GtkAdjustment	*hadjustment,
-					 GtkAdjustment	*vadjustment);
 };
 
 
 GType          gtk_viewport_get_type        (void) G_GNUC_CONST;
-GtkWidget*     gtk_viewport_new             (GtkAdjustment *hadjustment,
-					     GtkAdjustment *vadjustment);
-GtkAdjustment* gtk_viewport_get_hadjustment (GtkViewport   *viewport);
-GtkAdjustment* gtk_viewport_get_vadjustment (GtkViewport   *viewport);
-void           gtk_viewport_set_hadjustment (GtkViewport   *viewport,
-					     GtkAdjustment *adjustment);
-void           gtk_viewport_set_vadjustment (GtkViewport   *viewport,
-					     GtkAdjustment *adjustment);
+GtkWidget*     gtk_viewport_new             (void);
 void           gtk_viewport_set_shadow_type (GtkViewport   *viewport,
 					     GtkShadowType  type);
 GtkShadowType  gtk_viewport_get_shadow_type (GtkViewport   *viewport);

=== modified file 'gtk/gtkwidget.c'
--- gtk/gtkwidget.c	2007-08-14 14:01:36 +0000
+++ gtk/gtkwidget.c	2007-08-20 20:03:55 +0000
@@ -53,6 +53,7 @@
 #include "gtkinvisible.h"
 #include "gtkbuildable.h"
 #include "gtkbuilderprivate.h"
+#include "gtkscrollable.h"
 #include "gtkalias.h"
 
 #define WIDGET_CLASS(w)	 GTK_WIDGET_GET_CLASS (w)
@@ -405,7 +406,6 @@
   object_class->destroy = gtk_widget_real_destroy;
   
   klass->activate_signal = 0;
-  klass->set_scroll_adjustments_signal = 0;
   klass->dispatch_child_properties_changed = gtk_widget_dispatch_child_properties_changed;
   klass->show = gtk_widget_real_show;
   klass->show_all = gtk_widget_show;
@@ -4710,43 +4710,6 @@
     return FALSE;
 }
 
-/**
- * gtk_widget_set_scroll_adjustments:
- * @widget: a #GtkWidget
- * @hadjustment: an adjustment for horizontal scrolling, or %NULL
- * @vadjustment: an adjustment for vertical scrolling, or %NULL
- *
- * For widgets that support scrolling, sets the scroll adjustments and
- * returns %TRUE.  For widgets that don't support scrolling, does
- * nothing and returns %FALSE. Widgets that don't support scrolling
- * can be scrolled by placing them in a #GtkViewport, which does
- * support scrolling.
- * 
- * Return value: %TRUE if the widget supports scrolling
- **/
-gboolean
-gtk_widget_set_scroll_adjustments (GtkWidget     *widget,
-				   GtkAdjustment *hadjustment,
-				   GtkAdjustment *vadjustment)
-{
-  g_return_val_if_fail (GTK_IS_WIDGET (widget), FALSE);
-  if (hadjustment)
-    g_return_val_if_fail (GTK_IS_ADJUSTMENT (hadjustment), FALSE);
-  if (vadjustment)
-    g_return_val_if_fail (GTK_IS_ADJUSTMENT (vadjustment), FALSE);
-
-  if (WIDGET_CLASS (widget)->set_scroll_adjustments_signal)
-    {
-      /* FIXME: we should eventually check the signals signature here */
-      g_signal_emit (widget,
-		     WIDGET_CLASS (widget)->set_scroll_adjustments_signal, 0,
-		     hadjustment, vadjustment);
-      return TRUE;
-    }
-  else
-    return FALSE;
-}
-
 static void
 gtk_widget_reparent_subwindows (GtkWidget *widget,
 				GdkWindow *new_window)

=== modified file 'gtk/gtkwidget.h'
--- gtk/gtkwidget.h	2007-08-14 14:01:36 +0000
+++ gtk/gtkwidget.h	2007-08-20 20:03:55 +0000
@@ -239,8 +239,6 @@
   
   guint activate_signal;
 
-  guint set_scroll_adjustments_signal;
-
   /*< private >*/
   
   /* seldomly overidden */
@@ -523,9 +521,6 @@
 					   GdkEvent            *event);
 
 gboolean   gtk_widget_activate		     (GtkWidget	       *widget);
-gboolean   gtk_widget_set_scroll_adjustments (GtkWidget        *widget,
-					      GtkAdjustment    *hadjustment,
-					      GtkAdjustment    *vadjustment);
      
 void	   gtk_widget_reparent		  (GtkWidget	       *widget,
 					   GtkWidget	       *new_parent);

=== modified file 'tests/print-editor.c'
--- tests/print-editor.c	2007-08-14 14:01:36 +0000
+++ tests/print-editor.c	2007-08-20 20:03:55 +0000
@@ -878,7 +878,7 @@
 		    0,                         0);
 
   /* Create document  */
-  sw = gtk_scrolled_window_new (NULL, NULL);
+  sw = gtk_scrolled_window_new ();
 
   gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw),
 				  GTK_POLICY_AUTOMATIC,

=== modified file 'tests/prop-editor.c'
--- tests/prop-editor.c	2007-08-14 14:01:36 +0000
+++ tests/prop-editor.c	2007-08-20 20:03:55 +0000
@@ -977,7 +977,7 @@
   vbox = gtk_vbox_new (FALSE, 0);
   gtk_box_pack_start (GTK_BOX (vbox), table, FALSE, FALSE, 0);
 
-  sw = gtk_scrolled_window_new (NULL, NULL);
+  sw = gtk_scrolled_window_new ();
   gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw),
                                   GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
   
@@ -1060,7 +1060,7 @@
   vbox = gtk_vbox_new (FALSE, 0);
   gtk_box_pack_start (GTK_BOX (vbox), table, FALSE, FALSE, 0);
 
-  sw = gtk_scrolled_window_new (NULL, NULL);
+  sw = gtk_scrolled_window_new ();
   gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw),
                                   GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
   
@@ -1123,7 +1123,7 @@
   vbox = gtk_vbox_new (FALSE, 0);
   gtk_box_pack_start (GTK_BOX (vbox), table, FALSE, FALSE, 0);
 
-  sw = gtk_scrolled_window_new (NULL, NULL);
+  sw = gtk_scrolled_window_new ();
   gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw),
                                   GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
   
@@ -1179,7 +1179,7 @@
   vbox = gtk_vbox_new (FALSE, 0);
   gtk_box_pack_start (GTK_BOX (vbox), table, FALSE, FALSE, 0);
 
-  sw = gtk_scrolled_window_new (NULL, NULL);
+  sw = gtk_scrolled_window_new ();
   gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw),
                                   GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
   

=== modified file 'tests/testaccel.c'
--- tests/testaccel.c	2007-08-14 14:01:36 +0000
+++ tests/testaccel.c	2007-08-20 20:03:55 +0000
@@ -56,7 +56,7 @@
 	window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
 
 
-	sw = gtk_scrolled_window_new (NULL, NULL);
+	sw = gtk_scrolled_window_new ();
 	gtk_container_add (GTK_CONTAINER (window), sw);
 
 	store = gtk_list_store_new (2, G_TYPE_INT, G_TYPE_UINT);

=== modified file 'tests/testcellrenderertext.c'
--- tests/testcellrenderertext.c	2007-08-14 14:01:36 +0000
+++ tests/testcellrenderertext.c	2007-08-20 20:03:55 +0000
@@ -175,7 +175,7 @@
   GtkCellRenderer *renderer;
   GdkPixbuf *pixbuf;
 
-  sw = gtk_scrolled_window_new (NULL, NULL);
+  sw = gtk_scrolled_window_new ();
   gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (sw), GTK_SHADOW_IN);
   gtk_widget_set_direction (sw, rtl ? GTK_TEXT_DIR_RTL : GTK_TEXT_DIR_LTR);
 

=== modified file 'tests/testcombochange.c'
--- tests/testcombochange.c	2007-08-14 14:01:36 +0000
+++ tests/testcombochange.c	2007-08-20 20:03:55 +0000
@@ -286,7 +286,7 @@
   list_combo = create_combo ("list-combo", TRUE);
   gtk_container_add (GTK_CONTAINER (alignment), list_combo);
 
-  scrolled_window = gtk_scrolled_window_new (NULL, NULL);
+  scrolled_window = gtk_scrolled_window_new ();
   gtk_box_pack_start (GTK_BOX (hbox), scrolled_window, TRUE, TRUE, 0);
   gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window),
 				  GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);

=== modified file 'tests/testgrouping.c'
--- tests/testgrouping.c	2007-08-14 14:01:36 +0000
+++ tests/testgrouping.c	2007-08-20 20:03:55 +0000
@@ -114,7 +114,7 @@
 		    G_CALLBACK (gtk_main_quit), NULL);
   gtk_window_set_default_size (GTK_WINDOW (window), 320, 480);
 
-  sw = gtk_scrolled_window_new (NULL, NULL);
+  sw = gtk_scrolled_window_new ();
   gtk_container_add (GTK_CONTAINER (window), sw);
 
   tv = gtk_tree_view_new_with_model (model);

=== modified file 'tests/testgtk.c'
--- tests/testgtk.c	2007-08-14 14:01:36 +0000
+++ tests/testgtk.c	2007-08-20 20:03:55 +0000
@@ -2009,7 +2009,7 @@
   gtk_widget_show(box2);
 
   /* create scrolled window */
-  scrolled_win = gtk_scrolled_window_new (NULL, NULL);
+  scrolled_win = gtk_scrolled_window_new ();
   gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_win),
 				  GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
   gtk_box_pack_start (GTK_BOX (box2), scrolled_win, TRUE, TRUE, 0);
@@ -2819,7 +2819,7 @@
       
       gtk_container_add (GTK_CONTAINER (window), hbox);
       
-      sw = gtk_scrolled_window_new (NULL, NULL);
+      sw = gtk_scrolled_window_new ();
       gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw),
                                       GTK_POLICY_AUTOMATIC,
                                       GTK_POLICY_AUTOMATIC);
@@ -2851,7 +2851,7 @@
 
       gid->snap = snap;
 
-      sw = gtk_scrolled_window_new (NULL, NULL);
+      sw = gtk_scrolled_window_new ();
       gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw),
                                       GTK_POLICY_AUTOMATIC,
                                       GTK_POLICY_AUTOMATIC);
@@ -5111,7 +5111,7 @@
       gtk_container_set_border_width (GTK_CONTAINER (window), 0);
 
 
-      scrolled_window = gtk_scrolled_window_new (NULL, NULL);
+      scrolled_window = gtk_scrolled_window_new ();
       gtk_container_set_border_width (GTK_CONTAINER (scrolled_window), 10);
       gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window),
 				      GTK_POLICY_AUTOMATIC,
@@ -6410,7 +6410,7 @@
       vbox = gtk_vbox_new (FALSE, 0);
       gtk_container_add (GTK_CONTAINER (window), vbox);
 
-      scrolled_win = gtk_scrolled_window_new (NULL, NULL);
+      scrolled_win = gtk_scrolled_window_new ();
       gtk_container_set_border_width (GTK_CONTAINER (scrolled_win), 5);
       gtk_widget_set_size_request (scrolled_win, -1, 300);
       gtk_box_pack_start (GTK_BOX (vbox), scrolled_win, TRUE, TRUE, 0);
@@ -6906,7 +6906,7 @@
       vbox = gtk_vbox_new (FALSE, 0);
       gtk_container_add (GTK_CONTAINER (window), vbox);
 
-      scrolled_win = gtk_scrolled_window_new (NULL, NULL);
+      scrolled_win = gtk_scrolled_window_new ();
       gtk_container_set_border_width (GTK_CONTAINER (scrolled_win), 5);
       gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_win),
 				      GTK_POLICY_AUTOMATIC, 
@@ -7403,7 +7403,7 @@
       export_ctree = GTK_CTREE (gtk_ctree_new_with_titles (2, 0, title));
       gtk_ctree_set_line_style (export_ctree, GTK_CTREE_LINES_DOTTED);
 
-      scrolled_win = gtk_scrolled_window_new (NULL, NULL);
+      scrolled_win = gtk_scrolled_window_new ();
       gtk_container_add (GTK_CONTAINER (scrolled_win),
 			 GTK_WIDGET (export_ctree));
       gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_win),
@@ -7788,7 +7788,7 @@
       button = gtk_button_new_with_label ("Rebuild Tree");
       gtk_box_pack_start (GTK_BOX (hbox), button, TRUE, TRUE, 0);
 
-      scrolled_win = gtk_scrolled_window_new (NULL, NULL);
+      scrolled_win = gtk_scrolled_window_new ();
       gtk_container_set_border_width (GTK_CONTAINER (scrolled_win), 5);
       gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_win),
 				      GTK_POLICY_AUTOMATIC,
@@ -9143,7 +9143,7 @@
       gtk_widget_show (box2);
 
 
-      scrolled_window = gtk_scrolled_window_new (NULL, NULL);
+      scrolled_window = gtk_scrolled_window_new ();
       gtk_box_pack_start (GTK_BOX (box2), scrolled_window, TRUE, TRUE, 0);
       gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window),
 				      GTK_POLICY_NEVER,
@@ -12481,7 +12481,7 @@
       label = gtk_label_new ("Gets available targets for current selection");
       gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0);
 
-      scrolled_win = gtk_scrolled_window_new (NULL, NULL);
+      scrolled_win = gtk_scrolled_window_new ();
       gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_win),
 				      GTK_POLICY_AUTOMATIC, 
 				      GTK_POLICY_AUTOMATIC);
@@ -13230,7 +13230,7 @@
       gtk_window_set_title (GTK_WINDOW (window), "Layout");
       gtk_widget_set_size_request (window, 200, 200);
 
-      scrolledwindow = gtk_scrolled_window_new (NULL, NULL);
+      scrolledwindow = gtk_scrolled_window_new ();
       gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolledwindow),
 					   GTK_SHADOW_IN);
       gtk_scrolled_window_set_placement (GTK_SCROLLED_WINDOW (scrolledwindow),
@@ -13238,7 +13238,7 @@
 
       gtk_container_add (GTK_CONTAINER (window), scrolledwindow);
       
-      layout = gtk_layout_new (NULL, NULL);
+      layout = gtk_layout_new ();
       gtk_container_add (GTK_CONTAINER (scrolledwindow), layout);
 
       /* We set step sizes here since GtkLayout does not set
@@ -13561,7 +13561,7 @@
   gtk_box_pack_start (GTK_BOX (box1), label, FALSE, FALSE, 0);
   gtk_widget_set_name (label, "testgtk-version-label");
 
-  scrolled_window = gtk_scrolled_window_new (NULL, NULL);
+  scrolled_window = gtk_scrolled_window_new ();
   gtk_container_set_border_width (GTK_CONTAINER (scrolled_window), 10);
   gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window),
      		                  GTK_POLICY_NEVER, 

=== modified file 'tests/testiconview.c'
--- tests/testiconview.c	2007-08-14 14:01:36 +0000
+++ tests/testiconview.c	2007-08-20 20:03:55 +0000
@@ -544,14 +544,14 @@
   prop_editor = create_prop_editor (G_OBJECT (icon_list), 0);
   gtk_widget_show_all (prop_editor);
   
-  scrolled_window = gtk_scrolled_window_new (NULL, NULL);
+  scrolled_window = gtk_scrolled_window_new ();
   gtk_container_add (GTK_CONTAINER (scrolled_window), icon_list);
   gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window),
   				  GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
 
   gtk_paned_add1 (GTK_PANED (paned), scrolled_window);
 
-  scrolled_window = gtk_scrolled_window_new (NULL, NULL);
+  scrolled_window = gtk_scrolled_window_new ();
   gtk_container_add (GTK_CONTAINER (scrolled_window), tv);
   gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window),
   				  GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
@@ -600,7 +600,7 @@
 
   icon_list = gtk_icon_view_new ();
   
-  scrolled_window = gtk_scrolled_window_new (NULL, NULL);
+  scrolled_window = gtk_scrolled_window_new ();
   gtk_container_add (GTK_CONTAINER (scrolled_window), icon_list);
   gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window),
 				  GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);

=== modified file 'tests/testmerge.c'
--- tests/testmerge.c	2007-08-14 14:01:36 +0000
+++ tests/testmerge.c	2007-08-20 20:03:55 +0000
@@ -454,7 +454,7 @@
 					      cell,
 					      set_visible_func, NULL, NULL);
 
-  sw = gtk_scrolled_window_new (NULL, NULL);
+  sw = gtk_scrolled_window_new ();
   gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw),
 				  GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
   gtk_container_add (GTK_CONTAINER (sw), tree_view);

=== modified file 'tests/testrichtext.c'
--- tests/testrichtext.c	2007-08-14 14:01:36 +0000
+++ tests/testrichtext.c	2007-08-20 20:03:55 +0000
@@ -150,7 +150,7 @@
   window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
   gtk_widget_set_size_request (window, 400, 300);
 
-  sw = gtk_scrolled_window_new (NULL, NULL);
+  sw = gtk_scrolled_window_new ();
   gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (sw),
                                        GTK_SHADOW_IN);
   gtk_container_set_border_width (GTK_CONTAINER (sw), 12);

=== modified file 'tests/testtext.c'
--- tests/testtext.c	2007-08-14 14:01:36 +0000
+++ tests/testtext.c	2007-08-20 20:03:55 +0000
@@ -1530,7 +1530,7 @@
                         store);
     }
 
-  sw = gtk_scrolled_window_new (NULL, NULL);
+  sw = gtk_scrolled_window_new ();
   gtk_widget_set_size_request (sw, 300, 100);
   gtk_container_add (GTK_CONTAINER (GTK_DIALOG (dialog)->vbox), sw);
 
@@ -2937,7 +2937,7 @@
 		      gtk_item_factory_get_widget (view->item_factory, "<main>"),
 		      FALSE, FALSE, 0);
   
-  sw = gtk_scrolled_window_new (NULL, NULL);
+  sw = gtk_scrolled_window_new ();
   gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw),
                                  GTK_POLICY_AUTOMATIC,
                                  GTK_POLICY_AUTOMATIC);

=== modified file 'tests/testtoolbar.c'
--- tests/testtoolbar.c	2007-08-14 14:01:36 +0000
+++ tests/testtoolbar.c	2007-08-20 20:03:55 +0000
@@ -594,7 +594,7 @@
   g_signal_connect (option_menu, "changed",
 		    G_CALLBACK (icon_size_history_changed), toolbar);
   
-  scrolled_window = gtk_scrolled_window_new (NULL, NULL);
+  scrolled_window = gtk_scrolled_window_new ();
   gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window),
 				  GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
   gtk_table_attach (GTK_TABLE (table), scrolled_window,

=== modified file 'tests/testtreecolumns.c'
--- tests/testtreecolumns.c	2007-08-14 14:01:36 +0000
+++ tests/testtreecolumns.c	2007-08-20 20:03:55 +0000
@@ -794,7 +794,7 @@
   g_signal_connect (window, "destroy", G_CALLBACK (gtk_main_quit), NULL); 
   gtk_window_set_default_size (GTK_WINDOW (window), 300, 300);
   gtk_window_set_title (GTK_WINDOW (window), "Top Window");
-  swindow = gtk_scrolled_window_new (NULL, NULL);
+  swindow = gtk_scrolled_window_new ();
   gtk_container_add (GTK_CONTAINER (window), swindow);
   gtk_container_add (GTK_CONTAINER (swindow), sample_tree_view_top);
   gtk_widget_show_all (window);
@@ -803,7 +803,7 @@
   g_signal_connect (window, "destroy", G_CALLBACK (gtk_main_quit), NULL); 
   gtk_window_set_default_size (GTK_WINDOW (window), 300, 300);
   gtk_window_set_title (GTK_WINDOW (window), "Bottom Window");
-  swindow = gtk_scrolled_window_new (NULL, NULL);
+  swindow = gtk_scrolled_window_new ();
   gtk_container_add (GTK_CONTAINER (window), swindow);
   gtk_container_add (GTK_CONTAINER (swindow), sample_tree_view_bottom);
   gtk_widget_show_all (window);
@@ -822,7 +822,7 @@
   /* Left Pane */
   cell = gtk_cell_renderer_text_new ();
 
-  swindow = gtk_scrolled_window_new (NULL, NULL);
+  swindow = gtk_scrolled_window_new ();
   gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (swindow), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
   left_tree_view = gtk_tree_view_new_with_model (left_tree_model);
   gtk_container_add (GTK_CONTAINER (swindow), left_tree_view);
@@ -881,7 +881,7 @@
   vbox2 = gtk_vbox_new (FALSE, 8);
   gtk_box_pack_start (GTK_BOX (hbox), vbox2, TRUE, TRUE, 0);
 
-  swindow = gtk_scrolled_window_new (NULL, NULL);
+  swindow = gtk_scrolled_window_new ();
   gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (swindow), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
   gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (top_right_tree_view), FALSE);
   cell = gtk_cell_renderer_text_new ();
@@ -896,7 +896,7 @@
   gtk_container_add (GTK_CONTAINER (swindow), top_right_tree_view);
   gtk_box_pack_start (GTK_BOX (vbox2), swindow, TRUE, TRUE, 0);
 
-  swindow = gtk_scrolled_window_new (NULL, NULL);
+  swindow = gtk_scrolled_window_new ();
   gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (swindow), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
   gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (bottom_right_tree_view), FALSE);
   cell = gtk_cell_renderer_text_new ();

=== modified file 'tests/testtreeedit.c'
--- tests/testtreeedit.c	2007-08-14 14:01:36 +0000
+++ tests/testtreeedit.c	2007-08-20 20:03:55 +0000
@@ -147,7 +147,7 @@
   gtk_window_set_title (GTK_WINDOW (window), "GtkTreeView editing sample");
   g_signal_connect (window, "destroy", gtk_main_quit, NULL);
 
-  scrolled_window = gtk_scrolled_window_new (NULL, NULL);
+  scrolled_window = gtk_scrolled_window_new ();
   gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolled_window), GTK_SHADOW_ETCHED_IN);
   gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
   gtk_container_add (GTK_CONTAINER (window), scrolled_window);

=== modified file 'tests/testtreeflow.c'
--- tests/testtreeflow.c	2007-08-14 14:01:36 +0000
+++ tests/testtreeflow.c	2007-08-20 20:03:55 +0000
@@ -139,7 +139,7 @@
   gtk_container_set_border_width (GTK_CONTAINER (vbox), 8);
   gtk_box_pack_start (GTK_BOX (vbox), gtk_label_new ("Incremental Reflow Test"), FALSE, FALSE, 0);
   gtk_container_add (GTK_CONTAINER (window), vbox);
-  scrolled_window = gtk_scrolled_window_new (NULL, NULL);
+  scrolled_window = gtk_scrolled_window_new ();
   gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window),
 				  GTK_POLICY_AUTOMATIC,
 				  GTK_POLICY_AUTOMATIC);

=== modified file 'tests/testtreefocus.c'
--- tests/testtreefocus.c	2007-08-14 14:01:36 +0000
+++ tests/testtreefocus.c	2007-08-20 20:03:55 +0000
@@ -358,7 +358,7 @@
   gtk_box_pack_start (GTK_BOX (vbox), gtk_label_new ("Jonathan's Holiday Card Planning Sheet"), FALSE, FALSE, 0);
   gtk_container_add (GTK_CONTAINER (window), vbox);
 
-  scrolled_window = gtk_scrolled_window_new (NULL, NULL);
+  scrolled_window = gtk_scrolled_window_new ();
   gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolled_window), GTK_SHADOW_ETCHED_IN);
   gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
   gtk_box_pack_start (GTK_BOX (vbox), scrolled_window, TRUE, TRUE, 0);
@@ -474,7 +474,7 @@
   gtk_box_pack_start (GTK_BOX (vbox), gtk_label_new ("The model revealed"), FALSE, FALSE, 0);
   gtk_container_add (GTK_CONTAINER (window), vbox);
 
-  scrolled_window = gtk_scrolled_window_new (NULL, NULL);
+  scrolled_window = gtk_scrolled_window_new ();
   gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolled_window), GTK_SHADOW_ETCHED_IN);
   gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
   gtk_box_pack_start (GTK_BOX (vbox), scrolled_window, TRUE, TRUE, 0);

=== modified file 'tests/testtreesort.c'
--- tests/testtreesort.c	2007-08-14 14:01:36 +0000
+++ tests/testtreesort.c	2007-08-20 20:03:55 +0000
@@ -136,7 +136,7 @@
   button = gtk_button_new_with_label ("Switch search method");
   gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, FALSE, 0);
 
-  scrolled_window = gtk_scrolled_window_new (NULL, NULL);
+  scrolled_window = gtk_scrolled_window_new ();
   gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolled_window), GTK_SHADOW_ETCHED_IN);
   gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
   gtk_box_pack_start (GTK_BOX (vbox), scrolled_window, TRUE, TRUE, 0);
@@ -262,7 +262,7 @@
 			  FALSE, FALSE, 0);
       gtk_container_add (GTK_CONTAINER (window2), vbox2);
       
-      scrolled_window2 = gtk_scrolled_window_new (NULL, NULL);
+      scrolled_window2 = gtk_scrolled_window_new ();
       gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolled_window2),
 					   GTK_SHADOW_ETCHED_IN);
       gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window2),
@@ -334,7 +334,7 @@
 			  FALSE, FALSE, 0);
       gtk_container_add (GTK_CONTAINER (window3), vbox3);
       
-      scrolled_window3 = gtk_scrolled_window_new (NULL, NULL);
+      scrolled_window3 = gtk_scrolled_window_new ();
       gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolled_window3),
 					   GTK_SHADOW_ETCHED_IN);
       gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window3),

=== modified file 'tests/testtreeview.c'
--- tests/testtreeview.c	2007-08-14 14:01:36 +0000
+++ tests/testtreeview.c	2007-08-20 20:03:55 +0000
@@ -831,7 +831,7 @@
                     G_CALLBACK (columns_selected),
                     tv);
   
-  sw = gtk_scrolled_window_new (NULL, NULL);
+  sw = gtk_scrolled_window_new ();
   gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw),
                                   GTK_POLICY_AUTOMATIC,
                                   GTK_POLICY_AUTOMATIC);

=== modified file 'tests/treestoretest.c'
--- tests/treestoretest.c	2007-08-14 14:01:36 +0000
+++ tests/treestoretest.c	2007-08-20 20:03:55 +0000
@@ -306,7 +306,7 @@
   vbox = gtk_vbox_new (FALSE, 8);
   gtk_container_set_border_width (GTK_CONTAINER (vbox), 8);
   gtk_window_set_default_size (GTK_WINDOW (window), 300, 350);
-  scrolled_window = gtk_scrolled_window_new (NULL, NULL);
+  scrolled_window = gtk_scrolled_window_new ();
   switch (view_type)
     {
     case 0:

