aboutsummaryrefslogtreecommitdiffstats
path: root/screen.c (follow)
Commit message (Collapse)AuthorAgeLines
* Calculate colors using the client's visual and colormapWynn Wolf Arbor2021-04-27-5/+5
| | | | | | | | | | | | | | | As cwm was using the screen's default visual and colormap to draw all client borders, borders for windows that had a depth of 32 bits were not rendered correctly. The same happened with text in the popup menus which were recently changed to be drawn in the context of the client. This commit introduces a Visual reference for each client, and allocates all potential colors for a client's specific visual and colormap in the client_ctx struct. These colors are then used to draw client borders and popup menus. Additionally, since we touch the drawing code anyway, borders are reintroduced to the popup menus for better contrast.
* Add BSD compatibility functions and headersWynn Wolf Arbor2021-04-27-1/+1
| | | | | | | | | Original file locations in the OpenBSD tree: - lib/libc/stdlib/reallocarray.c - lib/libc/stdlib/strtonum.c - lib/libc/string/strlcat.c - lib/libc/string/strlcpy.c - sys/sys/queue.h
* Instead of using _NET_ACTIVE_WINDOW on restart, use the pointer location to ↵okan2020-03-26-11/+18
| | | | determine what client to set active. Reduces a round trip for every window.
* Trim event_mask to those that the root window actually needs.okan2020-03-26-11/+8
|
* Unrelated style fixes, consistency changes and sorting, appropriate ↵okan2020-03-18-16/+24
| | | | dosage/removal of wrappers, simplification of name queue, client cycle joins other kb/mb bound functions.
* add, then use, xvasprintf, checking for appropriate return.okan2020-03-18-5/+2
|
* Print window id in hex; while here, remove unnecessary newline.okan2019-03-08-2/+2
|
* Separate out the menu window from the client resize/move geom window; in eachokan2019-03-04-1/+46
| | | | case, create and destroy on-demand. Isolate more menu specific code.
* fix a few misplaced (and misnamed) ewmh root window functionsokan2019-03-04-3/+3
|
* _NET_WORKAREA needs ngroups, so screen_update_geometry() needs to come afterokan2019-03-04-2/+2
| | | | conf_group().
* Tie group number and name together during config.okan2019-03-01-5/+2
|
* Store the screen's visual type and colormap.okan2018-02-13-1/+3
|
* Consolidate region 'view' and 'area'.okan2018-02-13-9/+5
|
* limit scope of screen_apply_gap()okan2018-02-09-2/+4
|
* Fix wins comparison declaration since it's unsigned from XQueryTree().okan2018-01-23-4/+5
|
* Sprinkle __func__ in appropriate error messages.okan2016-10-24-2/+2
|
* Refactor callbacks to take a void * so as to not try and generalize intookan2016-10-18-5/+5
| | | | | | | | 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.
* When removing xrandr regions, ensure clients are within the bounds ofokan2016-10-04-1/+24
| | | | | | the screen; adapted from an ancient diff from Sviatoslav Chagaev. Things in this area will likely change, but put this in so it works now and serves as a reminder.
* Turn CALMWM_NGROUPS define into variable, ngroups.okan2016-10-04-2/+2
|
* During init, query screen for _NET_ACTIVE_WINDOW and set that client asokan2016-09-16-3/+4
| | | | | | | | 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).
* Partial revert of replacing screen_area() with region_find(); until aokan2015-11-11-1/+23
| | | | | | 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.
* Extend region to include both view and work areas; switch tookan2015-11-09-16/+21
| | | | | | | 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.
* Fix whitespace.okan2015-08-21-5/+5
|
* Re-implement XClientMessage handling so that we can feed screen_find andokan2015-06-30-3/+3
| | | | | | | | 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.
* region is a _ctx, so name it sookan2015-06-26-17/+17
|
* Mechanical change from xinerama to region backed areas.okan2015-06-26-9/+6
|
* collect 'gap' applicationsokan2015-06-26-11/+15
|
* Replace screen region info gathering with XRandR equivalent of Xineramaokan2015-06-26-17/+28
| | | | | queries (currently act on XRandR events anyway). Fall-back mode without XRandR is still what X provides. This removes -lXinerama.
* Switch to limits.h; replace MAXPATHLEN and MAXHOSTNAMELEN with PATH_MAXokan2015-01-19-2/+3
| | | | | | and HOST_NAME_MAX+1, respectively. ok doug@
* no need for calloc(1,.. here, malloc is fine since we initializeokan2014-10-08-2/+3
|
* make group_init work like other *_init'sokan2014-10-08-2/+4
|
* Move stuff that doesn't belong in group_init; while here, explicitlyokan2014-09-23-1/+10
| | | | initialize hideall and cycling.
* Remove duplicate client queue (mruq); instead, remove and take theokan2014-09-08-2/+2
| | | | | | global Clientq and place it inside screen_ctx since every client belongs to a screen, then use the same per screen clientq to track stacking order (the sole reason for mruq).
* more style nitsokan2014-09-07-6/+6
|
* screen_fromroot -> screen_findokan2014-09-07-3/+3
|
* gc->hidden has never consistently kept track of a group's state;okan2014-08-24-2/+1
| | | | | | | | | | group_show() and group_hide() are not the only ways a group can change state - if all clients in a group are either hidden or unhidden, then that group's state should change, as well as the various EWMH ways. Instead of trying to keep track in a wide variety of places, simply query the clients in a group before needing to take action based on the group's state. Solves long standing confusion of when a group is hidden or not.
* Purely mechanical; unify 'num', 'no' and 'shortcut'.okan2014-08-20-4/+4
|
* whitespaceokan2014-08-20-2/+2
|
* Make sure we cycle through existing client's group membership and setokan2014-02-08-1/+2
| | | | | the hidden state on the group; important to know group hidden state after a re-exec or restart of cwm (as easily seen in group menu).
* Introduce a region queue and replace screen's XineramaScreenInfo; weokan2014-02-03-23/+27
| | | | | still use Xinerama to populate the regions per screen, but will switch at a more appropriate time.
* make this XQueryTree like the otherokan2014-02-03-13/+11
|
* Move redundant bits from screen_init (while dealing with existingokan2014-02-03-12/+6
| | | | | | 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.
* No need to store screen colormap and visual; rather just use the Xokan2014-02-02-3/+1
| | | | macros in the one place they are needed.
* Unlike free(3), XFree(3) can't be passed a NULL pointer.okan2014-02-02-3/+3
|
* move some init up and shed some blank linesokan2014-01-27-6/+4
|
* use consistent typesokan2014-01-03-3/+3
|
* Teach screen_find_xinerama() to apply gap only when told to do so;okan2013-12-13-6/+12
| | | | adjust callers. Needed for an upcoming feature.
* move Cursors into conf.okan2013-06-17-2/+2
|
* - configure menuwin with the screen, then create the xft drawable usingokan2013-05-20-2/+1
| | | | | the menu window since that's the only place on which we draw - elminate the need to change the drawable on every font draw
* new -> initokan2013-05-11-2/+2
|