=== modified file 'gtk/gtktreeprivate.h'
--- gtk/gtktreeprivate.h	2010-03-19 08:48:31 +0000
+++ gtk/gtktreeprivate.h	2010-03-19 09:03:35 +0000
@@ -263,6 +263,7 @@
 
   guint fixed_height_mode : 1;
   guint fixed_height_check : 1;
+  guint hacked_almost_fixed_height_mode : 1;
 
   guint reorderable : 1;
   guint header_has_focus : 1;

=== modified file 'gtk/gtktreeview.c'
--- gtk/gtktreeview.c	2010-03-19 08:48:31 +0000
+++ gtk/gtktreeview.c	2010-03-19 09:00:54 +0000
@@ -137,6 +137,7 @@
   PROP_ENABLE_SEARCH,
   PROP_SEARCH_COLUMN,
   PROP_FIXED_HEIGHT_MODE,
+  PROP_HACKED_ALMOST_FIXED_HEIGHT_MODE,
   PROP_HOVER_SELECTION,
   PROP_HOVER_EXPAND,
   PROP_SHOW_EXPANDERS,
@@ -658,6 +659,15 @@
                                                            P_("Speeds up GtkTreeView by assuming that all rows have the same height"),
                                                            FALSE,
                                                            GTK_PARAM_READWRITE));
+
+    /* test extension to fix bugzilla bug #607447 */
+    g_object_class_install_property (o_class,
+                                     PROP_HACKED_ALMOST_FIXED_HEIGHT_MODE,
+                                     g_param_spec_boolean ("hacked-almost-fixed-height-mode",
+                                                           "test extension",
+							   "test extension",
+                                                           FALSE,
+                                                           GTK_PARAM_READWRITE));
     
     /**
      * GtkTreeView:hover-selection:
@@ -1350,6 +1360,7 @@
   tree_view->priv->fixed_height = -1;
   tree_view->priv->fixed_height_mode = FALSE;
   tree_view->priv->fixed_height_check = 0;
+  tree_view->priv->hacked_almost_fixed_height_mode = FALSE;
   gtk_tree_view_set_adjustments (tree_view, NULL, NULL);
   tree_view->priv->selection = _gtk_tree_selection_new_with_tree_view (tree_view);
   tree_view->priv->enable_search = TRUE;
@@ -1432,6 +1443,9 @@
     case PROP_FIXED_HEIGHT_MODE:
       gtk_tree_view_set_fixed_height_mode (tree_view, g_value_get_boolean (value));
       break;
+    case PROP_HACKED_ALMOST_FIXED_HEIGHT_MODE:
+      tree_view->priv->hacked_almost_fixed_height_mode = g_value_get_boolean (value);
+      break;
     case PROP_HOVER_SELECTION:
       tree_view->priv->hover_selection = g_value_get_boolean (value);
       break;
@@ -8297,7 +8311,15 @@
   if (tree == NULL)
     goto done;
 
-  if (tree_view->priv->fixed_height_mode
+  if (tree_view->priv->hacked_almost_fixed_height_mode
+      && tree_view->priv->fixed_height >= 0)
+    {
+      _gtk_rbtree_node_mark_invalid (tree, node);
+      validate_visible_area (tree_view);
+      if (gtk_widget_get_realized (GTK_WIDGET (tree_view)))
+	gtk_tree_view_node_queue_redraw (tree_view, tree, node);
+    }
+  else if (tree_view->priv->fixed_height_mode
       && tree_view->priv->fixed_height >= 0)
     {
       _gtk_rbtree_node_set_height (tree, node, tree_view->priv->fixed_height);
