ffd60b3cab
Get rid of 'matchname'; it's too surprising to have the menu change during client search as different potential str matches are cycled through. If there's interest, the only string that doesn't exist in the listing is the window's class - that can be added of course, but it makes the line too long imho.
okan
2016-10-24 17:16:23 +00:00
b1af1bedd0
clean up search_match_client(); no behaviour change
okan
2016-10-22 19:16:43 +00:00
0bb1be86c6
Refactor callbacks to take a void * so as to not try and generalize into client_ctx in keypress and buttonpress event handlers; pass appropriate *ctx's based on context.
okan
2016-10-18 17:03:30 +00:00
38eac7d7e9
remove another unused proto
okan
2016-10-12 16:11:15 +00:00
15bf703e1c
Rename 2 kbfunc to match closer to what they do
okan
2016-10-06 14:53:52 +00:00
987ee736b9
Add an argument to the callbacks to pass the xevent context, button or key press. This allows to remove a few hacks to duplicate functions only for behaviour changes; now differing behaviours are pushed down to the callback. Also will allow for previously unavailable actions to be bind-able down the road.
okan
2016-10-06 14:41:19 +00:00
66f5360fd4
Check the ptr bounds in the new client during cycling, since not all actions do ptrsave, such as restoring client geometry; adapted from a diff by Vadim Vygonets.
okan
2016-10-06 14:30:05 +00:00
e7dcb17e1e
More accurate to say 'toggle', rather than 'select', for group[n]/nogroup.
okan
2016-10-05 14:01:23 +00:00
c131620d7b
Add CM-a for 'nogroup' (CM-0 stays for now); update manpage to reflect.
okan
2016-10-05 13:35:17 +00:00
d40820d3f3
Stash wmname into conf.
okan
2016-10-05 13:10:59 +00:00
a37606c63f
When removing xrandr regions, ensure clients are within the bounds of the screen; adapted from an ancient diff from Sviatoslav Chagaev. Things in this area will likely change, but put this in so it works now and serves as a reminder.
okan
2016-10-04 20:15:55 +00:00
5c13775d31
Calculate client nameqlen in client_setname(), the only place it's needed/used.
okan
2016-10-04 15:52:32 +00:00
8aa5033d12
Start simplifying menu code; and in turn, remove a cursor no longer needed.
okan
2016-10-03 18:43:49 +00:00
03f5dc219e
Defaults are split between defines and conf_init(); normalize these, as well as give 'sticky' groups its own variable.
okan
2016-10-03 14:42:34 +00:00
792f85cde9
For both kb and mouse move, it is possible to grab a client and move it completely off the screen/region; instead, if the pointer is outside of the client bounds, warp the pointer to the closest edge before moving.
okan
2016-10-03 13:52:17 +00:00
a8a111dffd
client_ptrwarp should not deal with unhiding or raising clients (non ptr requests); most callers do this already - deal with the few that do not. client_ptrwarp becomes a simple wrapper (setpos) but it will be expanded.
okan
2016-10-03 13:41:30 +00:00
1d3a6905f1
remove unused proto
okan
2016-09-30 21:44:51 +00:00
1c54fc079d
Set the initial ptr position during client init, instead of waiting until (maybe) a ptrwarp call. Likewise, explicitly ensure an inbounds ptr position (same as initial) when saving.
okan
2016-09-30 20:55:54 +00:00
2d8f621b8d
Use instinsic X11 functions for key/btn/ptr grab/ungrab/regrab requests; the one line wrappers provided no value and limited altering calls where needed; additionally, most of them had but one caller.
okan
2016-09-30 18:28:06 +00:00
8b26a43bf1
Replace mousefunc_sweep_draw() with a generic menu_windraw() using va lists; use it appropriately for both window dimension and position in the respective mousefunc calls.
okan
2016-09-30 15:12:19 +00:00
f63b2e2341
Switch to XWindowEvent() pulling out events that match the mask *and* window.
okan
2016-09-30 15:05:02 +00:00
24d6348e52
no need to unmap menu window again
okan
2016-09-29 00:30:40 +00:00
0e8c706633
Mechanical change: move screen menu bits to their own struct.
okan
2016-09-29 00:21:55 +00:00
92b81d3df5
Inline Xft draw and extents wrappers; too much abstraction.
okan
2016-09-28 17:06:33 +00:00
b32989d379
Do not call sweep_draw() too early: don't yet have w/h dimensions; plus we will get a MotionNotify event right away anyway, setting required parameters.
okan
2016-09-28 15:54:54 +00:00
57b2a6cf79
Continue merging kb and mouse functions: fold mousefunc_menu_{client,cmd,group} into the respective kbfunc_menu_{client,cmd,group} functions; simply pass a flag down from config denoting mouse action behaviour.
okan
2016-09-22 14:36:03 +00:00
3947f1268a
Allow ctrl-[ for abort (esc); from Benjamin Scher Purcell
okan
2016-09-20 19:58:54 +00:00
6a53e3a859
During init, query screen for _NET_ACTIVE_WINDOW and set that client as active; while we already look at what's under the pointer, use this information first, then look under the pointer (saving that round-trip). This restores the active state to a client after restart even if the pointer is not above it (and of course the pointer is not above another client).
okan
2016-09-16 14:32:02 +00:00
2bbe111cc0
Some clients fail to setup hints at all, so initalize for them; fallout from r1.218 switching to malloc - clearly missed this case.
okan
2016-09-14 21:00:24 +00:00
b8933ebcca
Fix-up a few simple uses of client_current(): check CLIENT_ACTIVE flag instead of relying on curcc.
okan
2016-09-14 19:45:33 +00:00
a94254137c
Limit mouse resize to hints within the client; matches kbd resize behaviour.
okan
2016-09-13 13:42:28 +00:00
e1234b75b8
Switch to just malloc since we need initialize most everything anyway.
okan
2016-09-12 13:48:41 +00:00
b14a4b222d
change 'sticky' to 'stick' to toggle client stickiness (seems the default binding worked for everyone for a long time!); conflict with group sticky found by Ali Farzanrad - thanks!
okan
2016-09-12 13:47:00 +00:00
c82c3f0835
Simplify group_holds_only_hidden(); from Vadim Vygonets.
okan
2016-09-02 16:07:11 +00:00
4ac6daa27d
Fix a typo from r1.201; fixes window_grouptoggle binding.
okan
2015-11-17 15:19:19 +00:00
8aa2f317af
If a client does not set increment values, use 'moveamount' as a way to scale keyboard based resizes; extend kbfunc_amount().
okan
2015-11-17 14:32:38 +00:00
e8d77b6890
Inline the only use of mousefunc_sweep_calc.
okan
2015-11-17 14:31:28 +00:00
669631e5fa
Run pledge only on OpenBSD.
Christian Neukirchen
2015-11-16 14:47:21 +01:00
323672ace7
more client vs screen context differences
okan
2015-11-12 21:28:03 +00:00
4aca2b8764
If a client sets hints, honor them for kb resize requests, just like we do for mouse based resize requests.
okan
2015-11-12 18:33:30 +00:00
9a48836ceb
Move kb pointer movement out of the kbfunc_client_moveresize since it's got nothing to do with clients, thus doing flags work causes lots of waste and almost useless jumpy pointer movements; while here, split out move and resize since they share almost no code, just like mouse client move/resize; factor out amount and factor. Still wonder why this is here, but it works now.
okan
2015-11-12 18:26:41 +00:00
a2c066e447
pledge "stdio rpath proc exec" cwm before main event loop, after init/setup - mostly for menu building.
okan
2015-11-12 17:56:54 +00:00
00bdd48b1d
Partial revert of replacing screen_area() with region_find(); until a fix for a regression is found; this bug has been around for a long time it seems, but this change exposed it. Likely need to track clients in to and out of regions.
okan
2015-11-11 14:22:01 +00:00
09565bc423
Use position on root to figure out region.
okan
2015-11-10 22:06:57 +00:00
e20110f344
Start cleaning up name vs function differences; replace magic numbers.
okan
2015-11-10 20:05:33 +00:00
31c74e9157
Clean up unused defines.
okan
2015-11-09 20:15:23 +00:00
d7bd299819
Extend region to include both view and work areas; switch to region_find() which no longer needs to recalculate gap each time a client (or menu) is created or altered. If no RandR, fall back to display dimensions while building regions instead of during execution.
okan
2015-11-09 20:03:29 +00:00
5fcf251672
Only when mapping clients from an initial wm start or restart, query the pointer and if it matches the child window, activate it; new clients will not need to make this roundtrip to the server.
okan
2015-09-23 14:09:40 +00:00
0fdcf3f3df
On execwm, we should properly release resources before exec'ing into a new window manager; so allow CWM_EXEC_WM to assign new wm to wm_argv and pass through cwm_status (now EXECWM) so that x_teardown() gets called before exec'ing the new window manager. Removes the need for a separate x_restart() now, using new wm_argv; and consolidates errno for execvp.
okan
2015-09-16 17:58:25 +00:00
f467838e7b
Add consistent checks against NULL.
okan
2015-08-27 18:42:56 +00:00
19826222f6
Move client cycle grab/ungrab into a more relevant place; while here, update comments about why we need to grab/ungrab the keyboard.
okan
2015-08-27 18:40:09 +00:00
5391659629
Re-add lost chunk in group_cycle from r1.113.
okan
2015-08-27 17:43:44 +00:00
6d53091429
Further simplify _NET_WM_DESKTOP handling using new group_assign().
okan
2015-08-25 20:35:49 +00:00
871ed39ccf
oops; remove left over debug print
okan
2015-08-25 19:52:02 +00:00
cb60a4b917
Allowing sending a valid 'nogroup' (0) group_ctx to group_assign() (since we init all groups), though assigning the client's group to NULL for 'sticky'; use this simplification in a few places (others to follow).
okan
2015-08-25 19:49:19 +00:00
96262a6b0c
Split out sticky mode checks and the restoring of a client's group and _NET_WM_DESKTOP from the config-based auto-grouping; no (intentional) behavior changes. Needed for further work in cleaning up this area.
okan
2015-08-25 18:29:10 +00:00
dcfbc9e809
Implement _NET_CLIENT_LIST_STACKING (from Thomas Admin), but bottom-to-top order, as per spec (notified Thomas as well).
okan
2015-08-24 15:42:57 +00:00
97db17d056
Don't allow freeze operations on fullscreen (consistent with what fullscreen does).
okan
2015-08-24 14:57:19 +00:00
4269ea0463
Sort _NET_WM_STATE Atoms like the spec.
okan
2015-08-24 14:56:10 +00:00
b224945446
Move CLIENT_STICKY logic from client hide/unhide to group hide/unhide; rationale being that clients should be able to hide/unhide independently of group switching.
okan
2015-08-23 17:31:20 +00:00
ae9306748b
Add Xkb modifier to ignore mask; from Alexander Polakov.
okan
2015-08-21 16:53:48 +00:00
1d31f9000c
Add client freeze extension to _NET_WM_STATE Atom, allowing flag to persist. As usual with new Atoms, requires X restart.
okan
2015-08-21 16:30:02 +00:00
05478f061e
_NET_WM_STATE_STICKY implies only sticky at the group/desktop level, not position and size; based on discussion with a few.
okan
2015-08-21 16:14:39 +00:00
c96fd247dd
Instead of special casing the 'term' and 'lock' commands, go back to keeping them hidden; showing them has apparently caused confusion/angst.
okan
2015-08-21 16:05:55 +00:00
a79253abdc
Leave command list order from .cwmrc alone; remove sort.
okan
2015-08-21 15:55:39 +00:00
871c9f24ba
Bring group and client cycle closer together.
okan
2015-08-21 15:52:49 +00:00
54bbd88e51
Alter big move and resize bindings to match what's in cwm(1); functionally the same, but re-binding should be based on default bindings. Matches other similiar bindings.
okan
2015-08-20 14:45:15 +00:00