Commit Graph

  • 0bb1be86c6 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. okan 2016-10-18 17:03:30 +00:00
  • 38eac7d7e9 remove another unused proto okan 2016-10-12 16:11:15 +00:00
  • 15bf703e1c Rename 2 kbfunc to match closer to what they do okan 2016-10-06 14:53:52 +00:00
  • 987ee736b9 Add an argument to the callbacks to pass the xevent context, button or key press. This allows to remove a few hacks to duplicate functions only for behaviour changes; now differing behaviours are pushed down to the callback. Also will allow for previously unavailable actions to be bind-able down the road. okan 2016-10-06 14:41:19 +00:00
  • 66f5360fd4 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. okan 2016-10-06 14:30:05 +00:00
  • e7dcb17e1e More accurate to say 'toggle', rather than 'select', for group[n]/nogroup. okan 2016-10-05 14:01:23 +00:00
  • c131620d7b Add CM-a for 'nogroup' (CM-0 stays for now); update manpage to reflect. okan 2016-10-05 13:35:17 +00:00
  • d40820d3f3 Stash wmname into conf. okan 2016-10-05 13:10:59 +00:00
  • a37606c63f When removing xrandr regions, ensure clients are within the bounds of 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. okan 2016-10-04 20:15:55 +00:00
  • 5c13775d31 Calculate client nameqlen in client_setname(), the only place it's needed/used. okan 2016-10-04 15:52:32 +00:00
  • 9306c1fbd3 Turn CALMWM_NGROUPS define into variable, ngroups. okan 2016-10-04 15:18:20 +00:00
  • 8aa5033d12 Start simplifying menu code; and in turn, remove a cursor no longer needed. okan 2016-10-03 18:43:49 +00:00
  • 03f5dc219e Defaults are split between defines and conf_init(); normalize these, as well as give 'sticky' groups its own variable. okan 2016-10-03 14:42:34 +00:00
  • 792f85cde9 For both kb and mouse move, it is possible to grab a client and move it completely off the screen/region; instead, if the pointer is outside of the client bounds, warp the pointer to the closest edge before moving. okan 2016-10-03 13:52:17 +00:00
  • a8a111dffd 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. okan 2016-10-03 13:41:30 +00:00
  • 1d3a6905f1 remove unused proto okan 2016-09-30 21:44:51 +00:00
  • 1c54fc079d 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. okan 2016-09-30 20:55:54 +00:00
  • 2d8f621b8d Use instinsic X11 functions for key/btn/ptr grab/ungrab/regrab requests; the one line wrappers provided no value and limited altering calls where needed; additionally, most of them had but one caller. okan 2016-09-30 18:28:06 +00:00
  • 8b26a43bf1 Replace mousefunc_sweep_draw() with a generic menu_windraw() using va lists; use it appropriately for both window dimension and position in the respective mousefunc calls. okan 2016-09-30 15:12:19 +00:00
  • f63b2e2341 Switch to XWindowEvent() pulling out events that match the mask *and* window. okan 2016-09-30 15:05:02 +00:00
  • 24d6348e52 no need to unmap menu window again okan 2016-09-29 00:30:40 +00:00
  • 0e8c706633 Mechanical change: move screen menu bits to their own struct. okan 2016-09-29 00:21:55 +00:00
  • 92b81d3df5 Inline Xft draw and extents wrappers; too much abstraction. okan 2016-09-28 17:06:33 +00:00
  • b32989d379 Do not call sweep_draw() too early: don't yet have w/h dimensions; plus we will get a MotionNotify event right away anyway, setting required parameters. okan 2016-09-28 15:54:54 +00:00
  • 57b2a6cf79 Continue merging kb and mouse functions: fold mousefunc_menu_{client,cmd,group} into the respective kbfunc_menu_{client,cmd,group} functions; simply pass a flag down from config denoting mouse action behaviour. okan 2016-09-22 14:36:03 +00:00
  • 3947f1268a Allow ctrl-[ for abort (esc); from Benjamin Scher Purcell okan 2016-09-20 19:58:54 +00:00
  • 08631748fd de-static client_inbound() okan 2016-09-20 19:11:19 +00:00
  • 74e4a3c60b remove debug that accidentally snuck in okan 2016-09-20 18:23:12 +00:00
  • 9cf3174696 Get rid of curcc, instead cycle through the queue; removes the need for client_none(). okan 2016-09-20 18:21:32 +00:00
  • fa06851b0e cvsimport okan 2016-09-16 14:32:02 +00:00
  • 6a53e3a859 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). okan 2016-09-16 14:32:02 +00:00
  • 8d44e4b3e8 cvsimport okan 2016-09-14 21:00:24 +00:00
  • 2bbe111cc0 Some clients fail to setup hints at all, so initalize for them; fallout from r1.218 switching to malloc - clearly missed this case. okan 2016-09-14 21:00:24 +00:00
  • b8933ebcca Fix-up a few simple uses of client_current(): check CLIENT_ACTIVE flag instead of relying on curcc. okan 2016-09-14 19:45:33 +00:00
  • 9124a561e3 init label okan 2016-09-13 17:42:58 +00:00
  • a94254137c Limit mouse resize to hints within the client; matches kbd resize behaviour. okan 2016-09-13 13:42:28 +00:00
  • e1234b75b8 Switch to just malloc since we need initialize most everything anyway. okan 2016-09-12 13:48:41 +00:00
  • b14a4b222d change 'sticky' to 'stick' to toggle client stickiness (seems the default binding worked for everyone for a long time!); conflict with group sticky found by Ali Farzanrad - thanks! okan 2016-09-12 13:47:00 +00:00
  • c82c3f0835 Simplify group_holds_only_hidden(); from Vadim Vygonets. okan 2016-09-02 16:07:11 +00:00
  • 67a9eaa440 Simplify toggling flags; from Vadim Vygonets. okan 2016-09-02 15:08:44 +00:00
  • 44f3fefe11 Do not draw borders on ignored clients when returning from fullscreen; from Vadim Vygonets. okan 2016-09-01 18:38:52 +00:00
  • 4cf9a34b65 Remove redundant minimum client size adjustment (minw and minh are always positive since r1.214); from Vadim Vygonets. okan 2016-09-01 18:34:04 +00:00
  • d2616ce397 cvsimport okan 2016-08-28 15:23:24 +00:00
  • 8c1b05e534 Enable the use of numpad Enter key on menus; from Henrique N. Lengler. okan 2016-08-28 15:23:24 +00:00
  • 319b388b42 cvsimport matthieu 2016-08-13 09:59:48 +00:00
  • 5015c850bd add a column to previous commit for consitency. matthieu 2016-08-13 09:59:48 +00:00
  • 375368a94c conf_screen: report the fontname that can't be opened in case of failure. ok dcoppa@ matthieu 2016-08-13 09:58:37 +00:00
  • bbbaacf177 cvsimport Christian Neukirchen 2016-06-08 13:18:37 +02:00
  • ffc365bc5d If supplied format to menuq_add() is NULL, fill text with an empty string; found by Christian Neukirchen. okan 2016-04-28 16:28:38 +00:00
  • a889f32af6 menu: menuq_add: avoid passing null pointers to vsnprintf. Christian Neukirchen 2016-04-02 17:21:04 +02:00
  • f9e9f76856 cvsimport okan 2015-11-17 15:19:19 +00:00
  • 4ac6daa27d Fix a typo from r1.201; fixes window_grouptoggle binding. okan 2015-11-17 15:19:19 +00:00
  • 8aa2f317af If a client does not set increment values, use 'moveamount' as a way to scale keyboard based resizes; extend kbfunc_amount(). okan 2015-11-17 14:32:38 +00:00
  • e8d77b6890 Inline the only use of mousefunc_sweep_calc. okan 2015-11-17 14:31:28 +00:00
  • 669631e5fa Run pledge only on OpenBSD. Christian Neukirchen 2015-11-16 14:47:21 +01:00
  • 4e51ce57a7 cvsimport okan 2015-11-12 21:28:03 +00:00
  • 323672ace7 more client vs screen context differences okan 2015-11-12 21:28:03 +00:00
  • 4aca2b8764 If a client sets hints, honor them for kb resize requests, just like we do for mouse based resize requests. okan 2015-11-12 18:33:30 +00:00
  • 9a48836ceb 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. okan 2015-11-12 18:26:41 +00:00
  • a2c066e447 pledge "stdio rpath proc exec" cwm before main event loop, after init/setup - mostly for menu building. okan 2015-11-12 17:56:54 +00:00
  • 00bdd48b1d 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. okan 2015-11-11 14:22:01 +00:00
  • 09565bc423 Use position on root to figure out region. okan 2015-11-10 22:06:57 +00:00
  • e20110f344 Start cleaning up name vs function differences; replace magic numbers. okan 2015-11-10 20:05:33 +00:00
  • 31c74e9157 Clean up unused defines. okan 2015-11-09 20:15:23 +00:00
  • d7bd299819 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. okan 2015-11-09 20:03:29 +00:00
  • cd21e16675 cvsimport okan 2015-09-23 14:09:40 +00:00
  • 5fcf251672 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. okan 2015-09-23 14:09:40 +00:00
  • 0fdcf3f3df On execwm, we should properly release resources before exec'ing into a new window manager; so allow CWM_EXEC_WM to assign new wm to wm_argv and pass through cwm_status (now EXECWM) so that x_teardown() gets called before exec'ing the new window manager. Removes the need for a separate x_restart() now, using new wm_argv; and consolidates errno for execvp. okan 2015-09-16 17:58:25 +00:00
  • 3f0b6cf4ea cvsimport okan 2015-08-28 12:07:28 +00:00
  • 47a10cc055 Lost fix from r1.112; add comment. okan 2015-08-28 12:07:28 +00:00
  • 28d4001eca Mechanical change: group->gc okan 2015-08-27 18:53:14 +00:00
  • f467838e7b Add consistent checks against NULL. okan 2015-08-27 18:42:56 +00:00
  • 19826222f6 Move client cycle grab/ungrab into a more relevant place; while here, update comments about why we need to grab/ungrab the keyboard. okan 2015-08-27 18:40:09 +00:00
  • 5391659629 Re-add lost chunk in group_cycle from r1.113. okan 2015-08-27 17:43:44 +00:00
  • 6d53091429 Further simplify _NET_WM_DESKTOP handling using new group_assign(). okan 2015-08-25 20:35:49 +00:00
  • 871ed39ccf oops; remove left over debug print okan 2015-08-25 19:52:02 +00:00
  • cb60a4b917 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). okan 2015-08-25 19:49:19 +00:00
  • 96262a6b0c 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. okan 2015-08-25 18:29:10 +00:00
  • dcfbc9e809 Implement _NET_CLIENT_LIST_STACKING (from Thomas Admin), but bottom-to-top order, as per spec (notified Thomas as well). okan 2015-08-24 15:42:57 +00:00
  • 97db17d056 Don't allow freeze operations on fullscreen (consistent with what fullscreen does). okan 2015-08-24 14:57:19 +00:00
  • 4269ea0463 Sort _NET_WM_STATE Atoms like the spec. okan 2015-08-24 14:56:10 +00:00
  • b224945446 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. okan 2015-08-23 17:31:20 +00:00
  • ae9306748b Add Xkb modifier to ignore mask; from Alexander Polakov. okan 2015-08-21 16:53:48 +00:00
  • cd3bbb1c9c Fix whitespace. okan 2015-08-21 16:52:37 +00:00
  • 1d31f9000c Add client freeze extension to _NET_WM_STATE Atom, allowing flag to persist. As usual with new Atoms, requires X restart. okan 2015-08-21 16:30:02 +00:00
  • 05478f061e _NET_WM_STATE_STICKY implies only sticky at the group/desktop level, not position and size; based on discussion with a few. okan 2015-08-21 16:14:39 +00:00
  • c96fd247dd Instead of special casing the 'term' and 'lock' commands, go back to keeping them hidden; showing them has apparently caused confusion/angst. okan 2015-08-21 16:05:55 +00:00
  • a79253abdc Leave command list order from .cwmrc alone; remove sort. okan 2015-08-21 15:55:39 +00:00
  • 871c9f24ba Bring group and client cycle closer together. okan 2015-08-21 15:52:49 +00:00
  • 54bbd88e51 Alter big move and resize bindings to match what's in cwm(1); functionally the same, but re-binding should be based on default bindings. Matches other similiar bindings. okan 2015-08-20 14:45:15 +00:00
  • c0f2d0cc75 cvsimport okan 2015-07-12 14:31:47 +00:00
  • 0d13b7c220 introduce 'groupsearch' for group menu search; matches on either group number/shortcut and/or name. okan 2015-07-12 14:31:47 +00:00
  • 5c2decc8d0 simplify menu print text okan 2015-07-12 14:21:09 +00:00
  • 02779e64b8 revert previous; seems search_match_text() needs mi->text pre-populated. (only used in one place, application menu searching); re-visit later. okan 2015-07-03 17:11:16 +00:00
  • 6716719593 cvsimport Christian Neukirchen 2015-07-01 16:38:16 +02:00
  • cb900def7f style okan 2015-07-01 14:36:42 +00:00
  • 8efaf33cfb no longer need to pass down format strings after introducing search_print_cmd okan 2015-06-30 19:02:24 +00:00
  • 5d8027b75d Introduce a callback for cmd menu printing, special-casing 'lock' and 'term'. okan 2015-06-30 18:54:12 +00:00
  • c87953eb64 keep cmdq sorted okan 2015-06-30 18:44:29 +00:00
  • 6b8b856217 style and spacing nits okan 2015-06-30 18:42:50 +00:00