okan
b276a2ef00
ICCCM explicitly states that server time (CurrentTime) should *not* be
...
used for focus events, but rather the timestamp of the generated event.
Track the last event timestamp and send it down for a WM_TAKE_FOCUS
ClientMessage. I suspect we should do this for clients that don't
announce this Atom as well, though the raciness gets us into a bind.
Solves focus order issue since WM_TAKE_FOCUS; fix verified by sthen@
ok sthen@
2013-12-12 20:15:07 +00:00
okan
7e0749b0b1
Add client wrapper for XWMHints to support XA_WM_HINTS in PropertyNotify
...
events; based off a diff from Thomas Adam.
2013-12-11 15:41:11 +00:00
okan
0d9b1becff
Remove extra work and simplify client state handling.
2013-12-11 14:16:09 +00:00
okan
23a1abdd8a
Stash Class and WM Hints in client_ctx
2013-12-11 14:09:21 +00:00
okan
5e67a12262
like gap, make snapdist per screen
2013-11-27 18:34:34 +00:00
okan
fa25915a75
Rewrite active/inactive client handling in client_setactive();
...
client_leave() served no real purpose, likewise no reason to handle
LeaveNotify events since an EnterNotify will process the next active
client (and we don't have anything important to process anyway), so
xev_handle_leavenotify() goes as well. Allows a simplification of
client_mtf() and client_cycle_leave() for clarity. While here, unify a
few client_current() checks.
No intended behaviour change.
2013-11-27 00:01:23 +00:00
okan
2937b2066f
Alter the r1.35 of event.c race fix. Remove the forward looking event
...
queue check (removing the need for a server grab/ungrab) - if the client
is going away, let it fall all the way through to a DestroyNotify event.
There's no longer a need for us to manually destroy a client ourselves
(removing yet another server grab/ungrab). Instead, when the
UnmapNotify event is synthetic, simply set the state to Withdrawn (as
per ICCCM), else Iconic (in our case 'hidden').
Verified with test case from the 2009 race which was the original reason
for r1.35 of event.c.
2013-11-12 21:25:00 +00:00
okan
3bb928a1c2
stash WMProtocols in flags
2013-11-08 17:35:12 +00:00
okan
b5915eb989
The only reason we need to keep XSizeHints in our client_ctx is for
...
flags, so just add one to hints; consolidates sizehints and shrinks.
Additionally don't abuse PSize for XGetWMNormalHints() failures.
2013-11-02 19:13:56 +00:00
okan
06eb13dfd9
re-add support for WM_TAKE_FOCUS, and additionally this time only call
...
XSetInputFocus() for clients that have the InputHint; latter fix
discovered by Valery Masiutsin with a PoC patch - solves keyboard input
focus loss for java apps.
2013-11-01 14:07:19 +00:00
okan
6e17b41f56
A client_delete should behave differently depending on whether the
...
triggering event was unmap (with pending destroy) log destroy; we only
need to grab/ungrab the server lock, set WithdrawnState and
XRemoveFromSaveSet clients coming from an unmap event - doing so for
clients coming from destroy are already gone, hence we generate errors.
2013-10-25 19:46:16 +00:00
okan
5b733a152d
wrap key ungrab like btn ungrab, for it'll be used again
2013-10-20 01:55:32 +00:00
okan
a2013ee9dd
Using xu_btn_ungrab() buttons during client_leave doesn't work (error
...
BadValue) when the modifier is already AnyModifier . Instead alter
xu_btn_ungrab() to ungrab AnyButton/AnyModifier and call it only when a
client is coming into focus in client_setactive(), instead of iterating
over ignore mods - matches how we handle key grabs.
2013-10-19 19:39:34 +00:00
okan
6ac51b8e41
unify type; no change
2013-10-03 13:51:57 +00:00
okan
ca416b6b82
max -> nitems
2013-07-16 14:04:44 +00:00
okan
ae4ab06559
shuffle down protoypes
2013-07-15 23:53:19 +00:00
okan
4119b5c065
simplify atom handling; allows us to limit to one round-trip to server
...
for gathering Atoms.
2013-07-15 14:50:44 +00:00
okan
dd10412804
since the root and event window are the same in the case of a button
...
event on the screen's root window, there's no need to pass down the
entire XButtonEvent event, at least to group_menu(), the only callback
which takes an argument at this point; instead use the already populated
screen.
2013-07-09 01:24:49 +00:00
okan
9bf2498d7e
add support for mouse based group {,r}cycle; from Rodrigo Mosconi. not
...
bound by default.
2013-07-08 18:39:20 +00:00
okan
1f244fe29c
move kbfunc and mousefunc closer together
2013-07-08 18:19:22 +00:00
okan
a493734066
clarify kbd vs mouse functions
2013-07-08 16:32:51 +00:00
okan
234b8214df
move Cursors into conf.
2013-06-17 17:11:10 +00:00
okan
6059073a5f
move synthetic responses and have client_msg only work with WM_PROTOCOLS,
...
since that's all ClientMessageEvent is for anyway.
2013-06-10 21:37:30 +00:00
okan
692d341dfc
fix type in a ClientMessage (xu_sendmsg).
2013-05-27 23:20:45 +00:00
okan
be1a7a3f5c
alter conf_grab(_kbd) to first ungrab AnyKey/AnyModifier, then proceed
...
to grab keys in keybindingq. we don't need to ungrab/grab on every
addition to the queue, just once with a complete keybindingq; simplify
grabbing keys per screen (during init) and during a MappingNotify.
while here, change conf_grab_{kbd,mouse} to require only a Window.
2013-05-23 16:52:39 +00:00
okan
532f132194
move validation of pointer Button into conf_mousebind so we check
...
validity during the parse phase and not bother adding it to the queue,
instead of each time a client needs to grab (when it's too late);
furthermore, make this a config error, stop parsing and load the
default config.
2013-05-22 16:32:15 +00:00
okan
421bf22ac7
handle _NET_WM_STATE ClientMessage; from Alexander Polakov.
2013-05-21 00:29:20 +00:00
okan
284af4ca0c
add support for _NET_WM_STATE_MAXIMIZED_{HORZ,VERT}; from Alexander Polakov.
...
while I'm unsure of the final look of _NET_WM_STATE, there's no reason
to delay this support.
2013-05-20 21:13:58 +00:00
okan
270df196ac
- configure menuwin with the screen, then create the xft drawable using
...
the menu window since that's the only place on which we draw
- elminate the need to change the drawable on every font draw
2013-05-20 20:21:04 +00:00
okan
5b4c55616a
move the 2 small font helper functions to xutil.c
2013-05-19 23:38:20 +00:00
okan
e41c84c752
move the rest of xft init into screen_conf, since most of it is based on
...
config parameters.
2013-05-19 23:16:29 +00:00
okan
dac00a232f
- switch border colors to Xft
...
- merge border/menu color structures/functions since they now both use Xft
- switch xu_xorcolor to operating on XftColor instead of just
XRenderColor (basically adding pixel)
- if color name allocation fails, revert back to default (this, along
with font validation should occur during config parse, but we don't
have screens setup yet - likely to change at some point)
2013-05-19 23:09:59 +00:00
okan
c84145661e
add support for _NET_CLOSE_WINDOW
2013-05-19 17:05:52 +00:00
okan
556a50d8f7
treat WM_CHANGE_STATE like other atoms
2013-05-19 17:03:55 +00:00
okan
01bfdd7b42
use XGetWMProtocols and simplify WM_PROTOCOL handling
2013-05-19 17:02:04 +00:00
okan
c637a54048
- let callers of font_draw figure out (and pass) the color instead of an
...
'active' flag.
- use strlen() inside of font_draw; the only instance where it wasn't
used happened to be ignored on a subsequent draw.
2013-05-14 12:35:56 +00:00
okan
2b926784ba
new -> init
2013-05-11 22:01:07 +00:00
okan
3a38686137
replace conf_{gap,color,font} with conf_screen since really we are
...
configuring the screen *after* parsing, just as we do a conf_client on
client manage.
2013-05-11 21:46:27 +00:00
okan
9b9e95d742
more type fixes for mask/button
2013-05-10 16:32:47 +00:00
okan
457938fbd7
fix KeySym type
2013-05-10 15:44:43 +00:00
okan
1db7cc2a18
remove group in client_delete directly.
2013-05-06 16:03:11 +00:00
okan
5acf6c147f
no need for font_{ascent,descent,height} wrappers; limit font_width to
...
just requiring xftfont.
2013-05-02 17:25:15 +00:00
okan
94e341725b
use an int in screen_init and avoid needing to cast for screen number (which).
2013-04-29 00:56:47 +00:00
okan
006a29e617
mechanical xu_{get,set}state -> xu_{get,set}_wm_state change
2013-04-17 13:57:06 +00:00
okan
302690624e
slightly rework WM_STATE set/get to make it less ambigious; will be more clear
...
on what needs to change to make it right in the end.
2013-04-17 13:52:20 +00:00
okan
a899d267fe
add conf_ignore and move group_make_autogroup to conf_autogroup to match.
2013-04-17 13:30:38 +00:00
okan
16ed8bf8e4
only a window is required to set WM_STATE. also un-confuse xu_ptr_getpos
...
by using 'win' instead of 'rootwin' so as not to imply only the root
window is queried, rather any window.
2013-04-14 16:13:17 +00:00
okan
6296efadaa
push Screenq into screen_init
2013-04-12 14:46:30 +00:00
okan
3a7596968b
add per-group vert/horiz tiling support; introduces 2 new bind commands,
...
'vtile' and 'htile'; from Alexander Polakov.
2013-01-08 15:16:04 +00:00
okan
6d123cd96d
rename {h,v}max functions for consistency; from Jan Stary
2013-01-04 16:30:03 +00:00
okan
579f981718
really these are just border colors, so adjust the define
2013-01-04 16:27:58 +00:00
okan
698530155d
get rid of struct color
2013-01-04 16:23:04 +00:00
okan
ce8ef02ed2
have screen_find_xinerama() return struct geom *reliably* instead of
...
XineramaScreenInfo; simplifies goop around the callers.
2013-01-02 16:26:34 +00:00
okan
ccbb1f1529
least intrusive way to plug a memleak when unbinding a duplicate key for
...
kbfunc_cmdexec; from Tiago Cunha
2013-01-01 14:33:52 +00:00
okan
0957fbbee2
make num of groups no longer off-by-one; from Alexander Polakov
...
note that a re-exec of cwm will not rewrite the group number atom of
*existing* clients, so they will remain off-by-one until each client has
its atom updated, or of course a restart of X.
2013-01-01 14:19:56 +00:00
okan
dc1e3a8843
gc unused cmd 'flags' variable
2012-12-19 15:21:34 +00:00
okan
c565b790ed
expand CHILDMASK
2012-12-18 18:39:55 +00:00
okan
86eaf5e973
use MOUSEMASK since we already have it
2012-12-18 18:35:36 +00:00
okan
31e9fe4dcd
remove unused SEARCHMASK
2012-12-18 17:44:18 +00:00
okan
e5d59c2d7b
define LockMask|Mod2Mask; no functional change
2012-12-18 17:37:39 +00:00
okan
b848a2b236
simplify config file setup; with Tiago Cunha
2012-12-18 00:14:41 +00:00
okan
479e9f769c
put a default known_hosts into conf
2012-12-17 23:54:57 +00:00
okan
75f65f399e
pull user home directory via getenv or getpwuid and stash it so we don't
...
need to do this everytime; with Tiago Cunha
2012-12-17 23:03:41 +00:00
okan
fe44d1dfce
cmap -> colormap in client_ctx
2012-12-17 18:35:26 +00:00
okan
af13c08108
stash the default screen visual and colormap in screen_ctx
2012-12-17 18:34:06 +00:00
okan
82e8ec4245
replace client highlight with a client flag
2012-12-17 17:48:57 +00:00
okan
8e67d1389c
make client_mtf static
2012-12-17 14:58:46 +00:00
okan
3a3e0383b2
create and use menuq_clear() helper; from Tiago Cunha
2012-12-17 14:32:39 +00:00
okan
980c6de1ff
screen font -> xftfont
2012-12-17 14:20:52 +00:00
okan
96cd288a2a
knf
2012-12-17 02:53:29 +00:00
okan
6900cd3612
non-trivial menu drawing rewrite, moving to Xft and solving various
...
font/color drawing issues; from Alexander Polakov
2012-12-17 02:28:45 +00:00
okan
7edabe94f2
x_setupscreen -> screen_init; no functional change.
2012-11-29 03:54:46 +00:00
okan
5947879dfb
remove dead extern
2012-11-29 03:34:19 +00:00
okan
3e151f8c76
add xasprintf() for upcoming changes.
2012-11-28 14:32:44 +00:00
okan
fad4798e5b
replace hand rolled font_make() with XftFontOpenName() and merge into
...
font_init().
2012-11-28 14:14:44 +00:00
okan
04d4ed7b7e
fix some warnings; inspired by a diff from Thordur Bjornsson.
2012-11-08 20:18:19 +00:00
okan
76b0874b4c
get rid of the xfree() wrapper around free(); from Tiago Cunha.
2012-11-07 20:34:39 +00:00
okan
c53c1af2db
spacing
2012-11-07 14:40:51 +00:00
okan
4b84287d19
tab completion support for menus; from Alexander Polakov.
...
ok sthen@ on an older incarnation
2012-11-07 14:39:44 +00:00
okan
620af2e52d
no longer a reason to carry conf_path in struct conf, so dice.
2012-10-31 22:06:24 +00:00
okan
4fb420514d
replace 'reload' with 'restart', which merely re-exec's cwm using the
...
existing argv; same idea with respect to argv saving as Alexander
Polakov. reload support was half-complete and is getting in the way.
agreed to by many
2012-10-31 19:30:19 +00:00
okan
86524e21dd
extend client_resize so that it can know when to reset max flags and
...
bwidth; this allows a client to be resized from a max state, which now
gets treated like a non-max'd client. based on a diff that does part of
this in a different way from Alexander Polakov.
2012-09-09 19:47:47 +00:00
okan
0e8815dfb0
re-use geom struct in client_ctx (saved)geometry.
2012-07-13 17:01:04 +00:00
okan
186a78ff1e
convert xmax/ymax uses to view geometry.
2012-07-13 15:21:35 +00:00
okan
cc08aef0df
introduce screen "view" area and "work" area (gap applied) to simplify
...
various blocks that require understanding the screen geometry.
2012-07-13 14:18:04 +00:00
okan
cb893d0aa9
querying for Xinerama should be done per display, not per screen, so
...
move chuck to display init; allows some shuffling to occur limiting
screen_init_xinerama()'s scope while keeping order intact.
2012-07-06 14:18:00 +00:00
okan
1124ee5cc1
the display's width and height are updated after an XRandR event so we
...
don't need to pass down the new values to screen_update_geometry(); so
just read the width/height values directly for both uses of
screen_update_geometry(). prep for further changes in this area.
2012-07-05 17:35:13 +00:00
okan
f98e123bfc
re-implement atom handing; makes for a normalized and more consistent
...
separation between cwm and ewmh. seen by a few.
2012-07-03 13:49:03 +00:00
okan
490ef6a7df
instead of using the menu window for _NET_SUPPORTING_WM_CHECK, create a
...
dummy one to use instead; allows us to not have to wait for menu_init(),
so re-shuffle _NET_SUPPORTED slightly.
ok sthen@
2012-05-16 01:17:14 +00:00
okan
ac82403a51
cycle through other common cycling modifiers; based on a diff from
...
Alexander Polakov.
ok sthen@
2012-05-16 01:09:17 +00:00
okan
dd5bfdb064
convert from deprecated XKeycodeToKeysym to XkbKeycodeToKeysym
...
ok sthen@
2012-05-16 01:04:36 +00:00
okan
57766d8606
altpersist->cycling to be more clear that this is for cycling mod
...
persistence; based on a diff from Alexander Polakov, in preparation for
looping through other potential cycling modifiers.
2012-05-13 15:17:13 +00:00
okan
796b32123d
add WM_TRANSIENT_FOR event support: moves dialogs, toolbars and such to
...
the group of the main application window; based on a diff from Alexander
Polakov with CLIENT_IGNORE flag suggestion from oga@.
ok oga@
2011-09-13 08:41:57 +00:00
okan
82d31aec1d
allow configurable menu font color; from Alexander Polakov with a tweak
...
from me.
ok oga@
2011-09-08 12:35:33 +00:00
oga
44d8b1d3ac
Make flavours of maximisation additive.
...
i.e. horiz-max + vertmax = full maximisation. full - horiz = vertmax.
etc.
Martynas wrote something like this once, so I did okan, this version
seems to finally deal with the corner cases.
ok okan@.
2011-09-04 16:59:31 +00:00
okan
b852a73a60
split off window hints from geometry so we don't need to carry them all
...
around when dealing with {,h,v}max. same idea from oga.
2011-09-03 09:42:33 +00:00
okan
325129c6ba
simplify color initialization.
...
ok oga@
2011-09-03 09:25:39 +00:00
okan
142a36a0c0
Add {r,}cycleingroup to cycle through clients belonging to the same
...
group as the active client (as opposed to all unhidden clients); from
Alexander Polakov, with a tiny tweak requested by oga.
ok oga@
2011-09-03 09:20:58 +00:00
okan
b51f8e6a99
"defaultfont" is unclear (and confusing while reading code) when it also
...
applies to the user supplied font, so rename.
ok oga@
2011-09-03 09:17:16 +00:00
okan
69ac0624cc
Clarify defines and make them not look like non-local ones; started by a
...
small diff from Thomas Pfaff.
ok oga@
2011-07-23 13:09:11 +00:00