cvsimport
* 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. ...
This commit is contained in:
23
calmwm.h
23
calmwm.h
@@ -64,12 +64,12 @@ size_t strlcpy(char *, const char *, size_t);
|
||||
#define CONFFILE ".cwmrc"
|
||||
#define WMNAME "CWM"
|
||||
|
||||
#define BUTTONMASK (ButtonPressMask|ButtonReleaseMask)
|
||||
#define MOUSEMASK (BUTTONMASK|PointerMotionMask)
|
||||
#define MENUMASK (MOUSEMASK|ButtonMotionMask|ExposureMask)
|
||||
#define MENUGRABMASK (MOUSEMASK|ButtonMotionMask|StructureNotifyMask)
|
||||
#define KEYMASK (KeyPressMask|ExposureMask)
|
||||
#define IGNOREMODMASK (LockMask|Mod2Mask)
|
||||
#define BUTTONMASK (ButtonPressMask | ButtonReleaseMask)
|
||||
#define MOUSEMASK (BUTTONMASK | PointerMotionMask)
|
||||
#define MENUMASK (MOUSEMASK | ButtonMotionMask | ExposureMask)
|
||||
#define MENUGRABMASK (MOUSEMASK | ButtonMotionMask | StructureNotifyMask)
|
||||
#define KEYMASK (KeyPressMask | ExposureMask)
|
||||
#define IGNOREMODMASK (LockMask | Mod2Mask | 0x2000)
|
||||
|
||||
/* kb movement */
|
||||
#define CWM_MOVE 0x0001
|
||||
@@ -168,6 +168,7 @@ struct client_ctx {
|
||||
TAILQ_ENTRY(client_ctx) entry;
|
||||
TAILQ_ENTRY(client_ctx) group_entry;
|
||||
struct screen_ctx *sc;
|
||||
struct group_ctx *gc;
|
||||
Window win;
|
||||
Colormap colormap;
|
||||
unsigned int bwidth; /* border width */
|
||||
@@ -219,7 +220,6 @@ struct client_ctx {
|
||||
char *name;
|
||||
char *label;
|
||||
char *matchname;
|
||||
struct group_ctx *group;
|
||||
XClassHint ch;
|
||||
XWMHints *wmh;
|
||||
};
|
||||
@@ -373,6 +373,7 @@ enum {
|
||||
_NET_SUPPORTING_WM_CHECK,
|
||||
_NET_ACTIVE_WINDOW,
|
||||
_NET_CLIENT_LIST,
|
||||
_NET_CLIENT_LIST_STACKING,
|
||||
_NET_NUMBER_OF_DESKTOPS,
|
||||
_NET_CURRENT_DESKTOP,
|
||||
_NET_DESKTOP_VIEWPORT,
|
||||
@@ -385,13 +386,14 @@ enum {
|
||||
_NET_WM_DESKTOP,
|
||||
_NET_CLOSE_WINDOW,
|
||||
_NET_WM_STATE,
|
||||
#define _NET_WM_STATES_NITEMS 6
|
||||
#define _NET_WM_STATES_NITEMS 7
|
||||
_NET_WM_STATE_STICKY,
|
||||
_NET_WM_STATE_MAXIMIZED_VERT,
|
||||
_NET_WM_STATE_MAXIMIZED_HORZ,
|
||||
_NET_WM_STATE_HIDDEN,
|
||||
_NET_WM_STATE_FULLSCREEN,
|
||||
_NET_WM_STATE_DEMANDS_ATTENTION,
|
||||
_CWM_WM_STATE_FREEZE,
|
||||
EWMH_NITEMS
|
||||
};
|
||||
enum {
|
||||
@@ -445,7 +447,8 @@ void client_warp(struct client_ctx *);
|
||||
void client_wm_hints(struct client_ctx *);
|
||||
|
||||
void group_alltoggle(struct screen_ctx *);
|
||||
void group_autogroup(struct client_ctx *);
|
||||
void group_assign(struct group_ctx *, struct client_ctx *);
|
||||
int group_autogroup(struct client_ctx *);
|
||||
void group_cycle(struct screen_ctx *, int);
|
||||
void group_hide(struct group_ctx *);
|
||||
void group_hidetoggle(struct screen_ctx *, int);
|
||||
@@ -454,6 +457,7 @@ int group_holds_only_sticky(struct group_ctx *);
|
||||
void group_init(struct screen_ctx *, int);
|
||||
void group_movetogroup(struct client_ctx *, int);
|
||||
void group_only(struct screen_ctx *, int);
|
||||
int group_restore(struct client_ctx *);
|
||||
void group_show(struct group_ctx *);
|
||||
void group_toggle_membership_enter(struct client_ctx *);
|
||||
void group_toggle_membership_leave(struct client_ctx *);
|
||||
@@ -582,6 +586,7 @@ void xu_ewmh_net_supported_wm_check(struct screen_ctx *);
|
||||
void xu_ewmh_net_desktop_geometry(struct screen_ctx *);
|
||||
void xu_ewmh_net_workarea(struct screen_ctx *);
|
||||
void xu_ewmh_net_client_list(struct screen_ctx *);
|
||||
void xu_ewmh_net_client_list_stacking(struct screen_ctx *);
|
||||
void xu_ewmh_net_active_window(struct screen_ctx *, Window);
|
||||
void xu_ewmh_net_wm_desktop_viewport(struct screen_ctx *);
|
||||
void xu_ewmh_net_wm_number_of_desktops(struct screen_ctx *);
|
||||
|
||||
Reference in New Issue
Block a user