diff --git a/src/gtk/toplevel.cpp b/src/gtk/toplevel.cpp index cd6f9e72e1..71ee5e8558 100644 --- a/src/gtk/toplevel.cpp +++ b/src/gtk/toplevel.cpp @@ -1519,17 +1519,26 @@ void wxTopLevelWindowGTK::SetWindowStyleFlag( long style ) bool wxTopLevelWindowGTK::SetTransparent(wxByte alpha) { - GdkWindow* window = NULL; - if (m_widget) - window = gtk_widget_get_window(m_widget); + if (m_widget == NULL) + return false; +#if GTK_CHECK_VERSION(2,12,0) +#ifndef __WXGTK3__ + if (gtk_check_version(2,12,0) == NULL) +#endif + { + gtk_window_set_opacity(GTK_WINDOW(m_widget), alpha / 255.0); + return true; + } +#endif // GTK_CHECK_VERSION(2,12,0) +#ifndef __WXGTK3__ +#ifdef GDK_WINDOWING_X11 + GdkWindow* window = gtk_widget_get_window(m_widget); if (window == NULL) return false; -#ifdef GDK_WINDOWING_X11 Display* dpy = GDK_WINDOW_XDISPLAY(window); Window win = GDK_WINDOW_XID(window); - // Using pure Xlib to not have a GTK version check mess due to gtk2.0 not having GdkDisplay if (alpha == 0xff) XDeleteProperty(dpy, win, XInternAtom(dpy, "_NET_WM_WINDOW_OPACITY", False)); else @@ -1544,6 +1553,7 @@ bool wxTopLevelWindowGTK::SetTransparent(wxByte alpha) #else // !GDK_WINDOWING_X11 return false; #endif // GDK_WINDOWING_X11 / !GDK_WINDOWING_X11 +#endif // !__WXGTK3__ } bool wxTopLevelWindowGTK::CanSetTransparent()