summary refs log tree commit diff
path: root/xevents.c
Commit message (Collapse)AuthorAgeFilesLines
* cvsimportokan2015-11-121-2/+2
|\ | | | | | | | | | | | | | | | | | | | | | | | | * refs/heads/master: more client vs screen context differences If a client sets hints, honor them for kb resize requests, just like we do for mouse based resize requests. 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. pledge "stdio rpath proc exec" cwm before main event loop, after init/setup - mostly for menu building. 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. Use position on root to figure out region. Start cleaning up name vs function differences; replace magic numbers. Clean up unused defines. 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.
| * Start cleaning up name vs function differences; replace magic numbers.okan2015-11-101-2/+2
| |
* | cvsimportokan2015-08-281-3/+3
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * refs/heads/master: (21 commits) Lost fix from r1.112; add comment. Mechanical change: group->gc Add consistent checks against NULL. Move client cycle grab/ungrab into a more relevant place; while here, update comments about why we need to grab/ungrab the keyboard. Re-add lost chunk in group_cycle from r1.113. Further simplify _NET_WM_DESKTOP handling using new group_assign(). oops; remove left over debug print 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). 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. Implement _NET_CLIENT_LIST_STACKING (from Thomas Admin), but bottom-to-top order, as per spec (notified Thomas as well). Don't allow freeze operations on fullscreen (consistent with what fullscreen does). Sort _NET_WM_STATE Atoms like the spec. 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. Add Xkb modifier to ignore mask; from Alexander Polakov. Fix whitespace. Add client freeze extension to _NET_WM_STATE Atom, allowing flag to persist. As usual with new Atoms, requires X restart. _NET_WM_STATE_STICKY implies only sticky at the group/desktop level, not position and size; based on discussion with a few. Instead of special casing the 'term' and 'lock' commands, go back to keeping them hidden; showing them has apparently caused confusion/angst. Leave command list order from .cwmrc alone; remove sort. Bring group and client cycle closer together. ...
| * Add consistent checks against NULL.okan2015-08-271-3/+3
| |
* | cvsimportokan2015-07-121-1/+1
|\|
| * styleokan2015-07-011-1/+1
| |
* | cvsimportChristian Neukirchen2015-07-011-38/+42
|\|
| * Re-implement XClientMessage handling so that we can feed screen_find andokan2015-06-301-38/+42
| | | | | | | | | | | | | | | | client_find valid resources as needed, relieving the need for screen_find to ungracefully handle invalid root windows. Removes a long standing XXX. Should theoretically allow XClientMessage handling on more than one X screen. Alter callers of screen_find to handle failures.
* | cvsimportChristian Neukirchen2015-01-221-1/+2
|\|
| * Switch to limits.h; replace MAXPATHLEN and MAXHOSTNAMELEN with PATH_MAXokan2015-01-191-1/+2
| | | | | | | | | | | | and HOST_NAME_MAX+1, respectively. ok doug@
* | cvsimportokan2014-09-271-1/+1
|\|
| * these have nothing to do with 'sticky', but rather group membership; rename.okan2014-09-271-1/+1
| |
* | cvsimportokan2014-09-181-5/+5
|\|
| * use similiar style for client flagsokan2014-09-151-1/+1
| |
| * screen_fromroot -> screen_findokan2014-09-071-4/+4
| |
* | cvsimportChristian Neukirchen2014-09-071-1/+1
|\|
| * Rework group names: stash the group name inside the group_ctx as opposedokan2014-09-061-1/+1
| | | | | | | | | | | | to having to manage an array outside in screen_ctx for group names and shortcuts. Simplifies (and moves bits for) reading, and constructing data for, EWMH's _NET_DESKTOP_NAMES.
* | cvsimportokan2014-02-031-1/+1
|\|
| * Move redundant bits from screen_init (while dealing with existingokan2014-02-031-1/+1
| | | | | | | | | | | | clients) directly into client_init, performing the X roundtrip only once. With the previous change in maprequest, this moves decision making into one place for creating new clients.
* | cvsimportokan2014-02-021-6/+3
|\|
| * Move redundant window attr fetch from maprequest directly intookan2014-02-021-6/+3
| | | | | | | | client_init and perform that X roundtrip only once.
* | cvsimportokan2014-01-301-1/+0
|\|
| * Move cwm_status around to avoid header fu, and remove extraneous signalokan2014-01-301-1/+0
| | | | | | | | header from xevents.c; noticed by Christian Neukirchen.
* | cvsimportokan2014-01-291-5/+5
|\|
| * Merge keybinding and mousebinding queues into using the same mergedokan2014-01-291-5/+5
| | | | | | | | | | struct, binding; they were essentially the same accept for what was 'pressed', keysym or button.
* | cvsimportokan2014-01-281-2/+11
|\|
| * The EWMH spec states that if the cardinal returned is 0xFFFFFFFF (-1)okan2014-01-281-2/+11
| | | | | | | | | | | | then the window should appear on all desktops, which in our case is assigned to group 0. Found to fix stalonetray due to the non-ewmh aware range checking in group_movetogroup(); from Thomas Adam.
* | cvsimportokan2014-01-241-10/+6
|\|
| * Somewhat streamline event loop/restart/quit handling; most notableokan2014-01-221-10/+6
| | | | | | | | | | | | | | | | change allows a restart to trigger proper teardown first, even though teardown is not (yet) complete. After some discussion with oga@nicotinebsd.org regarding a more complicated version/idea.
* | cvsimportokan2014-01-211-3/+3
|\|
| * merge KBFLAG_NEEDCLIENT and MOUSEBIND_CTX_*; brings kbfunc and mousefuncokan2014-01-201-3/+3
| | | | | | | | bits even closer.
* | cvsimportokan2014-01-031-2/+2
|\|
| * use consistent typesokan2014-01-031-2/+2
| |
* | cvsimportokan2014-01-031-2/+12
|\|
| * Accept _NET_CURRENT_DESKTOP ClientMessage; from Thomas Adam, thoughokan2014-01-021-1/+7
| | | | | | | | instead of group toggle, group only.
| * Accept _NET_WM_DESKTOP clientmessage; from Thomas Adamokan2014-01-021-0/+4
| |
| * bring mousefunc closer to kbfuncokan2014-01-021-1/+1
| |
* | cvsimportokan2013-12-131-4/+4
|\|
| * stray space and sort while hereokan2013-12-131-4/+4
| |
* | cvsimportChristian Neukirchen2013-12-131-0/+2
|\|
| * ICCCM explicitly states that server time (CurrentTime) should *not* beokan2013-12-121-0/+2
| | | | | | | | | | | | | | | | | | | | | | 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@
* | cvsimportokan2013-12-111-2/+4
|\|
| * Add client wrapper for XWMHints to support XA_WM_HINTS in PropertyNotifyokan2013-12-111-0/+3
| | | | | | | | events; based off a diff from Thomas Adam.
| * Remove extra work and simplify client state handling.okan2013-12-111-2/+1
| |
* | cvsimportokan2013-12-021-21/+10
|\|
| * Since we use IconicState as our hidden state, check for the hidden flagokan2013-12-021-2/+4
| | | | | | | | | | | | | | | | and unmanage the client if we're not hidden (basically if NormalState) during an UnmapNotify event. Resolves an issue with mplayer going fullscreen while not using NetWM hints; behaviour regression reported by Ido Admon.
| * Remove the option to bind a key by keycode with brackets; it neverokan2013-11-271-3/+1
| | | | | | | | | | | | | | worked (and no one complained!). While it's fairly easy to fix, users should be using keysym names and not keycodes. Discussed at length months ago with todd@, matthieu@ and Owain.
| * Rewrite active/inactive client handling in client_setactive();okan2013-11-271-16/+5
| | | | | | | | | | | | | | | | | | | | | | 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.
* | cvsimportokan2013-11-121-16/+4
|\|
| * Alter the r1.35 of event.c race fix. Remove the forward looking eventokan2013-11-121-16/+4
| | | | | | | | | | | | | | | | | | | | | | | | 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.