Propagate _NET_WM_WINDOW_OPACITY to the frame window (bug #5132)
This commit is contained in:
parent
fd9bb43059
commit
aa15563fee
6 changed files with 22 additions and 0 deletions
|
@ -107,6 +107,7 @@ void obt_prop_startup(void)
|
||||||
CREATE_(NET_WM_ICON_GEOMETRY);
|
CREATE_(NET_WM_ICON_GEOMETRY);
|
||||||
CREATE_(NET_WM_PID);
|
CREATE_(NET_WM_PID);
|
||||||
CREATE_(NET_WM_ALLOWED_ACTIONS);
|
CREATE_(NET_WM_ALLOWED_ACTIONS);
|
||||||
|
CREATE_(NET_WM_WINDOW_OPACITY);
|
||||||
CREATE_(NET_WM_USER_TIME);
|
CREATE_(NET_WM_USER_TIME);
|
||||||
/* CREATE_(NET_WM_USER_TIME_WINDOW); */
|
/* CREATE_(NET_WM_USER_TIME_WINDOW); */
|
||||||
CREATE_(KDE_NET_WM_FRAME_STRUT);
|
CREATE_(KDE_NET_WM_FRAME_STRUT);
|
||||||
|
|
|
@ -148,6 +148,7 @@ typedef enum {
|
||||||
OBT_PROP_NET_WM_ICON_GEOMETRY,
|
OBT_PROP_NET_WM_ICON_GEOMETRY,
|
||||||
OBT_PROP_NET_WM_PID,
|
OBT_PROP_NET_WM_PID,
|
||||||
OBT_PROP_NET_WM_ALLOWED_ACTIONS,
|
OBT_PROP_NET_WM_ALLOWED_ACTIONS,
|
||||||
|
OBT_PROP_NET_WM_WINDOW_OPACITY,
|
||||||
OBT_PROP_NET_WM_USER_TIME,
|
OBT_PROP_NET_WM_USER_TIME,
|
||||||
/* OBT_PROP_NET_WM_USER_TIME_WINDOW, */
|
/* OBT_PROP_NET_WM_USER_TIME_WINDOW, */
|
||||||
OBT_PROP_NET_FRAME_EXTENTS,
|
OBT_PROP_NET_FRAME_EXTENTS,
|
||||||
|
|
|
@ -256,6 +256,10 @@ void client_manage(Window window, ObPrompt *prompt)
|
||||||
/* the session should get the last say though */
|
/* the session should get the last say though */
|
||||||
client_restore_session_state(self);
|
client_restore_session_state(self);
|
||||||
|
|
||||||
|
/* this needs to occur once we have a frame, since it sets a property on
|
||||||
|
the frame */
|
||||||
|
client_update_opacity(self);
|
||||||
|
|
||||||
/* don't put helper/modal windows on a different desktop if they are
|
/* don't put helper/modal windows on a different desktop if they are
|
||||||
related to the focused window. */
|
related to the focused window. */
|
||||||
if (!screen_compare_desktops(self->desktop, screen_desktop) &&
|
if (!screen_compare_desktops(self->desktop, screen_desktop) &&
|
||||||
|
@ -1665,6 +1669,16 @@ void client_update_colormap(ObClient *self, Colormap colormap)
|
||||||
self->colormap = colormap;
|
self->colormap = colormap;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void client_update_opacity(ObClient *self)
|
||||||
|
{
|
||||||
|
guint32 o;
|
||||||
|
|
||||||
|
if (OBT_PROP_GET32(self->window, NET_WM_WINDOW_OPACITY, CARDINAL, &o))
|
||||||
|
OBT_PROP_SET32(self->frame->window, NET_WM_WINDOW_OPACITY, CARDINAL, o);
|
||||||
|
else
|
||||||
|
OBT_PROP_ERASE(self->frame->window, NET_WM_WINDOW_OPACITY);
|
||||||
|
}
|
||||||
|
|
||||||
void client_update_normal_hints(ObClient *self)
|
void client_update_normal_hints(ObClient *self)
|
||||||
{
|
{
|
||||||
XSizeHints size;
|
XSizeHints size;
|
||||||
|
|
|
@ -616,6 +616,8 @@ void client_update_sync_request_counter(ObClient *self);
|
||||||
#endif
|
#endif
|
||||||
/*! Updates the window's colormap */
|
/*! Updates the window's colormap */
|
||||||
void client_update_colormap(ObClient *self, Colormap colormap);
|
void client_update_colormap(ObClient *self, Colormap colormap);
|
||||||
|
/*! Updates the requested opacity for the window from the client. */
|
||||||
|
void client_update_opacity(ObClient *self);
|
||||||
/*! Updates the WMNormalHints and adjusts things if they change */
|
/*! Updates the WMNormalHints and adjusts things if they change */
|
||||||
void client_update_normal_hints(ObClient *self);
|
void client_update_normal_hints(ObClient *self);
|
||||||
|
|
||||||
|
|
|
@ -1681,6 +1681,9 @@ static void event_handle_client(ObClient *client, XEvent *e)
|
||||||
event_last_user_time = t;
|
event_last_user_time = t;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if (msgtype == OBT_PROP_ATOM(NET_WM_WINDOW_OPACITY)) {
|
||||||
|
client_update_opacity(client);
|
||||||
|
}
|
||||||
#ifdef SYNC
|
#ifdef SYNC
|
||||||
else if (msgtype == OBT_PROP_ATOM(NET_WM_SYNC_REQUEST_COUNTER)) {
|
else if (msgtype == OBT_PROP_ATOM(NET_WM_SYNC_REQUEST_COUNTER)) {
|
||||||
/* if they are resizing right now this would cause weird behaviour.
|
/* if they are resizing right now this would cause weird behaviour.
|
||||||
|
|
|
@ -249,6 +249,7 @@ gboolean screen_annex(void)
|
||||||
supported[i++] = OBT_PROP_ATOM(NET_WM_WINDOW_TYPE_DIALOG);
|
supported[i++] = OBT_PROP_ATOM(NET_WM_WINDOW_TYPE_DIALOG);
|
||||||
supported[i++] = OBT_PROP_ATOM(NET_WM_WINDOW_TYPE_NORMAL);
|
supported[i++] = OBT_PROP_ATOM(NET_WM_WINDOW_TYPE_NORMAL);
|
||||||
supported[i++] = OBT_PROP_ATOM(NET_WM_ALLOWED_ACTIONS);
|
supported[i++] = OBT_PROP_ATOM(NET_WM_ALLOWED_ACTIONS);
|
||||||
|
supported[i++] = OBT_PROP_ATOM(NET_WM_WINDOW_OPACITY);
|
||||||
supported[i++] = OBT_PROP_ATOM(NET_WM_ACTION_MOVE);
|
supported[i++] = OBT_PROP_ATOM(NET_WM_ACTION_MOVE);
|
||||||
supported[i++] = OBT_PROP_ATOM(NET_WM_ACTION_RESIZE);
|
supported[i++] = OBT_PROP_ATOM(NET_WM_ACTION_RESIZE);
|
||||||
supported[i++] = OBT_PROP_ATOM(NET_WM_ACTION_MINIMIZE);
|
supported[i++] = OBT_PROP_ATOM(NET_WM_ACTION_MINIMIZE);
|
||||||
|
|
Loading…
Reference in a new issue