+void
+wxRendererGTK::DrawItemSelectionRect(wxWindow *win,
+                                     wxDC& dc,
+                                     const wxRect& rect,
+                                     int flags )
+{
+    GdkWindow* gdk_window = dc.GetGDKWindow();
+    wxASSERT_MSG( gdk_window,
+                  wxT("cannot use wxRendererNative on wxDC of this type") );
+
+    int x_diff = 0;
+    if (win->GetLayoutDirection() == wxLayout_RightToLeft)
+        x_diff = rect.width;
+
+    GtkStateType state;
+    if (flags & wxCONTROL_SELECTED)
+    {
+        // the wxCONTROL_FOCUSED state is deduced
+        // directly from the m_wxwindow by GTK+
+        state = GTK_STATE_SELECTED;
+
+        gtk_paint_flat_box( win->m_widget->style,
+                        gdk_window,
+                        state,
+                        GTK_SHADOW_NONE,
+                        NULL,
+                        win->m_wxwindow,
+                        "cell_even",
+                        dc.LogicalToDeviceX(rect.x) - x_diff,
+                        dc.LogicalToDeviceY(rect.y),
+                        rect.width,
+                        rect.height );
+    }
+    else // !wxCONTROL_SELECTED
+    {
+        state = GTK_STATE_NORMAL;
+    }
+
+    if (flags & wxCONTROL_CURRENT)
+    {
+        gtk_paint_focus( win->m_widget->style,
+                         gdk_window,
+                         state,
+                         NULL,
+                         win->m_wxwindow,
+                         "treeview",
+                         dc.LogicalToDeviceX(rect.x),
+                         dc.LogicalToDeviceY(rect.y),
+                         rect.width,
+                         rect.height );
+    }
+}