The technical etc. move modes using a shaped window ("avoid server grab"
mode) only properly shaped the shape window of the first group member.
Broken since 0c16916258 - v1.0.12.
This commit changed the mode of operation from one shape window in total
to one per group member, i.e. shapes should no longer be combined.
..and drop useless fl variable in _MoveResizeMoveResume().
The technical etc. move modes using a shaped window ("avoid server grab"
mode) would create a new shape window on every edge flip, which could
only be removed by restarting e16.
Broken since 0c16916258 - v1.0.12.
- No longer just store groups that are referenced by snaps
Makes to logic somewhat simpler.
- Only and always write group configuration when changed
Previously we updated the group configuration way too often (on any
snap change).
When all groups were deleted from a window it would stop remembering
group membership.
Unfortunately this fix is not backwards compatible.
If downgrading setups where some windows have multiple groups some group
memberships will be lost.
IF sound initialization fails AND then attempting to enabling sound with
"eesh set sound.enable 1" (which didn't actually enable sound), e16
could crash.
Somewhat hacky as the compositor may discard window events if the window
destroy event is received in the same batch as the map(reparent) event,
hence the delay before destroy.
arrange.c: Highly unlikely, maybe impossible situations
backgrounds.c: False positive (I think)
dialog.c: Fix memleak/segv on realloc failure
focus.c: False positive
ewin should never be NULL with FOCUS_EWIN_NEW
main.c: False positive
eoptarg will always be set if argument requires option
menus.c: Fix memleak on malloc failure
session.c: Fix dead assignment
stacking.c: False positive
Changed code is nicer though
pager.c: False positive
ewin would never be NULL if hiwin was NULL
But rearrange for clarity anyway
ecompmgr.c: Avoid bogus issues
For obscure reasons(?) Mode.context_win may be set to some large window.
If a slideout is then shown (if the slideout doesn't fit between the
window and the screen edge), SlideoutShow() will call itself recursively
until we crash.
XGrabKeyboard() may fail if Alert*() is called from a child process
during an activated passive key grab, e.g. due to a keybinding doing
an "exec some-prog", and execl(some-prog) fails.
If XGrabKeyboard() fails the GSOD will not receive key events and only
the pointer can be used to interact with the GSOD.
Therefore we now also grab all possible keys/modifiers which should
normally include the Fn keys we want, and to some degree ensure that
other keyboard input is caught and ignored.
However, it seems that passive key grabs without modifiers may be
activated (queued) and prevent further key events to the GSOD -
presumably not a major problem in practice.
It seems that sometimes there are rendering glitches when having a tiled
backround with 0 offsets and tile size less than screen size.
In this case the desktop pixmap would be smaller than the screen size and
we rely on the repeat picture attribute in the desktop picture to get it
tiled over the entire desktop window when compositing.
However, it seems that sometimes(?) the desktop window is not properly
repainted outside the top left tile.
To fix this we now always use a full-sized background pixmap when
compositing is enabled.
I think this is an X-server bug but I haven't been able to produce a
test case demonstrating the problem.
The leak only happens when a sound file is first loaded so the leakage
will not grow indefinitely.
Also eliminate global sample_stream and sample_length.
- If current opacity property value is 0 meaning default then use
actual current opacity.
- Don't go below 10%
- Going above 100 means use default (value = 0)
Do desk/area change before placing the window.
Otherwise desk/area slides get mixed up with window slide-ins.
Also add some comments about what goes on here.
In various cases focus would not be set as intended, at least when
not focus-all-new and
click-to-focus or
not click-to-focus and pointer not in new client