Commit Graph

3445 Commits

Author SHA1 Message Date
Kim Woelders aae5938e97 Fix technical/shapewin move mode with window groups
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().
2020-05-06 15:28:53 +02:00
Kim Woelders b27ff7ee74 Fix technical/shapewin move mode through edge flip
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.
2020-05-06 15:12:40 +02:00
Kim Woelders db38aae9e6 groups.c: Fold "groups" into "group_op" IPC command 2020-05-05 22:42:08 +02:00
Kim Woelders f0029d9f63 groups.c: Add group list ipc comand 2020-05-05 22:42:08 +02:00
Kim Woelders f58ca9c26a groups.c: Eliminate _EwinInGroup() 2020-05-05 22:42:08 +02:00
Kim Woelders f5324ebd5a groups.c: Simplify _GroupDelete() some more 2020-05-05 22:42:08 +02:00
Kim Woelders d511dd782c groups: Rework group configuration saving
- 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).
2020-05-05 22:42:08 +02:00
Kim Woelders b65a31e3d4 snaps: Fix snapshot group remembering when all groups are deleted
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.
2020-05-05 22:42:08 +02:00
Kim Woelders c2e9649cd5 groups.c: Fix snapshot updating 2020-05-05 22:42:08 +02:00
Kim Woelders 9c18d93735 groups.c: Add some debug 2020-05-05 22:42:08 +02:00
Kim Woelders 0df0320da6 groups.c: Fix group deletion
The loop construct did not delete all groups.

Do group destruction after loop to avoid accessing deleted
group->num_members.
2020-05-05 22:42:08 +02:00
Kim Woelders 924518956c groups.c: Add group del command 2020-05-05 22:42:08 +02:00
Kim Woelders 1399c7bf7d groups.c: Fix showing empty group 2020-05-05 22:42:08 +02:00
Kim Woelders d28388ad70 groups.c: Fix handling groups with negative id 2020-05-05 22:42:08 +02:00
Kim Woelders cc7fe7a2fb groups.c: Mostly cosmetic tweaks 2020-05-05 22:42:08 +02:00
Kim Woelders c2be7e7c14 groups.c: _GroupEwinDestroy() -> _GroupDelete()
Drop the possibility to delete all groups to which an EWin belongs.
It wasn't possible to go down that path anyway.
2020-05-05 22:42:08 +02:00
Kim Woelders d80bf8305c groups.c: Enable popping up ewin group configuration dialogs from ipc 2020-05-05 22:42:08 +02:00
Kim Woelders 3c5f33648e groups.c: Fold "group_info" into "group" IPC command 2020-05-05 22:42:08 +02:00
Kim Woelders 32f4255270 groups.c: Refactor _GroupEwinRemove() 2020-05-05 22:42:08 +02:00
Kim Woelders 4e97cbb637 groups.c: Rename functions for more consistency
Swap a couple of arguments too.
No functional changes.
2020-05-05 22:42:08 +02:00
Kim Woelders c4026c585c groups.c: Reshuffle code to avoid forward declarations 2020-05-05 22:42:08 +02:00
Kim Woelders 02001e632d groups.c: Mostly cosmetic changes around group configuration 2020-05-05 22:42:08 +02:00
Kim Woelders 5a131b00b1 groups.c: Eliminate BuildWindowGroup() 2020-05-05 22:42:08 +02:00
Kim Woelders 864009da54 groups: Eliminate EwinGetGroups()
Not particularly useful.
2020-05-05 22:42:08 +02:00
Kim Woelders 01a2163989 Add feature to build with ASAN (--enable-gcc-asan) 2020-05-05 22:42:08 +02:00
Kim Woelders be8c4faf60 Add alsa-lib sound backend 2020-05-05 10:22:36 +02:00
Kim Woelders 47d9555861 Minor cleanups in sound players
The sample pointers will never be NULL in _Play() and _Destroy() so drop
checks.

Also drop some pointless pointer clearing.
2020-05-05 10:15:44 +02:00
Kim Woelders 26e106a613 Avoid potential crash when attempting to enable sound, cosmetics
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.
2020-05-02 11:11:10 +02:00
Kim Woelders d24cdd303b GSOD: Avoid rendering artifacts when unmapped
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.
2020-05-02 09:56:04 +02:00
Kim Woelders 42447b16d3 Minor cleanups after sound by audio player feature
- Correct configure.ac help string
- Issue warning if player is not executable

