changeset 12796:24075685789b

This fixes the problems that originated from my ewmh fs patch, caused by a different handling of the wm's ewmh fs implementations. Patch by Alexander Strasser
author rtognimp
date Sun, 11 Jul 2004 22:16:52 +0000
parents ab369fe35121
children b2419eef04da
files Gui/wm/ws.c libvo/x11_common.c
diffstat 2 files changed, 34 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/Gui/wm/ws.c	Sun Jul 11 13:43:43 2004 +0000
+++ b/Gui/wm/ws.c	Sun Jul 11 22:16:52 2004 +0000
@@ -770,24 +770,32 @@
 
  if ( win->isFullScreen )
   {
+   vo_x11_ewmh_fullscreen( _NET_WM_STATE_REMOVE ); // removes fullscreen state if wm supports EWMH
+   if ( ! (vo_fs_type & vo_wm_FULLSCREEN) ) // shouldn't be needed with EWMH fs
+   {
    win->X=win->OldX;
    win->Y=win->OldY;
    win->Width=win->OldWidth;
    win->Height=win->OldHeight;
-   win->isFullScreen=False;
    decoration=win->Decorations;
+   }
+
 #ifdef ENABLE_DPMS
    wsScreenSaverOn( wsDisplay );
 #endif
 
-   vo_x11_ewmh_fullscreen( _NET_WM_STATE_REMOVE ); // removes fullscreen state if wm supports EWMH
+   win->isFullScreen=False;
   }
   else
    {
+    if ( ! (vo_fs_type & vo_wm_FULLSCREEN) ) // shouldn't be needed with EWMH fs
+    {
     win->OldX=win->X; win->OldY=win->Y;
     win->OldWidth=win->Width; win->OldHeight=win->Height;
     win->X=wsOrgX; win->Y=wsOrgY;
     win->Width=wsMaxX; win->Height=wsMaxY;
+    }
+
     win->isFullScreen=True;
 #ifdef ENABLE_DPMS
     wsScreenSaverOff( wsDisplay );
@@ -796,15 +804,23 @@
      vo_x11_ewmh_fullscreen( _NET_WM_STATE_ADD ); // adds fullscreen state if wm supports EWMH
    }
 
+  if ( ! (vo_fs_type & vo_wm_FULLSCREEN) ) // shouldn't be needed with EWMH fs
+ {
  vo_x11_decoration( wsDisplay,win->WindowID,decoration );
  vo_x11_sizehint( win->X,win->Y,win->Width,win->Height,0 );
  vo_x11_setlayer( wsDisplay,win->WindowID,win->isFullScreen );
 
 if ((!(win->isFullScreen)) & vo_ontop) vo_x11_setlayer(wsDisplay, win->WindowID,1);
 
+ XMoveResizeWindow( wsDisplay,win->WindowID,win->X,win->Y,win->Width,win->Height );
+ }
+    
  if ( vo_wm_type == 0 && !(vo_fsmode&16) )
+  {
   XWithdrawWindow( wsDisplay,win->WindowID,wsScreen );
- XMoveResizeWindow( wsDisplay,win->WindowID,win->X,win->Y,win->Width,win->Height );
+  }
+
+
  XMapRaised( wsDisplay,win->WindowID );
  XRaiseWindow( wsDisplay,win->WindowID );
  XFlush( wsDisplay );
--- a/libvo/x11_common.c	Sun Jul 11 13:43:43 2004 +0000
+++ b/libvo/x11_common.c	Sun Jul 11 22:16:52 2004 +0000
@@ -78,7 +78,7 @@
 int WinID = -1;
 int vo_mouse_autohide = 0;
 int vo_wm_type = 0;
-static int vo_fs_type = 0;
+int vo_fs_type = 0; // needs to be accessible for GUI X11 code
 static int vo_fs_flip = 0;
 char **vo_fstype_list;
 
@@ -1403,25 +1403,30 @@
     if (vo_fs)
     {
         // fs->win
-        vo_x11_ewmh_fullscreen(_NET_WM_STATE_REMOVE);   // removes fullscreen state if wm supports EWMH
-
+        if ( ! (vo_fs_type & vo_wm_FULLSCREEN) ) // not needed with EWMH fs
+        {
         if (vo_dwidth != vo_screenwidth && vo_dheight != vo_screenheight)
             return;
-        vo_fs = VO_FALSE;
         x = vo_old_x;
         y = vo_old_y;
         w = vo_old_width;
         h = vo_old_height;
+        }
+
+        vo_x11_ewmh_fullscreen(_NET_WM_STATE_REMOVE);   // removes fullscreen state if wm supports EWMH
+        vo_fs = VO_FALSE;
     } else
     {
         // win->fs
         vo_x11_ewmh_fullscreen(_NET_WM_STATE_ADD);      // sends fullscreen state to be added if wm supports EWMH
 
+        vo_fs = VO_TRUE;
+        if ( ! (vo_fs_type & vo_wm_FULLSCREEN) ) // not needed with EWMH fs
+        {
         if (vo_old_width &&
             (vo_dwidth == vo_screenwidth && vo_dwidth != vo_old_width) &&
             (vo_dheight == vo_screenheight && vo_dheight != vo_old_height))
             return;
-        vo_fs = VO_TRUE;
         vo_old_x = vo_dx;
         vo_old_y = vo_dy;
         vo_old_width = vo_dwidth;
@@ -1430,7 +1435,7 @@
         y = 0;
         w = vo_screenwidth;
         h = vo_screenheight;
-
+        }
     }
     {
         long dummy;
@@ -1448,6 +1453,8 @@
         vo_fs_flip = 1;
     }
 
+    if ( ! (vo_fs_type & vo_wm_FULLSCREEN) ) // not needed with EWMH fs
+    {
     vo_x11_decoration(mDisplay, vo_window, (vo_fs) ? 0 : 1);
     vo_x11_sizehint(x, y, w, h, 0);
     vo_x11_setlayer(mDisplay, vo_window, vo_fs);
@@ -1456,9 +1463,11 @@
         vo_x11_setlayer(mDisplay, vo_window, vo_ontop);
 
     XMoveResizeWindow(mDisplay, vo_window, x, y, w, h);
+    }
 #ifdef HAVE_XINERAMA
     vo_x11_xinerama_move(mDisplay, vo_window);
 #endif
+
     XMapRaised(mDisplay, vo_window);
     XRaiseWindow(mDisplay, vo_window);
     XFlush(mDisplay);