diff options
author | pontscho <pontscho@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2002-10-01 14:37:01 +0000 |
---|---|---|
committer | pontscho <pontscho@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2002-10-01 14:37:01 +0000 |
commit | 690bccca999e83ff636a4d935e9c5212871ac1e2 (patch) | |
tree | d7b7bb2f6d49f4ce42c1072cb20790dd5b45cb6b | |
parent | 3ef4629545772e39aeed57195521e78fe5c08aaa (diff) | |
download | mpv-690bccca999e83ff636a4d935e9c5212871ac1e2.tar.bz2 mpv-690bccca999e83ff636a4d935e9c5212871ac1e2.tar.xz |
_NET_WM_FULLSCREEN support
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@7573 b3059339-0415-0410-9bf9-f77b7e298cf2
-rw-r--r-- | Gui/wm/ws.c | 10 | ||||
-rw-r--r-- | libvo/x11_common.c | 9 |
2 files changed, 15 insertions, 4 deletions
diff --git a/Gui/wm/ws.c b/Gui/wm/ws.c index ff57a1c856..a30eb2d7bd 100644 --- a/Gui/wm/ws.c +++ b/Gui/wm/ws.c @@ -776,7 +776,7 @@ void wsSetLayer( Display * wsDisplay, Window win, int layer ) Atom type; int format; unsigned long nitems, bytesafter; - unsigned char * args = NULL; + Atom * args = NULL; if ( wsWMType == wsWMIceWM ) { @@ -794,15 +794,21 @@ void wsSetLayer( Display * wsDisplay, Window win, int layer ) type=XInternAtom( wsDisplay,"_NET_SUPPORTED",False ); if ( Success == XGetWindowProperty( wsDisplay,wsRootWin,type,0,65536 / sizeof( int32_t ),False,AnyPropertyType,&type,&format,&nitems,&bytesafter,&args ) && nitems > 0 ) { + int i; XEvent e; + e.xclient.type=ClientMessage; e.xclient.message_type=XInternAtom( wsDisplay,"_NET_WM_STATE",False ); e.xclient.display=wsDisplay; e.xclient.window=win; e.xclient.format=32; e.xclient.data.l[0]=layer; + e.xclient.data.l[1]=XInternAtom( wsDisplay,"_NET_WM_STATE_STAYS_ON_TOP",False ); -// e.xclient.data.l[1]=XInternAtom( wsDisplay,"_NET_WM_STATE_FULLSCREEN",False ); + type=XInternAtom( wsDisplay,"_NET_WM_STATE_FULLSCREEN",False ); + for ( i=0;i < nitems;i++ ) + if ( args[i] == type ) { e.xclient.data.l[1]=XInternAtom( wsDisplay,"_NET_WM_STATE_FULLSCREEN",False ); break; } + e.xclient.data.l[2]=0l; e.xclient.data.l[3]=0l; e.xclient.data.l[4]=0l; diff --git a/libvo/x11_common.c b/libvo/x11_common.c index e13730d6ba..4ee2ec90db 100644 --- a/libvo/x11_common.c +++ b/libvo/x11_common.c @@ -635,7 +635,7 @@ void vo_x11_setlayer( int layer ) Atom type; int format; unsigned long nitems, bytesafter; - unsigned char * args = NULL; + Atom * args = NULL; if ( WinID >= 0 ) return; @@ -658,6 +658,7 @@ void vo_x11_setlayer( int layer ) if ( Success == XGetWindowProperty( mDisplay,mRootWin,type,0,16384,False,AnyPropertyType,&type,&format,&nitems,&bytesafter,&args ) && nitems > 0 ) { XEvent e; + int i; mp_dbg( MSGT_VO,MSGL_STATUS,"[x11] NET style stay on top ( layer %d ).\n",layer ); memset( &e,0,sizeof( e ) ); @@ -667,8 +668,12 @@ void vo_x11_setlayer( int layer ) e.xclient.window=vo_window; e.xclient.format=32; e.xclient.data.l[0]=layer; + e.xclient.data.l[1]=XInternAtom( mDisplay,"_NET_WM_STATE_STAYS_ON_TOP",False ); -// e.xclient.data.l[1]=XInternAtom( mDisplay,"_NET_WM_STATE_FULLSCREEN",False ); + type=XInternAtom( mDisplay,"_NET_WM_STATE_FULLSCREEN",False ); + for ( i=0;i < nitems;i++ ) + if ( args[i] == type ) { e.xclient.data.l[1]=XInternAtom( mDisplay,"_NET_WM_STATE_FULLSCREEN",False ); break; } + XSendEvent( mDisplay,mRootWin,False,SubstructureRedirectMask,&e ); XFree( args ); |