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) {