summary refs log tree commit diff
path: root/client.c
Commit message (Collapse)AuthorAgeFilesLines
* Teach client_current() to use a screen to find the current client instead ofokan2019-03-071-5/+12
| | | | | iterating over all (fallback if no screen provided for now). Initially convert trivial uses of client_current().
* check cc->gc directlyokan2019-03-071-4/+2
|
* gc clientq inside groups, instead use the better maintained one per-screenokan2019-03-071-7/+12
|
* Selectively hide and show clients based on state; merge client_unhide() andokan2019-02-281-13/+4
| | | | client_show().
* simplify screen 'area' usage for initial client placementokan2019-02-231-13/+8
|
* restore order from before r1.248 (vtile/vtile containment changes).okan2019-02-221-2/+1
|
* Rename internal functions to delinate between client remove, delete and xprotookan2019-02-221-2/+2
| | | | | delete; 'window-close' is now the proper action, but 'window-delete' as an alias will remain until more interesting changes require breaking configs.
* Limit vtile/htile actions to clients fully within the screen of master client.okan2019-02-221-12/+29
| | | | from Charles A Daniels.
* Allow 'transientfor' clients to inherit group and bwidth either during init orokan2018-11-131-16/+21
| | | | | | via property notify events. Previously only the flags were set but nothing was in the path to apply said flags and/or bwidth. Required slight of re-orgnaization of client_init.
* Use the original client border width to adjust initial placement of clientsokan2018-11-081-0/+7
| | | | | | | | | | | containing {P,US}Position requests where they are explicitly set to 'ignore' in cwmrc(5); clients are unaware that their border will be altered (removed in this case) when calcuating position and thus end up a factor of their original border width off once mapped by cwm(1). cwm(1) will essentially shift the client to the edge if the original request's position and border match. Window offset noticed by at least Andre Stoebe via bugs@, and others since (and likely before). Thanks!
* Use screen's saved view instead of re-querying the server.okan2018-02-061-9/+4
|
* As done for buttonrelease, work specific un-cycling and un-highlighting actionsokan2017-12-291-21/+1
| | | | | | | | | into the keyrelease event, only performing what's actually needed for each; should result in much fewer events against keyreleases. No intended behaviour change. Additionally, like we do for group membership, grab the keyboard only when required for cycling.
* add helper function client_show to bring together like actions for unhide/raiseokan2017-12-291-0/+9
|
* Fix a few comments and while here, wrap some long lines.okan2017-12-221-16/+10
|
* Add support for _NET_WM_STATE_SKIP_PAGER and _NET_WM_STATE_SKIP_TASKBAR; eerilyokan2017-12-191-1/+15
| | | | | | | close to cwm's 'ignore'. Roughly based on an initial diff from Walter Alejandro Iglesias, but with support for both Atoms and without cwm-based bindings.
* Ensure clients stay within the viewable bounds on placement, even with emptyokan2017-05-051-8/+8
| | | | borders; based on a patch from Vadim Vygonets.
* Clean up, unify and accurately calculate edge distance with client move/resizeokan2017-05-011-0/+18
| | | | | | actions, so as to not lose windows off the edge. inspired by diffs (and feedback) from Vadim Vygonets.
* Switch bwidth type; unfortunately X11 is inconsistent.okan2017-04-261-5/+5
|
* sortokan2017-04-241-10/+10
|
* Raise the previously focused window, instead of the previous window in theokan2017-04-241-1/+3
| | | | | cycle list; seems to match behaviour of other wm's; from Walter Alejandro Iglesias.
* For {h,v}tile, instead of keeping the master client's {h,v} geometry, expand itokan2017-04-241-0/+2
| | | | | | | to %50 of the area, then fill in the remaining space with the other clients in the same group; from Gerrit Meyerheim. support from ajacoutot.
* Call client_resize instead of client_move after client_placecalc since the sizeokan2017-02-061-1/+1
| | | | | | may also change. from Vadim Vygonets
* When a window has a user or program specified position, ensure the edge of theokan2016-12-191-11/+13
| | | | | final position is at least viewable and warp'able by the difference of bwidth; prevents mapping windows completely off the virtual screen.
* stray newlinesokan2016-12-061-1/+0
|
* Set dim.{x,y} during client_init and update on resize, instead ofokan2016-12-061-3/+4
| | | | (re)calculating only when applying hints.
* Refactor callbacks to take a void * so as to not try and generalize intookan2016-10-181-6/+6
| | | | | | | | client_ctx in keypress and buttonpress event handlers; pass appropriate *ctx's based on context. While here, limit some globals, replace defines with appropriate variables and fix some naming.
* Check the ptr bounds in the new client during cycling, since not allokan2016-10-061-0/+4
| | | | | actions do ptrsave, such as restoring client geometry; adapted from a diff by Vadim Vygonets.
* Calculate client nameqlen in client_setname(), the only place it'sokan2016-10-041-6/+7
| | | | needed/used.
* Defaults are split between defines and conf_init(); normalize these, asokan2016-10-031-1/+1
| | | | well as give 'sticky' groups its own variable.
* client_ptrwarp should not deal with unhiding or raising clients (non ptrokan2016-10-031-5/+1
| | | | | 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.
* Set the initial ptr position during client init, instead of waitingokan2016-09-301-12/+7
| | | | | until (maybe) a ptrwarp call. Likewise, explicitly ensure an inbounds ptr position (same as initial) when saving.
* de-static client_inbound()okan2016-09-201-2/+1
|
* Get rid of curcc, instead cycle through the queue; removes the need forokan2016-09-201-20/+12
| | | | client_none().
* During init, query screen for _NET_ACTIVE_WINDOW and set that client asokan2016-09-161-5/+5
| | | | | | | | 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).
* Some clients fail to setup hints at all, so initalize for them; falloutokan2016-09-141-0/+1
| | | | | | from r1.218 switching to malloc - clearly missed this case. found the hard way by brynet@
* Fix-up a few simple uses of client_current(): check CLIENT_ACTIVE flagokan2016-09-141-6/+6
| | | | instead of relying on curcc.
* init labelokan2016-09-131-0/+1
|
* Switch to just malloc since we need initialize most everything anyway.okan2016-09-121-5/+7
|
* Simplify toggling flags; from Vadim Vygonets.okan2016-09-021-15/+3
|
* Do not draw borders on ignored clients when returning from fullscreen;okan2016-09-011-1/+2
| | | | from Vadim Vygonets.
* Remove redundant minimum client size adjustment (minw and minh areokan2016-09-011-3/+0
| | | | always positive since r1.214); from Vadim Vygonets.
* If a client sets hints, honor them for kb resize requests, just like weokan2015-11-121-0/+2
| | | | | | do for mouse based resize requests. Based on a patch from Vadim Vygonets.
* Partial revert of replacing screen_area() with region_find(); until aokan2015-11-111-48/+46
| | | | | | 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.
* Start cleaning up name vs function differences; replace magic numbers.okan2015-11-101-3/+3
|
* Extend region to include both view and work areas; switch tookan2015-11-091-46/+48
| | | | | | | 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.
* Only when mapping clients from an initial wm start or restart, query theokan2015-09-231-0/+10
| | | | | | | pointer and if it matches the child window, activate it; new clients will not need to make this roundtrip to the server. Based on a patch from Preben Guldberg.
* Mechanical change: group->gcokan2015-08-271-7/+7
|
* Add consistent checks against NULL.okan2015-08-271-4/+5
|
* Move client cycle grab/ungrab into a more relevant place; while here,okan2015-08-271-0/+4
| | | | update comments about why we need to grab/ungrab the keyboard.
* Split out sticky mode checks and the restoring of a client's group andokan2015-08-251-3/+11
| | | | | _NET_WM_DESKTOP from the config-based auto-grouping; no (intentional) behavior changes. Needed for further work in cleaning up this area.