From: Ben Hutchings Date: Sun, 25 Mar 2007 20:26:43 +0000 (+0000) Subject: Reverted upstream change 'Full screen mode fixes and improvements' which somehow... X-Git-Tag: 20070318-1~2 X-Git-Url: https://git.decadent.org.uk/gitweb/?p=ion3.git;a=commitdiff_plain;h=6f9786958b95a53c55de1750f6eec3299188d49d Reverted upstream change 'Full screen mode fixes and improvements' which somehow causes the dock to shrink its child windows. --- diff --git a/debian/changelog b/debian/changelog index a05a582..4f8feeb 100644 --- a/debian/changelog +++ b/debian/changelog @@ -2,10 +2,12 @@ ion3 (20070318-1) unstable; urgency=low * New maintainer - closes: #414378 * New upstream release - closes: #413469 + * Reverted upstream changes to full-screen behaviour which break dock + sizing * Updated FAQ * Added docker and ion3-scripts to suggested packages - -- Ben Hutchings Sun, 25 Mar 2007 14:14:05 +0100 + -- Ben Hutchings Sun, 25 Mar 2007 20:51:55 +0100 ion3 (20070203-1) experimental; urgency=low diff --git a/debian/patches/00list b/debian/patches/00list index be9c541..bc48903 100644 --- a/debian/patches/00list +++ b/debian/patches/00list @@ -1,3 +1,4 @@ +101_revert-full-screen-changes.diff 201_fix-paths.diff 202_fix-menus.diff 204_fix-bindings.diff diff --git a/debian/patches/101_revert-full-screen-changes.diff b/debian/patches/101_revert-full-screen-changes.diff new file mode 100644 index 0000000..12f827b --- /dev/null +++ b/debian/patches/101_revert-full-screen-changes.diff @@ -0,0 +1,367 @@ +#! /bin/sh -e +if [ $# -ne 1 ]; then + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +fi +case "$1" in + -patch) patch -f --no-backup-if-mismatch -p1 < $0;; + -unpatch) patch -f --no-backup-if-mismatch -R -p1 < $0;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1;; +esac + +exit 0 +@DPATCH@ +reverted: +--- new-ion3-darcs/ioncore/clientwin.c 2007-03-25 20:10:54.000000000 +0100 ++++ old-ion3-darcs/ioncore/clientwin.c 2007-03-25 20:10:54.000000000 +0100 +@@ -43,7 +43,6 @@ + #include "bindmaps.h" + #include "return.h" + #include "conf.h" +-#include "group.h" + + + static void set_clientwin_state(WClientWin *cwin, int state); +@@ -1071,31 +1070,26 @@ + /*{{{ ConfigureRequest */ + + ++void clientwin_handle_configure_request(WClientWin *cwin, ++ XConfigureRequestEvent *ev) +-static bool check_fs_cfgrq(WClientWin *cwin, XConfigureRequestEvent *ev) + { ++ if(ev->value_mask&CWBorderWidth) ++ cwin->orig_bw=ev->border_width; ++ ++ if(cwin->flags&CLIENTWIN_PROP_IGNORE_CFGRQ){ ++ sendconfig_clientwin(cwin); ++ return; ++ } ++ + /* check full screen request */ + if((ev->value_mask&(CWWidth|CWHeight))==(CWWidth|CWHeight)){ ++ bool sw=clientwin_fullscreen_may_switchto(cwin); ++ if(clientwin_check_fullscreen_request(cwin, ev->width, ev->height, sw)) ++ return; +- WRegion *grp=region_groupleader_of((WRegion*)cwin); +- WScreen *scr=clientwin_fullscreen_chkrq(cwin, ev->width, ev->height); +- +- if(scr!=NULL && REGION_MANAGER(grp)!=(WRegion*)scr){ +- bool sw=clientwin_fullscreen_may_switchto(cwin); +- +- cwin->flags|=CLIENTWIN_FS_RQ; +- +- if(!region_fullscreen_scr(grp, scr, sw)) +- cwin->flags&=~CLIENTWIN_FS_RQ; +- } +- +- return TRUE; + } + ++ cwin->flags|=CLIENTWIN_NEED_CFGNTFY; +- return FALSE; +-} +- + +-static bool check_normal_cfgrq(WClientWin *cwin, XConfigureRequestEvent *ev) +-{ + if(ev->value_mask&(CWX|CWY|CWWidth|CWHeight)){ + WRQGeomParams rq=RQGEOMPARAMS_INIT; + int gdx=0, gdy=0; +@@ -1150,25 +1144,6 @@ + } + + region_rqgeom((WRegion*)cwin, &rq, NULL); +- +- return TRUE; +- } +- +- return FALSE; +-} +- +- +-void clientwin_handle_configure_request(WClientWin *cwin, +- XConfigureRequestEvent *ev) +-{ +- if(ev->value_mask&CWBorderWidth) +- cwin->orig_bw=ev->border_width; +- +- cwin->flags|=CLIENTWIN_NEED_CFGNTFY; +- +- if(!(cwin->flags&CLIENTWIN_PROP_IGNORE_CFGRQ)){ +- if(!check_fs_cfgrq(cwin, ev)) +- check_normal_cfgrq(cwin, ev); + } + + if(cwin->flags&CLIENTWIN_NEED_CFGNTFY){ +reverted: +--- new-ion3-darcs/ioncore/fullscreen.c 2007-03-25 20:10:54.000000000 +0100 ++++ old-ion3-darcs/ioncore/fullscreen.c 2007-03-25 20:10:54.000000000 +0100 +@@ -20,7 +20,7 @@ + #include "fullscreen.h" + #include "mwmhints.h" + #include "focus.h" ++#include "group-cw.h" +-#include "group.h" + #include "return.h" + + +@@ -125,7 +125,8 @@ + } + + ++bool clientwin_check_fullscreen_request(WClientWin *cwin, int w, int h, ++ bool sw) +-WScreen *clientwin_fullscreen_chkrq(WClientWin *cwin, int w, int h) + { + WScreen *scr; + WMwmHints *mwm; +@@ -134,7 +135,7 @@ + mwm=xwindow_get_mwmhints(cwin->win); + if(mwm==NULL || !(mwm->flags&MWM_HINTS_DECORATIONS) || + mwm->decorations!=0) ++ return FALSE; +- return NULL; + + FOR_ALL_SCREENS(scr){ + if(!region_same_rootwin((WRegion*)scr, (WRegion*)cwin)) +@@ -143,11 +144,17 @@ + * and doesn't set position, so we also don't check position here, + * and instead take the first screen with matching size. + */ ++ if(REGION_GEOM(scr).w==w && REGION_GEOM(scr).h==h){ ++ cwin->flags|=CLIENTWIN_FS_RQ; ++ if(!region_fullscreen_scr((WRegion*)cwin, (WScreen*)scr, sw)){ ++ cwin->flags&=~CLIENTWIN_FS_RQ; ++ return FALSE; ++ } ++ return TRUE; ++ } +- if(REGION_GEOM(scr).w==w && REGION_GEOM(scr).h==h) +- return scr; + } + ++ return FALSE; +- return NULL; + } + + +reverted: +--- new-ion3-darcs/ioncore/fullscreen.h 2007-03-25 20:10:54.000000000 +0100 ++++ old-ion3-darcs/ioncore/fullscreen.h 2007-03-25 20:10:54.000000000 +0100 +@@ -19,7 +19,8 @@ + + #define REGION_IS_FULLSCREEN(REG) OBJ_IS(REGION_PARENT(REG), WScreen) + ++extern bool clientwin_check_fullscreen_request(WClientWin *cwin, ++ int w, int h, bool switchto); +-extern WScreen *clientwin_fullscreen_chkrq(WClientWin *cwin, int w, int h); + extern bool clientwin_fullscreen_may_switchto(WClientWin *cwin); + + extern bool region_fullscreen_scr(WRegion *reg, WScreen *vp, bool switchto); +reverted: +--- new-ion3-darcs/ioncore/manage.c 2007-03-25 20:10:54.000000000 +0100 ++++ old-ion3-darcs/ioncore/manage.c 2007-03-25 20:10:54.000000000 +0100 +@@ -136,56 +136,15 @@ + } + + +-static bool try_fullscreen(WClientWin *cwin, WScreen *dflt, +- const WManageParams *param) +-{ +- WScreen *fs_scr=NULL; +- bool fs=FALSE, tmp; +- +- /* Check fullscreen mode. (This is intentionally not done +- * for transients and windows with target winprops.) +- */ +- if(extl_table_gets_b(cwin->proptab, "fullscreen", &tmp)){ +- if(!tmp) +- return FALSE; +- fs_scr=dflt; +- } +- +- if(fs_scr==NULL) +- fs_scr=netwm_check_initial_fullscreen(cwin); +- +- if(fs_scr==NULL) +- fs_scr=clientwin_fullscreen_chkrq(cwin, param->geom.w, param->geom.h); +- +- if(fs_scr!=NULL){ +- WPHolder *fs_ph=region_prepare_manage((WRegion*)fs_scr, cwin, param, +- MANAGE_REDIR_STRICT_NO); +- +- if(fs_ph!=NULL){ +- int swf=(param->switchto ? PHOLDER_ATTACH_SWITCHTO : 0); +- +- cwin->flags|=CLIENTWIN_FS_RQ; +- +- fs=pholder_attach(fs_ph, swf, (WRegion*)cwin); +- +- if(!fs) +- cwin->flags&=~CLIENTWIN_FS_RQ; +- +- destroy_obj((Obj*)fs_ph); +- } +- } +- +- return fs; +-} +- +- + bool clientwin_do_manage_default(WClientWin *cwin, + const WManageParams *param) + { ++ WRegion *r=NULL, *r2; + WScreen *scr=NULL; + WPHolder *ph=NULL; ++ int fs=-1; ++ int swf; ++ bool ok, tmp, uq=FALSE; +- int swf=(param->switchto ? PHOLDER_ATTACH_SWITCHTO : 0); +- bool ok, uq=FALSE; + + /* Find a suitable screen */ + scr=clientwin_find_suitable_screen(cwin, param); +@@ -210,25 +169,44 @@ + ph=region_prepare_manage((WRegion*)scr, cwin, param, + MANAGE_REDIR_PREFER_YES); + ++ /* Check fullscreen mode. (This is intentionally not done ++ * for transients and windows with target winprops.) ++ */ ++ if(extl_table_gets_b(cwin->proptab, "fullscreen", &tmp)) ++ fs=tmp; ++ ++ if(fs<0) ++ fs=netwm_check_initial_fullscreen(cwin, param->switchto); ++ ++ if(fs<0){ ++ fs=clientwin_check_fullscreen_request(cwin, ++ param->geom.w, ++ param->geom.h, ++ param->switchto); ++ } ++ } ++ ++ if(fs>0){ ++ /* Full-screen mode succesfull. */ ++ if(pholder_target(ph)==(WRegion*)scr){ ++ /* Discard useless placeholder. */ +- if(try_fullscreen(cwin, scr, param)){ +- if(pholder_target(ph)!=(WRegion*)region_screen_of((WRegion*)cwin)){ +- WRegion *grp=region_groupleader_of((WRegion*)cwin); +- if(region_do_set_return(grp, ph)) +- return TRUE; +- } + destroy_obj((Obj*)ph); + return TRUE; + } + ++ if(!region_do_set_return((WRegion*)cwin, ph)) ++ destroy_obj((Obj*)ph); ++ ++ return TRUE; + } ++ +- + if(ph==NULL) + return FALSE; + + /* Not in full-screen mode; use the placeholder to attach. */ + ++ swf=(param->switchto ? PHOLDER_ATTACH_SWITCHTO : 0); + ok=pholder_attach(ph, swf, (WRegion*)cwin); +- + destroy_obj((Obj*)ph); + + if(uq && ok) +reverted: +--- new-ion3-darcs/ioncore/netwm.c 2007-03-25 20:10:54.000000000 +0100 ++++ old-ion3-darcs/ioncore/netwm.c 2007-03-25 20:10:54.000000000 +0100 +@@ -22,7 +22,6 @@ + #include "focus.h" + #include "xwindow.h" + #include "extlconv.h" +-#include "group.h" + + + /*{{{ Atoms */ +@@ -86,7 +85,7 @@ + /*{{{ _NET_WM_STATE */ + + ++int netwm_check_initial_fullscreen(WClientWin *cwin, bool sw) +-WScreen *netwm_check_initial_fullscreen(WClientWin *cwin) + { + + int i, n; +@@ -97,16 +96,18 @@ + 1, TRUE, (uchar**)&data); + + if(n<0) ++ return -1; +- return NULL; + + for(i=0; idata.l[0]==_NET_WM_STATE_ADD || + ev->data.l[0]==_NET_WM_STATE_TOGGLE){ +- WRegion *grp=region_groupleader_of((WRegion*)cwin); + bool sw=clientwin_fullscreen_may_switchto(cwin); + cwin->flags|=CLIENTWIN_FS_RQ; ++ if(!region_enter_fullscreen((WRegion*)cwin, sw)) +- if(!region_enter_fullscreen(grp, sw)) + cwin->flags&=~CLIENTWIN_FS_RQ; + }else{ + /* Should not be set.. */ +@@ -156,10 +156,9 @@ + }else{ + if(ev->data.l[0]==_NET_WM_STATE_REMOVE || + ev->data.l[0]==_NET_WM_STATE_TOGGLE){ +- WRegion *grp=region_groupleader_of((WRegion*)cwin); + bool sw=clientwin_fullscreen_may_switchto(cwin); + cwin->flags&=~CLIENTWIN_FS_RQ; ++ region_leave_fullscreen((WRegion*)cwin, sw); +- region_leave_fullscreen(grp, sw); + }else{ + /* Set the flag */ + cwin->flags|=CLIENTWIN_FS_RQ; +reverted: +--- new-ion3-darcs/ioncore/netwm.h 2007-03-25 20:10:54.000000000 +0100 ++++ old-ion3-darcs/ioncore/netwm.h 2007-03-25 20:10:54.000000000 +0100 +@@ -14,7 +14,6 @@ + + #include "common.h" + #include "rootwin.h" +-#include "screen.h" + + #define _NET_WM_STATE_REMOVE 0 /* remove/unset property */ + #define _NET_WM_STATE_ADD 1 /* add/set property */ +@@ -23,7 +22,7 @@ + extern void netwm_init(); + extern void netwm_init_rootwin(WRootWin *rw); + ++extern int netwm_check_initial_fullscreen(WClientWin *cwin, bool switchto); +-extern WScreen *netwm_check_initial_fullscreen(WClientWin *cwin); + extern void netwm_update_state(WClientWin *cwin); + extern void netwm_delete_state(WClientWin *cwin); + extern void netwm_set_active(WRegion *reg);