// 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 <vadim@wxwidgets.org>
// Licence: wxWindows licence
///////////////////////////////////////////////////////////////////////////////
#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 <gdk/gdk.h>
-
#include "wx/graphics.h"
+#include <gtk/gtk.h>
+#include "wx/gtk/private/gtk2-compat.h"
+
// ----------------------------------------------------------------------------
// wxNonOwnedWindowShapeImpl: base class for region and path-based classes.
// ----------------------------------------------------------------------------
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;
}
dc.SetBackground(*wxBLACK);
dc.Clear();
+#ifdef __WXGTK3__
+ wxGraphicsContext* context = dc.GetGraphicsContext();
+#else
wxScopedPtr<wxGraphicsContext> context(wxGraphicsContext::Create(dc));
+#endif
context->SetBrush(*wxWHITE);
context->FillPath(path);
virtual bool DoSetShape(GdkWindow *window)
{
- GdkBitmap* bitmap = m_mask.GetBitmap();
- if ( !bitmap )
+ if (m_mask.GetBitmap() == NULL)
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.GetBitmap());
+ gdk_window_shape_combine_region(window, region, 0, 0);
+ cairo_region_destroy(region);
+#else
+ gdk_window_shape_combine_mask(window, m_mask.GetBitmap(), 0, 0);
+#endif
return true;
}
event.Skip();
wxPaintDC dc(m_win);
+#ifdef __WXGTK3__
+ wxGraphicsContext* context = dc.GetGraphicsContext();
+#else
wxScopedPtr<wxGraphicsContext> context(wxGraphicsContext::Create(dc));
+#endif
context->SetPen(wxPen(*wxLIGHT_GREY, 2));
context->StrokePath(m_path);
}