27 Сентябрь 2004 16:55, Kim Woelders написал:
> I suspect you are right that there are problems with applications
> requesting fullscreen at startup.
> Could you please specify exactly which problem you are trying to solve
> and how I can reproduce it?

As I said, i've got a problem with OO Impress. When you open a presentation 
and press F9 for a fullscreen mode, the new window gets dimension from parent 
OO window. Before the mapping event come, there is two configure event with 
dimensions of the parent window. And window already have 
_NET_WM_STATE_FULLSCREEN. When mapping event come,then after adoption, state 
is already fullscreen (ewin->st.fullscreen==1) , but in further adoption this 
do not considered somehow. 

>
> Your patch will, however, in a number of cases not do what it should.
> When E16 "fullscreens" an application it does (among other things)
> - set border to borderless
> - figure out what the fullscreen size and location should be, taking
>    into account xinerama configuration (don't span xinerama screens)
>    and (if enabled) struts, as e.g. in don't cover panel apps.

Okey, but then EwinSetFullscreen should be changed, because it assumes that 
window comes in normal state, but it doesn't. Besides, this window already 
borderless. And on my opinion there is no need to sync state of window hints 
another time. Probably it will better just call ScreenGetGeometry. Leave 
decision to you.

>
> I think that calling EwinSetFullscreen() in stead of ResizeEwin() may
> be part of fixing the problem correctly.
>
> /Kim

Here is the patch.

-- 
With best regards,
Vadik Mironov                           
                                        <[EMAIL PROTECTED]>
--- ./etalon/e16/e/src/borders.c	2004-09-21 08:50:31.000000000 +0000
+++ ./hacked/e16/e/src/borders.c	2004-09-28 11:44:35.533991872 +0000
@@ -486,6 +486,13 @@
    /* if it hasn't been placed yet.... find a spot for it */
    x = ewin->x;
    y = ewin->y;
+   
+   /* if it is already fullscreen */
+   if(ewin->st.fullscreen)
+   {
+       EwinSetFullscreen(ewin,1)                ;
+   }
+   
    if ((!ewin->client.already_placed) && (!manplace))
      {
 	/* Place the window below the mouse pointer */
@@ -3139,9 +3146,11 @@
 {
    int                 x, y, w, h;
    Border             *b;
-
+   
+/*
    if (ewin->st.fullscreen == on)
       return;
+*/
 
    if (on)
      {

Reply via email to