okan
ee0ce74a2f
Allow 'transientfor' clients to inherit group and bwidth either during init or
...
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.
2018-11-13 17:37:13 +00:00
okan
2fda12947a
Use the original client border width to adjust initial placement of clients
...
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!
2018-11-08 15:49:42 +00:00
okan
96465e4cd4
Use screen's saved view instead of re-querying the server.
2018-02-06 15:05:20 +00:00
okan
73d422515c
As done for buttonrelease, work specific un-cycling and un-highlighting actions
...
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.
2017-12-29 18:50:43 +00:00
okan
832edccdc9
add helper function client_show to bring together like actions for unhide/raise
2017-12-29 12:54:54 +00:00
okan
3668d8b165
Fix a few comments and while here, wrap some long lines.
2017-12-22 21:21:44 +00:00
okan
c7619bea34
Add support for _NET_WM_STATE_SKIP_PAGER and _NET_WM_STATE_SKIP_TASKBAR; eerily
...
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.
2017-12-19 14:30:53 +00:00
okan
7aacbe28e4
Ensure clients stay within the viewable bounds on placement, even with empty
...
borders; based on a patch from Vadim Vygonets.
2017-05-05 14:14:19 +00:00
okan
c6ed26e240
Clean up, unify and accurately calculate edge distance with client move/resize
...
actions, so as to not lose windows off the edge.
inspired by diffs (and feedback) from Vadim Vygonets.
2017-05-01 12:54:55 +00:00
okan
8bbf0afc60
Switch bwidth type; unfortunately X11 is inconsistent.
2017-04-26 21:10:54 +00:00
okan
9edb3399b6
sort
2017-04-24 13:31:19 +00:00
okan
0b5e66ec4d
Raise the previously focused window, instead of the previous window in the
...
cycle list; seems to match behaviour of other wm's; from Walter Alejandro
Iglesias.
2017-04-24 12:27:32 +00:00
okan
1d5e421839
For {h,v}tile, instead of keeping the master client's {h,v} geometry, expand it
...
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.
2017-04-24 12:18:04 +00:00
okan
d94ddf7b8f
Call client_resize instead of client_move after client_placecalc since the size
...
may also change.
from Vadim Vygonets
2017-02-06 18:10:28 +00:00
okan
1eaac10a9a
When a window has a user or program specified position, ensure the edge of the
...
final position is at least viewable and warp'able by the difference of bwidth;
prevents mapping windows completely off the virtual screen.
2016-12-19 14:17:26 +00:00
okan
13e3ebc448
stray newlines
2016-12-06 21:59:33 +00:00
okan
a623680c7e
Set dim.{x,y} during client_init and update on resize, instead of
...
(re)calculating only when applying hints.
2016-12-06 21:00:13 +00:00
okan
4811ec0433
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.
While here, limit some globals, replace defines with appropriate variables and
fix some naming.
2016-10-18 17:03:30 +00:00
okan
4e1d180946
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.
2016-10-06 14:30:05 +00:00
okan
a7e1d9acfc
Calculate client nameqlen in client_setname(), the only place it's
...
needed/used.
2016-10-04 15:52:32 +00:00
okan
6889482fc7
Defaults are split between defines and conf_init(); normalize these, as
...
well as give 'sticky' groups its own variable.
2016-10-03 14:42:34 +00:00
okan
3881d6ad85
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.
2016-10-03 13:41:30 +00:00
okan
5a1d71fd93
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.
2016-09-30 20:55:54 +00:00
okan
489250a384
de-static client_inbound()
2016-09-20 19:11:19 +00:00
okan
d9f512008b
Get rid of curcc, instead cycle through the queue; removes the need for
...
client_none().
2016-09-20 18:21:32 +00:00
okan
9b943acf32
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).
2016-09-16 14:32:02 +00:00
okan
faafc6dd35
Some clients fail to setup hints at all, so initalize for them; fallout
...
from r1.218 switching to malloc - clearly missed this case.
found the hard way by brynet@
2016-09-14 21:00:24 +00:00
okan
b0ab7f2e87
Fix-up a few simple uses of client_current(): check CLIENT_ACTIVE flag
...
instead of relying on curcc.
2016-09-14 19:45:33 +00:00
okan
237d1b1cf5
init label
2016-09-13 17:42:58 +00:00
okan
14d946c938
Switch to just malloc since we need initialize most everything anyway.
2016-09-12 13:48:41 +00:00
okan
6c5b694356
Simplify toggling flags; from Vadim Vygonets.
2016-09-02 15:08:44 +00:00
okan
b9b225cb85
Do not draw borders on ignored clients when returning from fullscreen;
...
from Vadim Vygonets.
2016-09-01 18:38:52 +00:00
okan
0aaaf77e6b
Remove redundant minimum client size adjustment (minw and minh are
...
always positive since r1.214); from Vadim Vygonets.
2016-09-01 18:34:04 +00:00
okan
6e55f9d89b
If a client sets hints, honor them for kb resize requests, just like we
...
do for mouse based resize requests.
Based on a patch from Vadim Vygonets.
2015-11-12 18:33:30 +00:00
okan
a7bbf5197e
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.
2015-11-11 14:22:01 +00:00
okan
0abb5fd0f1
Start cleaning up name vs function differences; replace magic numbers.
2015-11-10 20:05:33 +00:00
okan
ffc7945b8d
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.
2015-11-09 20:03:29 +00:00
okan
afa59e563a
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.
Based on a patch from Preben Guldberg.
2015-09-23 14:09:40 +00:00
okan
cc66816c13
Mechanical change: group->gc
2015-08-27 18:53:14 +00:00
okan
72c4ff3268
Add consistent checks against NULL.
2015-08-27 18:42:56 +00:00
okan
db9c5cf159
Move client cycle grab/ungrab into a more relevant place; while here,
...
update comments about why we need to grab/ungrab the keyboard.
2015-08-27 18:40:09 +00:00
okan
66a2bc1f37
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.
2015-08-25 18:29:10 +00:00
okan
ee0c4ddc88
Implement _NET_CLIENT_LIST_STACKING (from Thomas Admin), but
...
bottom-to-top order, as per spec (notified Thomas as well).
2015-08-24 15:42:57 +00:00
okan
555cb59fca
Don't allow freeze operations on fullscreen (consistent with what
...
fullscreen does).
2015-08-24 14:57:19 +00:00
okan
a0e868af33
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.
2015-08-23 17:31:20 +00:00
okan
ba02c63913
Fix whitespace.
2015-08-21 16:52:37 +00:00
okan
1e8d4a7d04
Add client freeze extension to _NET_WM_STATE Atom, allowing flag to
...
persist. As usual with new Atoms, requires X restart.
2015-08-21 16:30:02 +00:00
okan
d01e312b01
_NET_WM_STATE_STICKY implies only sticky at the group/desktop level, not
...
position and size; based on discussion with a few.
2015-08-21 16:14:39 +00:00
okan
5640e2e0a3
Bring group and client cycle closer together.
2015-08-21 15:52:49 +00:00
okan
56fb99c70c
style
2015-07-01 14:36:42 +00:00