X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/46ea442ca27e8b77d617481175bc7010bd602eb8..b5ec0c78b521cfa0f276e4d5d830f35b4fa26e91:/src/gtk/nonownedwnd.cpp diff --git a/src/gtk/nonownedwnd.cpp b/src/gtk/nonownedwnd.cpp index 862ac8b32b..e558b52984 100644 --- a/src/gtk/nonownedwnd.cpp +++ b/src/gtk/nonownedwnd.cpp @@ -3,7 +3,7 @@ // Purpose: wxGTK implementation of wxNonOwnedWindow. // Author: Vadim Zeitlin // Created: 2011-10-12 -// RCS-ID: $Id: wxhead.cpp,v 1.11 2010-04-22 12:44:51 zeitlin Exp $ +// RCS-ID: $Id$ // Copyright: (c) 2011 Vadim Zeitlin // Licence: wxWindows licence /////////////////////////////////////////////////////////////////////////////// @@ -25,15 +25,16 @@ #ifndef WX_PRECOMP #include "wx/nonownedwnd.h" + #include "wx/dcclient.h" + #include "wx/dcmemory.h" #include "wx/region.h" #endif // WX_PRECOMP -#include "wx/gtk/private.h" - -#include - #include "wx/graphics.h" +#include +#include "wx/gtk/private/gtk2-compat.h" + // ---------------------------------------------------------------------------- // wxNonOwnedWindowShapeImpl: base class for region and path-based classes. // ---------------------------------------------------------------------------- @@ -94,7 +95,7 @@ public: private: virtual bool DoSetShape(GdkWindow* window) { - gdk_window_shape_combine_mask(window, NULL, 0, 0); + gdk_window_shape_combine_region(window, NULL, 0, 0); return true; } @@ -174,7 +175,11 @@ private: dc.SetBackground(*wxBLACK); dc.Clear(); +#ifdef __WXGTK3__ + wxGraphicsContext* context = dc.GetGraphicsContext(); +#else wxScopedPtr context(wxGraphicsContext::Create(dc)); +#endif context->SetBrush(*wxWHITE); context->FillPath(path); @@ -183,11 +188,16 @@ private: virtual bool DoSetShape(GdkWindow *window) { - GdkBitmap* bitmap = m_mask.GetBitmap(); - if ( !bitmap ) + if (!m_mask) return false; - gdk_window_shape_combine_mask(window, bitmap, 0, 0); +#ifdef __WXGTK3__ + cairo_region_t* region = gdk_cairo_region_create_from_surface(m_mask); + gdk_window_shape_combine_region(window, region, 0, 0); + cairo_region_destroy(region); +#else + gdk_window_shape_combine_mask(window, m_mask, 0, 0); +#endif return true; } @@ -198,7 +208,11 @@ private: event.Skip(); wxPaintDC dc(m_win); +#ifdef __WXGTK3__ + wxGraphicsContext* context = dc.GetGraphicsContext(); +#else wxScopedPtr context(wxGraphicsContext::Create(dc)); +#endif context->SetPen(wxPen(*wxLIGHT_GREY, 2)); context->StrokePath(m_path); }