Also change sound server problem warning message from GSOD to dialog.
2020-05-02 08:12:46 +02:00
Kim Woelders 9a6825fadf Introduce path_canexec0() for convenience 2020-05-02 08:11:30 +02:00
Kim Woelders 1ea08c2075 Optionally play sounds using audio player 2020-05-01 15:42:03 +02:00
Kim Woelders 0ef79b8771 Autofoo sound configuration cosmetics 2020-05-01 14:11:26 +02:00
Kim Woelders cf552ef7f9 Enable sounds in combined configuration dialog 2020-05-01 14:11:26 +02:00
Kim Woelders 8b10610095 Espawn(): Use variable argument list 2020-05-01 14:11:26 +02:00
Kim Woelders cee07a720a groups.c: Correct debug stuff 2020-03-07 17:30:56 +01:00
Kim Woelders 7011dc150d Hide Group struct internals 2020-03-07 17:30:56 +01:00
Kim Woelders c839d0e14a src: Fix clang-analyzer complaints
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
2020-01-29 16:43:01 +01:00
Kim Woelders b6f500f3bc aclass.c: Fix valgrind complaint 2020-01-25 14:36:47 +01:00
Kim Woelders 32e9cf4535 slideouts: Fix potential crash
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.
2020-01-25 14:32:47 +01:00
Kim Woelders 031b9dd23e slideouts: Refactoring
- Split up SlideoutCalcSize().
- Move the functions to avoid forward declarations.
- Drop pointless call in SlideoutAddButton().
2020-01-25 14:32:47 +01:00
Kim Woelders b294796de2 slideouts: Use defines for directions
And correct the two incorrect ones.
2020-01-25 14:32:47 +01:00
Kim Woelders 88dba1cfff Re-indent with indent-2.2.12 2020-01-23 21:30:02 +01:00
Kim Woelders 18f9df7774 Fix unmaximizing by _NET_WM_STATE[_MAXIMIZED_...] 2020-01-23 20:30:23 +01:00
Kim Woelders 4e74e31d23 bindings: Add 'W' as alias for modifier 4 2020-01-23 20:29:51 +01:00
Kim Woelders d4278e802e windowmatches: Add some consts 2020-01-23 20:29:15 +01:00
Kim Woelders 8f1bfc4f53 Fix warnings occurring in various situations 2020-01-23 20:29:05 +01:00
Kim Woelders 7836d0cf3e windowmatches: Enable having spaces in name matches 2020-01-06 17:22:06 +01:00
Kim Woelders 4df8199d60 windowmatches: Remove some cruft 2019-12-28 10:47:15 +01:00
Kim Woelders e101ec06a7 windowmatches: Issue notice when discarding invalid one 2019-12-25 16:50:37 +01:00
Kim Woelders 36763cc7e2 windowmatches: Resurrect USE_ICON_IMAGE_FOR_CLIENT_() macros 2019-12-25 16:23:35 +01:00
Kim Woelders 4daa634a06 windowmatches: Remove ancient incorrect case values 2019-12-25 14:25:52 +01:00
Kim Woelders 57be6615d3 windowmatches: Fix use of MAKE_WINDOW_STICKY_...() macros
Looks like the last time this worked was in 0.16.8.
2019-12-25 14:25:40 +01:00
Ingo Feinerer 04ec9834d9 Add sndio sound back end 2019-08-14 15:14:45 +02:00
Kim Woelders 7af2a15fef Fix using sound in modular build
Also remove obsolete __EXPORT__s on Strlist.. functions.
2019-08-10 16:32:48 +02:00
Kim Woelders c67ebd88ba Explicitly include sys/select.h where needed
... rather than relying on it to be included via sys/time.h or sys/types.h.
2019-07-30 17:40:04 +02:00
Kim Woelders 3aec52f580 Fix potential warning
Issued by gcc9 with certain combinations(?) of build options.
2019-05-30 18:18:48 +02:00
Kim Woelders 9f84935029 Fix build without composite 2019-05-30 17:38:37 +02:00
Kim Woelders d767409ee8 Make config dialog edge flip mode changes take effect immediately
Previously it required a restart.
2019-05-18 07:08:52 +02:00
Kim Woelders e9c282c773 Forgot some 2019 2019-05-10 06:35:40 +02:00
Kim Woelders fc567497a9 GSOD: Only react to shown buttons 2019-04-25 09:40:34 +02:00
Kim Woelders 84616e4617 GSOD: Better keyboard grab
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.
2019-04-25 09:17:21 +02:00
Kim Woelders e05a7293c6 Fix timer havoc in obscure situations
Not exactly sure when, but timers were created with undefined again,
which could lead to trouble due to unintended timer deletion.
2019-04-25 09:06:06 +02:00
Kim Woelders d77444f16d Fix potential memory leak in _ScreenInitXrandr() 2019-04-25 09:06:06 +02:00
Kim Woelders 4d8f151154 Use pkg-config some more 2019-04-25 09:06:06 +02:00
Kim Woelders 5d21c40c92 Fix compositing glitches with tiled backgrounds
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.
2019-04-06 11:10:27 +02:00
Kim Woelders 8ff53d9575 Remove unused header 2019-04-06 11:10:27 +02:00
Kim Woelders 9e476fb426 Fix potential segv in pulseaudio sound handler 2019-04-06 11:10:27 +02:00
Kim Woelders 8994417b49 Fix memory leak in pulseaudio sound loader
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.
2019-04-06 11:10:27 +02:00
Kim Woelders e1a6416a04 Restore background to last set if quitting background selector 2019-04-02 18:28:08 +02:00
Kim Woelders cd99117378 Correct refresh when switching away from background "None" 2019-04-02 18:28:08 +02:00
Kim Woelders 87d4ea9f48 Don't do double-clicks on scroll wheel events 2019-03-31 20:21:50 +02:00
Kim Woelders 83d1002949 Tweak winop opacity delta mode
- 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)
2019-03-31 20:21:50 +02:00
Kim Woelders c9ad641ba8 Fix restart after choosing Restart in GSOD on e.g. segv
Mode.wm.exit_now should be set before calling SessionExit() which may
happen inside Alert().
2019-03-26 18:47:45 +01:00
Kim Woelders d3f92db637 Remove saveunders option from Miscellaneous Settings dialog
No longer generally useful.

