X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/05d9753817cac280b05d14b0aeb26018700d1764..056b067f47664969b099e2e07ab9837245827b57:/src/gtk/renderer.cpp diff --git a/src/gtk/renderer.cpp b/src/gtk/renderer.cpp index 77ce8a0a4f..496908cc70 100644 --- a/src/gtk/renderer.cpp +++ b/src/gtk/renderer.cpp @@ -43,7 +43,7 @@ class WXDLLEXPORT wxRendererGTK : public wxDelegateRendererNative { public: // draw the header control button (used by wxListCtrl) - virtual void DrawHeaderButton(wxWindow *win, + virtual int DrawHeaderButton(wxWindow *win, wxDC& dc, const wxRect& rect, int flags = 0, @@ -181,7 +181,7 @@ wxRendererGTK::GetTreeWidget() // list/tree controls drawing // ---------------------------------------------------------------------------- -void +int wxRendererGTK::DrawHeaderButton(wxWindow *win, wxDC& dc, const wxRect& rect, @@ -199,7 +199,7 @@ wxRendererGTK::DrawHeaderButton(wxWindow *win, int x_diff = 0; if (win->GetLayoutDirection() == wxLayout_RightToLeft) x_diff = rect.width; - + gtk_paint_box ( button->style, @@ -212,7 +212,7 @@ wxRendererGTK::DrawHeaderButton(wxWindow *win, dc.LogicalToDeviceX(rect.x) - x_diff, rect.y, rect.width, rect.height ); - DrawHeaderButtonContents(win, dc, rect, flags, sortArrow, params); + return DrawHeaderButtonContents(win, dc, rect, flags, sortArrow, params); } // draw a ">" or "v" button @@ -334,7 +334,7 @@ wxRendererGTK::DrawSplitterSash(wxWindow *win, rect.height = full_size; rect.width = w; } - + int x_diff = 0; if (win->GetLayoutDirection() == wxLayout_RightToLeft) x_diff = rect.width; @@ -510,6 +510,10 @@ 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) { @@ -524,17 +528,21 @@ wxRendererGTK::DrawItemSelectionRect(wxWindow *win, NULL, win->m_wxwindow, "cell_even", - dc.LogicalToDeviceX(rect.x), + 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, + gtk_paint_focus( win->m_widget->style, gdk_window, - GTK_STATE_SELECTED, + state, NULL, win->m_wxwindow, "treeview",