From: Mark Wooding Date: Tue, 6 Dec 2011 18:36:36 +0000 (+0000) Subject: New option: movres.ignore_transience. X-Git-Tag: debian/1.0.0-7^0 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~mdw/git/e16/commitdiff_plain/refs/heads/master New option: movres.ignore_transience. Don't do stuff to transients just because you did them to the master window. --- diff --git a/debian/changelog b/debian/changelog index 9eba312..2fcb967 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,10 @@ +e16 (1.0.0-7) unstable; urgency=low + + * Don't do things (move, iconify, etc.) to transient windows just + because you did something to the master window. + + -- Mark Wooding Tue, 06 Dec 2011 18:38:06 +0000 + e16 (1.0.0-6) unstable; urgency=low * Don't raise windows on _NET_ACTIVE_WINDOW. diff --git a/debian/patch/005_ignore_transience.patch b/debian/patch/005_ignore_transience.patch new file mode 100644 index 0000000..1d72648 --- /dev/null +++ b/debian/patch/005_ignore_transience.patch @@ -0,0 +1,143 @@ +Index: e16/src/E.h +=================================================================== +--- e16.orig/src/E.h 2011-12-06 18:31:59.000000000 +0000 ++++ e16/src/E.h 2011-12-06 16:23:55.000000000 +0000 +@@ -216,6 +216,7 @@ + char update_while_moving; + char enable_sync_request; + char dragbar_nocover; ++ char ignore_transience; + } movres; + struct { + int movres; +Index: e16/src/mod-misc.c +=================================================================== +--- e16.orig/src/mod-misc.c 2011-12-06 18:31:59.000000000 +0000 ++++ e16/src/mod-misc.c 2011-12-06 16:24:35.000000000 +0000 +@@ -159,6 +159,7 @@ + CFG_ITEM_BOOL(Conf, movres.update_while_moving, 0), + CFG_ITEM_BOOL(Conf, movres.enable_sync_request, 0), + CFG_ITEM_BOOL(Conf, movres.dragbar_nocover, 0), ++ CFG_ITEM_BOOL(Conf, movres.ignore_transience, 1), + + CFG_ITEM_INT(Conf, opacity.menus, 85), + CFG_ITEM_INT(Conf, opacity.movres, 60), +Index: e16/src/ewin-ops.c +=================================================================== +--- e16.orig/src/ewin-ops.c 2011-12-06 18:31:59.000000000 +0000 ++++ e16/src/ewin-ops.c 2011-12-06 18:23:57.000000000 +0000 +@@ -389,7 +389,8 @@ + #endif + } + +- if (flags & (MRF_DESK | MRF_MOVE | MRF_FLOAT | MRF_UNFLOAT)) ++ if ((flags & (MRF_DESK | MRF_MOVE | MRF_FLOAT | MRF_UNFLOAT)) && ++ !Conf.movres.ignore_transience) + { + lst = EwinListTransients(ewin, &num, 0); + for (i = 0; i < num; i++) +@@ -552,20 +553,22 @@ + + ICCCM_Iconify(ewin); + +- lst = EwinListTransients(ewin, &num, 0); +- for (i = 0; i < num; i++) +- { +- e = lst[i]; +- if (e->state.iconified) +- continue; ++ if (!Conf.movres.ignore_transience) { ++ lst = EwinListTransients(ewin, &num, 0); ++ for (i = 0; i < num; i++) ++ { ++ e = lst[i]; ++ if (e->state.iconified) ++ continue; + +- EwinIconify(e); +- } ++ EwinIconify(e); ++ } + #if ENABLE_GNOME +- if (lst && call_depth == 1) +- GNOME_SetClientList(); ++ if (lst && call_depth == 1) ++ GNOME_SetClientList(); + #endif + Efree(lst); ++ } + + EwinStateUpdate(ewin); + HintsSetWindowState(ewin); +@@ -647,20 +650,22 @@ + EwinShow(ewin); + ICCCM_DeIconify(ewin); + +- lst = EwinListTransients(ewin, &num, 0); +- for (i = 0; i < num; i++) +- { +- e = lst[i]; +- if (!e->state.iconified) +- continue; ++ if (!Conf.movres.ignore_transience) { ++ lst = EwinListTransients(ewin, &num, 0); ++ for (i = 0; i < num; i++) ++ { ++ e = lst[i]; ++ if (!e->state.iconified) ++ continue; + +- EwinDeIconify1(e, dx, dy); +- } ++ EwinDeIconify1(e, dx, dy); ++ } + #if ENABLE_GNOME +- if (lst && call_depth == 1) +- GNOME_SetClientList(); ++ if (lst && call_depth == 1) ++ GNOME_SetClientList(); + #endif +- Efree(lst); ++ Efree(lst); ++ } + + EwinStateUpdate(ewin); + HintsSetWindowState(ewin); +Index: e16/src/ewins.c +=================================================================== +--- e16.orig/src/ewins.c 2011-12-06 18:31:59.000000000 +0000 ++++ e16/src/ewins.c 2011-12-06 17:13:30.000000000 +0000 +@@ -1395,10 +1395,12 @@ + if (num == 0) /* Quit if stacking is unchanged */ + goto done; + +- lst = EwinListTransients(ewin, &num, 1); +- for (i = 0; i < num; i++) +- EwinRaise(lst[i]); +- Efree(lst); ++ if (!Conf.movres.ignore_transience) { ++ lst = EwinListTransients(ewin, &num, 1); ++ for (i = 0; i < num; i++) ++ EwinRaise(lst[i]); ++ Efree(lst); ++ } + + if (call_depth == 1) + { +@@ -1430,10 +1432,12 @@ + if (num == 0) /* Quit if stacking is unchanged */ + goto done; + +- lst = EwinListTransientFor(ewin, &num); +- for (i = 0; i < num; i++) +- EwinLower(lst[i]); +- Efree(lst); ++ if (!Conf.movres.ignore_transience) { ++ lst = EwinListTransientFor(ewin, &num); ++ for (i = 0; i < num; i++) ++ EwinLower(lst[i]); ++ Efree(lst); ++ } + + if (call_depth == 1) + { diff --git a/debian/patch/series b/debian/patch/series index e78cc32..3cb99e5 100644 --- a/debian/patch/series +++ b/debian/patch/series @@ -3,3 +3,4 @@ 002_as_needed.patch 003_compmgr_shape.patch 004_activate_noraise.patch +005_ignore_transience.patch