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