The option is still available via the misc.save_under configuration
parameter.
2019-03-26 18:45:53 +01:00
Kim Woelders 759f3743bd Correct (disabled) debug printout 2019-03-20 20:35:19 +01:00
Kim Woelders 802f34f758 Introduxe ArrangeEwinCenteredOn() 2019-03-05 16:15:28 +01:00
Kim Woelders c23bca5c26 Split unplaced transient and dialog handling
Shouldn't make much difference but makes the code a bit easier to
follow.
2019-03-05 16:15:28 +01:00
Kim Woelders 524540f7a8 Fix transient placement involving desk/area change (take 2)
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.
2019-03-05 16:15:28 +01:00
Kim Woelders 6dab84f6c6 Introduce EwinFindGroupMember() 2019-03-05 16:15:28 +01:00
Kim Woelders 84788b993c Optionally don't slide in DeskGotoByEwin()
No actual changes yet.
2019-03-05 16:15:28 +01:00
Kim Woelders 8dcb2d3dfa Revert "Fix transient placement involving desk/area change"
Does not work properly.

This reverts commit e132f27043.
2019-03-05 16:15:28 +01:00
Kim Woelders 96b538a6e1 Warning fix for gcc 9 2019-02-10 06:08:30 +01:00
Kim Woelders 19e250321f Tweak glwin commands
- Change R to S(top)
- Add R(eset), resetting the absolute rotations too
2019-02-10 06:08:30 +01:00
Kim Woelders 077c50513d Forgot indent 2019-02-10 06:07:38 +01:00
Kim Woelders e132f27043 Fix transient placement involving desk/area change 2019-01-02 17:34:33 +01:00
Kim Woelders 0c623f1efe Remove pointless goto 2019-01-02 17:34:33 +01:00
Kim Woelders 0e0d840453 Consistently use *ALLOC() macros 2018-12-22 15:45:31 +01:00
Kim Woelders 3226edc567 Change EFREE_... macros to functions
Reduces code size by ~4k.
2018-12-22 11:44:22 +01:00
Kim Woelders b9a9946a0a Update copyright to 2018 2018-12-22 11:44:22 +01:00
Kim Woelders 22b5e58dcd Refactor/rename/use _EFREE type macros 2018-12-22 11:44:22 +01:00
Kim Woelders 0c3b5a0625 Add theme defined menu 2018-12-16 12:00:06 +01:00
Kim Woelders 17f29731f0 Enable changing only theme variant
Use e.g.
$ e16 -t :variant
$ eesh theme use :variant
2018-12-15 20:49:50 +01:00
Kim Woelders 09204d4fdb Indent 2018-12-15 18:43:11 +01:00
Kim Woelders cdccc198cd Avoid unnecesary use of MenuSetTitle() 2018-06-23 14:07:42 +02:00
Kim Woelders b01703314a More warning fixes for gcc 8 2018-04-06 04:35:33 +02:00
Kim Woelders fde462c1ca Warning fixes for gcc 8 2018-03-31 09:09:52 +02:00
Kim Woelders 982ccfe70e Fix focus-if-group-focused cases
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
2018-03-28 18:46:48 +02:00
Kim Woelders 525e7afc6b focus.c: Cosmetics 2018-03-28 18:43:22 +02:00
Kim Woelders 988ebc96e8 Trivial cleanups 2018-03-11 19:51:32 +01:00