From 42f0d1c02042a0935fef4520bdcdadfb70e30fd7 Mon Sep 17 00:00:00 2001 From: Paul Cornett Date: Mon, 24 Feb 2014 01:00:24 +0000 Subject: [PATCH] native GTK3 implementation for DrawSash() git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@75996 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/aui/dockart.cpp | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/src/aui/dockart.cpp b/src/aui/dockart.cpp index 8709c54e4f..6d4f637fdb 100644 --- a/src/aui/dockart.cpp +++ b/src/aui/dockart.cpp @@ -51,6 +51,7 @@ #endif #ifdef __WXGTK3__ #include "wx/graphics.h" + #include "wx/gtk/private.h" #endif #endif @@ -421,20 +422,27 @@ void wxAuiDefaultDockArt::DrawSash(wxDC& dc, wxWindow *window, int orientation, if (!window->m_wxwindow) return; if (!gtk_widget_is_drawable(window->m_wxwindow)) return; +#ifdef __WXGTK3__ + cairo_t* cr = static_cast(dc.GetGraphicsContext()->GetNativeContext()); + // invert orientation for widget (horizontal GtkPaned has a vertical splitter) + wxOrientation orient = orientation == wxVERTICAL ? wxHORIZONTAL : wxVERTICAL; + GtkWidget* widget = wxGTKPrivate::GetSplitterWidget(orient); + GtkStyleContext* sc = gtk_widget_get_style_context(widget); + gtk_style_context_save(sc); + + gtk_style_context_add_class(sc, GTK_STYLE_CLASS_PANE_SEPARATOR); + gtk_render_handle(sc, cr, rect.x, rect.y, rect.width, rect.height); + + gtk_style_context_restore(sc); +#else gtk_paint_handle ( gtk_widget_get_style(window->m_wxwindow), -#ifdef __WXGTK3__ - static_cast(dc.GetGraphicsContext()->GetNativeContext()), -#else window->GTKGetDrawingWindow(), -#endif // flags & wxCONTROL_CURRENT ? GTK_STATE_PRELIGHT : GTK_STATE_NORMAL, GTK_STATE_NORMAL, GTK_SHADOW_NONE, -#ifndef __WXGTK3__ NULL /* no clipping */, -#endif window->m_wxwindow, "paned", rect.x, @@ -443,6 +451,7 @@ void wxAuiDefaultDockArt::DrawSash(wxDC& dc, wxWindow *window, int orientation, rect.height, (orientation == wxVERTICAL) ? GTK_ORIENTATION_VERTICAL : GTK_ORIENTATION_HORIZONTAL ); +#endif // !__WXGTK3__ #else wxUnusedVar(window);