Add functionality to set overall opacity of a top-level window. (#405316)
2007-04-30 Tor Lillqvist <tml@novell.com> Add functionality to set overall opacity of a top-level window. (#405316) * gdk/gdk.symbols: Add gdk_window_set_opacity. * gdk/x11/gdkwindow-x11.c * gdk/win32/gdkwindow-win32.c: Implement gdk_window_set_opacity(). On X11 use the _NET_WM_WINDOW_OPACITY property. On Win32 use SetLayeredWindowAttributes(LWA_ALPHA). * gdk/gdkwindow.h: Declare gdk_window_set_opacity(). * gdk/x11/gdkscreen-x11.c (gdk_screen_get_rgba_colormap): Document that this is not implemented in the Windows backend. Add reference to gdk_window_set_opacity(). svn path=/trunk/; revision=17730
This commit is contained in:
committed by
Tor Lillqvist
parent
10862a344a
commit
b18f044270
@ -6402,5 +6402,54 @@ gdk_window_beep (GdkWindow *window)
|
||||
gdk_display_beep (display);
|
||||
}
|
||||
|
||||
/**
|
||||
* gdk_window_set_opacity:
|
||||
* @window a top-level #GdkWindow
|
||||
* @opacity: opacity
|
||||
*
|
||||
* Request the windowing system to make @window partially transparent,
|
||||
* with opacity 0 being fully transparent and 1 fully opaque. (Values
|
||||
* of the opacity parameter are clamped to the [0,1] range.) On X11
|
||||
* this works only on X screens with a compositing manager running.
|
||||
*
|
||||
* For setting up per-pixel alpha, see gdk_screen_get_rgba_colormap().
|
||||
*
|
||||
* Since: 2.12
|
||||
*/
|
||||
void
|
||||
gdk_window_set_opacity (GdkWindow *window,
|
||||
gdouble opacity)
|
||||
{
|
||||
GdkDisplay *display;
|
||||
guint32 cardinal;
|
||||
|
||||
g_return_if_fail (GDK_IS_WINDOW (window));
|
||||
g_return_if_fail (WINDOW_IS_TOPLEVEL (window));
|
||||
|
||||
if (GDK_WINDOW_DESTROYED (window))
|
||||
return;
|
||||
|
||||
display = gdk_drawable_get_display (window);
|
||||
|
||||
if (opacity < 0)
|
||||
opacity = 0;
|
||||
else if (opacity > 1)
|
||||
opacity = 1;
|
||||
|
||||
cardinal = opacity * 0xffffffff;
|
||||
|
||||
if (cardinal == 0xffffffff)
|
||||
XDeleteProperty (GDK_DISPLAY_XDISPLAY (display),
|
||||
GDK_WINDOW_XID (window),
|
||||
gdk_x11_get_xatom_by_name_for_display (display, "_NET_WM_WINDOW_OPACITY"));
|
||||
else
|
||||
XChangeProperty (GDK_DISPLAY_XDISPLAY (display),
|
||||
GDK_WINDOW_XID (window),
|
||||
gdk_x11_get_xatom_by_name_for_display (display, "_NET_WM_WINDOW_OPACITY"),
|
||||
XA_CARDINAL, 32,
|
||||
PropModeReplace,
|
||||
(guchar *) cardinal, 1);
|
||||
}
|
||||
|
||||
#define __GDK_WINDOW_X11_C__
|
||||
#include "gdkaliasdef.c"
|
||||
|
||||
Reference in New Issue
Block a user