From 07b1a1d6a08e2e8f9299c9bbed46271c614aae32 Mon Sep 17 00:00:00 2001 From: Paul Cornett Date: Tue, 15 Apr 2014 16:07:44 +0000 Subject: [PATCH] use gtk_window_set_opacity() in SetTransparent() when GTK >= 2.12 git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@76349 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/gtk/toplevel.cpp | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) 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()