aboutsummaryrefslogtreecommitdiffstats
path: root/xevents.c (follow)
Commit message (Collapse)AuthorAgeLines
* client_ptrwarp should not deal with unhiding or raising clients (non ptrokan2016-10-03-1/+5
| | | | | 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.
* During init, query screen for _NET_ACTIVE_WINDOW and set that client asokan2016-09-16-2/+2
| | | | | | | | 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).
* Fix-up a few simple uses of client_current(): check CLIENT_ACTIVE flagokan2016-09-14-4/+7
| | | | instead of relying on curcc.
* Start cleaning up name vs function differences; replace magic numbers.okan2015-11-10-3/+3
|
* Add consistent checks against NULL.okan2015-08-27-4/+4
|
* styleokan2015-07-01-2/+2
|
* Re-implement XClientMessage handling so that we can feed screen_find andokan2015-06-30-39/+43
| | | | | | | | 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.
* Switch to limits.h; replace MAXPATHLEN and MAXHOSTNAMELEN with PATH_MAXokan2015-01-19-2/+3
| | | | | | and HOST_NAME_MAX+1, respectively. ok doug@
* these have nothing to do with 'sticky', but rather group membership; rename.okan2014-09-27-2/+2
|
* use similiar style for client flagsokan2014-09-15-2/+2
|
* screen_fromroot -> screen_findokan2014-09-07-5/+5
|
* Rework group names: stash the group name inside the group_ctx as opposedokan2014-09-06-2/+2
| | | | | | 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.
* Move redundant bits from screen_init (while dealing with existingokan2014-02-03-2/+2
| | | | | | 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.
* Move redundant window attr fetch from maprequest directly intookan2014-02-02-7/+4
| | | | client_init and perform that X roundtrip only once.
* Move cwm_status around to avoid header fu, and remove extraneous signalokan2014-01-30-2/+1
| | | | header from xevents.c; noticed by Christian Neukirchen.
* Merge keybinding and mousebinding queues into using the same mergedokan2014-01-29-6/+6
| | | | | struct, binding; they were essentially the same accept for what was 'pressed', keysym or button.
* The EWMH spec states that if the cardinal returned is 0xFFFFFFFF (-1)okan2014-01-28-3/+12
| | | | | | 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.
* Somewhat streamline event loop/restart/quit handling; most notableokan2014-01-22-11/+7
| | | | | | | | 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.
* merge KBFLAG_NEEDCLIENT and MOUSEBIND_CTX_*; brings kbfunc and mousefuncokan2014-01-20-4/+4
| | | | bits even closer.
* use consistent typesokan2014-01-03-3/+3
|
* Accept _NET_CURRENT_DESKTOP ClientMessage; from Thomas Adam, thoughokan2014-01-02-2/+8
| | | | instead of group toggle, group only.
* Accept _NET_WM_DESKTOP clientmessage; from Thomas Adamokan2014-01-02-1/+5
|
* bring mousefunc closer to kbfuncokan2014-01-02-2/+2
|
* stray space and sort while hereokan2013-12-13-5/+4
|
* Add support for XUrgency and matching _NET_WM_STATE_DEMANDS_ATTENTIONokan2013-12-13-1/+2
| | | | | | | ewmh hint; urgencyborder is configurable. The urgency flag will stick, even while on a client in a non-viewable group, until the client receives focus (where the border is reset). Initial diff from Thomas Adam with some changes/enhancements from me.
* ICCCM explicitly states that server time (CurrentTime) should *not* beokan2013-12-12-1/+3
| | | | | | | | | | | 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@
* Add client wrapper for XWMHints to support XA_WM_HINTS in PropertyNotifyokan2013-12-11-1/+4
| | | | events; based off a diff from Thomas Adam.
* Remove extra work and simplify client state handling.okan2013-12-11-3/+2
|
* Since we use IconicState as our hidden state, check for the hidden flagokan2013-12-02-3/+5
| | | | | | | | 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-27-4/+2
| | | | | | | 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-27-17/+6
| | | | | | | | | | | 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.
* Alter the r1.35 of event.c race fix. Remove the forward looking eventokan2013-11-12-17/+5
| | | | | | | | | | | | 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.
* A client_delete should behave differently depending on whether theokan2013-10-25-3/+3
| | | | | | | 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.
* collapse linesokan2013-07-15-7/+5
|
* simplify atom handling; allows us to limit to one round-trip to serverokan2013-07-15-6/+6
| | | | for gathering Atoms.
* bring buttonpress and keypress event handlers slightly closer togetherokan2013-07-10-9/+8
|
* move kbfunc and mousefunc closer togetherokan2013-07-08-3/+3
|
* whitespace and style fixes; from Tiago Cunha and one from me.okan2013-07-08-2/+2
|
* move synthetic responses and have client_msg only work with WM_PROTOCOLS,okan2013-06-10-2/+2
| | | | since that's all ClientMessageEvent is for anyway.
* Check for, and honour, CWStackMode and CWSibling change requests during aokan2013-06-10-2/+6
| | | | | ConfigureRequest event. Additionally, honour a border width change; detailed report and patch from Mike Small.
* alter conf_grab(_kbd) to first ungrab AnyKey/AnyModifier, then proceedokan2013-05-23-8/+6
| | | | | | | | 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.
* handle _NET_WM_STATE ClientMessage; from Alexander Polakov.okan2013-05-21-1/+5
|
* stray whitespaceokan2013-05-20-2/+2
|
* handle _NET_ACTIVE_WINDOW ClientMessage; from Alexander Polakov.okan2013-05-20-2/+10
|
* add support for _NET_CLOSE_WINDOWokan2013-05-19-1/+4
|
* treat WM_CHANGE_STATE like other atomsokan2013-05-19-6/+3
|
* simplifyokan2013-05-19-8/+7
|
* new -> initokan2013-05-11-2/+2
|
* more type fixes for mask/buttonokan2013-05-10-2/+2
|
* int type fixesokan2013-05-10-2/+2
|