CVS: rdesktop ewmhints.c,1.10.2.2,1.10.2.3 xproto.h,1.4.2.2,1.4.2.3 xwin.c,1.205.2.13,1.205.2.14
Pierre Ossman <[email protected]> Wed, 15 Mar 2006 07:10:43 -0800
| Newsgroups | gmane.network.rdesktop.cvs |
|---|---|
| Message-ID | <[email protected]> |
Update of /cvsroot/rdesktop/rdesktop
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv3330
Modified Files:
Tag: seamlessrdp-branch
ewmhints.c xproto.h xwin.c
Log Message:
Handle popups without a parent by setting the window manager hints
_NET_WM_STATE_SKIP_TASKBAR and _NET_WM_STATE_SKIP_PAGER. That seems to get
the behaviour we want.
Index: ewmhints.c
===================================================================
RCS file: /cvsroot/rdesktop/rdesktop/ewmhints.c,v
retrieving revision 1.10.2.2
retrieving revision 1.10.2.3
diff -C2 -d -r1.10.2.2 -r1.10.2.3
*** ewmhints.c 15 Mar 2006 06:42:57 -0000 1.10.2.2
--- ewmhints.c 15 Mar 2006 15:10:21 -0000 1.10.2.3
***************
*** 23,26 ****
--- 23,27 ----
#include <X11/Xlib.h>
+ #include <X11/Xatom.h>
#include "rdesktop.h"
***************
*** 31,35 ****
extern Display *g_display;
static Atom g_net_wm_state_maximized_vert_atom, g_net_wm_state_maximized_horz_atom,
! g_net_wm_state_hidden_atom;
Atom g_net_wm_state_atom, g_net_wm_desktop_atom;
--- 32,37 ----
extern Display *g_display;
static Atom g_net_wm_state_maximized_vert_atom, g_net_wm_state_maximized_horz_atom,
! g_net_wm_state_hidden_atom, g_net_wm_state_skip_taskbar_atom,
! g_net_wm_state_skip_pager_atom;
Atom g_net_wm_state_atom, g_net_wm_desktop_atom;
***************
*** 174,177 ****
--- 176,182 ----
XInternAtom(g_display, "_NET_WM_STATE_MAXIMIZED_HORZ", False);
g_net_wm_state_hidden_atom = XInternAtom(g_display, "_NET_WM_STATE_HIDDEN", False);
+ g_net_wm_state_skip_taskbar_atom =
+ XInternAtom(g_display, "_NET_WM_STATE_SKIP_TASKBAR", False);
+ g_net_wm_state_skip_pager_atom = XInternAtom(g_display, "_NET_WM_STATE_SKIP_PAGER", False);
g_net_wm_state_atom = XInternAtom(g_display, "_NET_WM_STATE", False);
g_net_wm_desktop_atom = XInternAtom(g_display, "_NET_WM_DESKTOP", False);
***************
*** 319,322 ****
--- 324,335 ----
}
+ void
+ ewmh_set_window_popup(Window wnd)
+ {
+ Atom atoms[2] = { g_net_wm_state_skip_taskbar_atom, g_net_wm_state_skip_pager_atom };
+
+ XChangeProperty(g_display, wnd, g_net_wm_state_atom, XA_ATOM, 32, PropModeAppend, atoms, 2);
+ }
+
#endif /* MAKE_PROTO */
Index: xproto.h
===================================================================
RCS file: /cvsroot/rdesktop/rdesktop/xproto.h,v
retrieving revision 1.4.2.2
retrieving revision 1.4.2.3
diff -C2 -d -r1.4.2.2 -r1.4.2.3
*** xproto.h 15 Mar 2006 06:42:57 -0000 1.4.2.2
--- xproto.h 15 Mar 2006 15:10:21 -0000 1.4.2.3
***************
*** 7,8 ****
--- 7,9 ----
int ewmh_move_to_desktop(Window wnd, unsigned int desktop);
int ewmh_get_window_desktop(Window wnd);
+ void ewmh_set_window_popup(Window wnd);
Index: xwin.c
===================================================================
RCS file: /cvsroot/rdesktop/rdesktop/xwin.c,v
retrieving revision 1.205.2.13
retrieving revision 1.205.2.14
diff -C2 -d -r1.205.2.13 -r1.205.2.14
*** xwin.c 15 Mar 2006 13:15:51 -0000 1.205.2.13
--- xwin.c 15 Mar 2006 15:10:21 -0000 1.205.2.14
***************
*** 3085,3089 ****
/* Set WM_TRANSIENT_FOR, if necessary */
! if (parent)
{
sw_parent = seamless_get_window_by_id(parent);
--- 3085,3089 ----
/* Set WM_TRANSIENT_FOR, if necessary */
! if ((parent == 0x00000000) || (parent == 0xFFFFFFFF))
{
sw_parent = seamless_get_window_by_id(parent);
***************
*** 3094,3097 ****
--- 3094,3101 ----
}
+ /* Handle popups without parents through some ewm hints */
+ if (parent == 0xFFFFFFFF)
+ ewmh_set_window_popup(wnd);
+
/* FIXME: Support for Input Context:s */
-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642