X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/2e992e06a71d90f1df597441af36f69ef390089a..24e9f36bccb720dc7b8abd6187d9427fecbc75c9:/src/gtk/renderer.cpp diff --git a/src/gtk/renderer.cpp b/src/gtk/renderer.cpp index 2802f9274a..e968ace5e1 100644 --- a/src/gtk/renderer.cpp +++ b/src/gtk/renderer.cpp @@ -510,22 +510,25 @@ wxRendererGTK::DrawItemSelectionRect(wxWindow *win, 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) { - if (flags & wxCONTROL_FOCUSED) - state = GTK_STATE_SELECTED; - else - state = GTK_STATE_INSENSITIVE; + // the wxCONTROL_FOCUSED state is deduced + // directly from the m_wxwindow by GTK+ + state = GTK_STATE_SELECTED; - gtk_paint_flat_box( win->m_wxwindow->style, + gtk_paint_flat_box( win->m_widget->style, gdk_window, state, GTK_SHADOW_NONE, NULL, win->m_wxwindow, - "treeview", - dc.LogicalToDeviceX(rect.x), + "cell_even", + dc.LogicalToDeviceX(rect.x) - x_diff, dc.LogicalToDeviceY(rect.y), rect.width, rect.height ); @@ -533,8 +536,15 @@ wxRendererGTK::DrawItemSelectionRect(wxWindow *win, if (flags & wxCONTROL_CURRENT) { - dc.SetPen( *wxBLACK_PEN ); - dc.SetBrush( *wxTRANSPARENT_BRUSH ); - dc.DrawRectangle( rect ); + gtk_paint_focus( win->m_widget->style, + gdk_window, + GTK_STATE_SELECTED, + NULL, + win->m_wxwindow, + "treeview", + dc.LogicalToDeviceX(rect.x), + dc.LogicalToDeviceY(rect.y), + rect.width, + rect.height ); } }