mirror of
https://github.com/leahneukirchen/cwm.git
synced 2023-08-10 21:13:12 +03:00
move Cursors into conf.
This commit is contained in:
12
calmwm.c
12
calmwm.c
@ -38,12 +38,6 @@
|
|||||||
char **cwm_argv;
|
char **cwm_argv;
|
||||||
Display *X_Dpy;
|
Display *X_Dpy;
|
||||||
|
|
||||||
Cursor Cursor_default;
|
|
||||||
Cursor Cursor_move;
|
|
||||||
Cursor Cursor_normal;
|
|
||||||
Cursor Cursor_question;
|
|
||||||
Cursor Cursor_resize;
|
|
||||||
|
|
||||||
struct screen_ctx_q Screenq = TAILQ_HEAD_INITIALIZER(Screenq);
|
struct screen_ctx_q Screenq = TAILQ_HEAD_INITIALIZER(Screenq);
|
||||||
struct client_ctx_q Clientq = TAILQ_HEAD_INITIALIZER(Clientq);
|
struct client_ctx_q Clientq = TAILQ_HEAD_INITIALIZER(Clientq);
|
||||||
|
|
||||||
@ -139,11 +133,7 @@ x_init(const char *dpyname)
|
|||||||
|
|
||||||
xu_getatoms();
|
xu_getatoms();
|
||||||
|
|
||||||
Cursor_default = XCreateFontCursor(X_Dpy, XC_X_cursor);
|
conf_cursor(&Conf);
|
||||||
Cursor_move = XCreateFontCursor(X_Dpy, XC_fleur);
|
|
||||||
Cursor_normal = XCreateFontCursor(X_Dpy, XC_left_ptr);
|
|
||||||
Cursor_question = XCreateFontCursor(X_Dpy, XC_question_arrow);
|
|
||||||
Cursor_resize = XCreateFontCursor(X_Dpy, XC_bottom_right_corner);
|
|
||||||
|
|
||||||
for (i = 0; i < ScreenCount(X_Dpy); i++)
|
for (i = 0; i < ScreenCount(X_Dpy); i++)
|
||||||
screen_init(i);
|
screen_init(i);
|
||||||
|
17
calmwm.h
17
calmwm.h
@ -85,6 +85,15 @@ union arg {
|
|||||||
int i;
|
int i;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
enum cursor_font {
|
||||||
|
CF_DEFAULT,
|
||||||
|
CF_MOVE,
|
||||||
|
CF_NORMAL,
|
||||||
|
CF_QUESTION,
|
||||||
|
CF_RESIZE,
|
||||||
|
CF_NITEMS
|
||||||
|
};
|
||||||
|
|
||||||
enum color {
|
enum color {
|
||||||
CWM_COLOR_BORDER_ACTIVE,
|
CWM_COLOR_BORDER_ACTIVE,
|
||||||
CWM_COLOR_BORDER_INACTIVE,
|
CWM_COLOR_BORDER_INACTIVE,
|
||||||
@ -294,6 +303,7 @@ struct conf {
|
|||||||
char known_hosts[MAXPATHLEN];
|
char known_hosts[MAXPATHLEN];
|
||||||
#define CONF_FONT "sans-serif:pixelsize=14:bold"
|
#define CONF_FONT "sans-serif:pixelsize=14:bold"
|
||||||
char *font;
|
char *font;
|
||||||
|
Cursor cursor[CF_NITEMS];
|
||||||
};
|
};
|
||||||
|
|
||||||
/* MWM hints */
|
/* MWM hints */
|
||||||
@ -437,6 +447,7 @@ void conf_bindname(struct conf *, char *, char *);
|
|||||||
void conf_clear(struct conf *);
|
void conf_clear(struct conf *);
|
||||||
void conf_client(struct client_ctx *);
|
void conf_client(struct client_ctx *);
|
||||||
void conf_cmd_add(struct conf *, char *, char *);
|
void conf_cmd_add(struct conf *, char *, char *);
|
||||||
|
void conf_cursor(struct conf *);
|
||||||
void conf_grab_kbd(Window);
|
void conf_grab_kbd(Window);
|
||||||
void conf_grab_mouse(Window);
|
void conf_grab_mouse(Window);
|
||||||
void conf_init(struct conf *);
|
void conf_init(struct conf *);
|
||||||
@ -498,12 +509,6 @@ int xasprintf(char **, const char *, ...)
|
|||||||
/* Externs */
|
/* Externs */
|
||||||
extern Display *X_Dpy;
|
extern Display *X_Dpy;
|
||||||
|
|
||||||
extern Cursor Cursor_default;
|
|
||||||
extern Cursor Cursor_move;
|
|
||||||
extern Cursor Cursor_normal;
|
|
||||||
extern Cursor Cursor_question;
|
|
||||||
extern Cursor Cursor_resize;
|
|
||||||
|
|
||||||
extern struct screen_ctx_q Screenq;
|
extern struct screen_ctx_q Screenq;
|
||||||
extern struct client_ctx_q Clientq;
|
extern struct client_ctx_q Clientq;
|
||||||
extern struct conf Conf;
|
extern struct conf Conf;
|
||||||
|
18
conf.c
18
conf.c
@ -625,6 +625,23 @@ conf_mouseunbind(struct conf *c, struct mousebinding *unbind)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int cursor_binds[CF_NITEMS] = {
|
||||||
|
XC_X_cursor, /* CF_DEFAULT */
|
||||||
|
XC_fleur, /* CF_MOVE */
|
||||||
|
XC_left_ptr, /* CF_NORMAL */
|
||||||
|
XC_question_arrow, /* CF_QUESTION */
|
||||||
|
XC_bottom_right_corner, /* CF_RESIZE */
|
||||||
|
};
|
||||||
|
|
||||||
|
void
|
||||||
|
conf_cursor(struct conf *c)
|
||||||
|
{
|
||||||
|
u_int i;
|
||||||
|
|
||||||
|
for (i = 0; i < nitems(cursor_binds); i++)
|
||||||
|
c->cursor[i] = XCreateFontCursor(X_Dpy, cursor_binds[i]);
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
conf_grab_mouse(Window win)
|
conf_grab_mouse(Window win)
|
||||||
{
|
{
|
||||||
@ -647,4 +664,3 @@ conf_grab_kbd(Window win)
|
|||||||
TAILQ_FOREACH(kb, &Conf.keybindingq, entry)
|
TAILQ_FOREACH(kb, &Conf.keybindingq, entry)
|
||||||
xu_key_grab(win, kb->modmask, kb->keysym);
|
xu_key_grab(win, kb->modmask, kb->keysym);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
7
menu.c
7
menu.c
@ -122,7 +122,8 @@ menu_filter(struct screen_ctx *sc, struct menu_q *menuq, char *prompt,
|
|||||||
XSelectInput(X_Dpy, sc->menuwin, evmask);
|
XSelectInput(X_Dpy, sc->menuwin, evmask);
|
||||||
XMapRaised(X_Dpy, sc->menuwin);
|
XMapRaised(X_Dpy, sc->menuwin);
|
||||||
|
|
||||||
if (xu_ptr_grab(sc->menuwin, MENUGRABMASK, Cursor_question) < 0) {
|
if (xu_ptr_grab(sc->menuwin, MENUGRABMASK,
|
||||||
|
Conf.cursor[CF_QUESTION]) < 0) {
|
||||||
XUnmapWindow(X_Dpy, sc->menuwin);
|
XUnmapWindow(X_Dpy, sc->menuwin);
|
||||||
return (NULL);
|
return (NULL);
|
||||||
}
|
}
|
||||||
@ -472,10 +473,10 @@ menu_handle_move(XEvent *e, struct menu_ctx *mc, struct menu_q *resultq)
|
|||||||
if (mc->prev != -1)
|
if (mc->prev != -1)
|
||||||
menu_draw_entry(mc, resultq, mc->prev, 0);
|
menu_draw_entry(mc, resultq, mc->prev, 0);
|
||||||
if (mc->entry != -1) {
|
if (mc->entry != -1) {
|
||||||
(void)xu_ptr_regrab(MENUGRABMASK, Cursor_normal);
|
(void)xu_ptr_regrab(MENUGRABMASK, Conf.cursor[CF_NORMAL]);
|
||||||
menu_draw_entry(mc, resultq, mc->entry, 1);
|
menu_draw_entry(mc, resultq, mc->entry, 1);
|
||||||
} else
|
} else
|
||||||
(void)xu_ptr_regrab(MENUGRABMASK, Cursor_default);
|
(void)xu_ptr_regrab(MENUGRABMASK, Conf.cursor[CF_DEFAULT]);
|
||||||
|
|
||||||
if (mc->hasprompt)
|
if (mc->hasprompt)
|
||||||
menu_draw_entry(mc, resultq, 1, 1);
|
menu_draw_entry(mc, resultq, 1, 1);
|
||||||
|
@ -81,7 +81,7 @@ mousefunc_window_resize(struct client_ctx *cc, void *arg)
|
|||||||
client_raise(cc);
|
client_raise(cc);
|
||||||
client_ptrsave(cc);
|
client_ptrsave(cc);
|
||||||
|
|
||||||
if (xu_ptr_grab(cc->win, MOUSEMASK, Cursor_resize) < 0)
|
if (xu_ptr_grab(cc->win, MOUSEMASK, Conf.cursor[CF_RESIZE]) < 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
xu_ptr_setpos(cc->win, cc->geom.w, cc->geom.h);
|
xu_ptr_setpos(cc->win, cc->geom.w, cc->geom.h);
|
||||||
@ -137,7 +137,7 @@ mousefunc_window_move(struct client_ctx *cc, void *arg)
|
|||||||
if (cc->flags & CLIENT_FREEZE)
|
if (cc->flags & CLIENT_FREEZE)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (xu_ptr_grab(cc->win, MOUSEMASK, Cursor_move) < 0)
|
if (xu_ptr_grab(cc->win, MOUSEMASK, Conf.cursor[CF_MOVE]) < 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
xu_ptr_getpos(cc->win, &px, &py);
|
xu_ptr_getpos(cc->win, &px, &py);
|
||||||
|
2
screen.c
2
screen.c
@ -57,7 +57,7 @@ screen_init(int which)
|
|||||||
|
|
||||||
group_init(sc);
|
group_init(sc);
|
||||||
|
|
||||||
rootattr.cursor = Cursor_normal;
|
rootattr.cursor = Conf.cursor[CF_NORMAL];
|
||||||
rootattr.event_mask = SubstructureRedirectMask|SubstructureNotifyMask|
|
rootattr.event_mask = SubstructureRedirectMask|SubstructureNotifyMask|
|
||||||
PropertyChangeMask|EnterWindowMask|LeaveWindowMask|
|
PropertyChangeMask|EnterWindowMask|LeaveWindowMask|
|
||||||
ColormapChangeMask|BUTTONMASK;
|
ColormapChangeMask|BUTTONMASK;
|
||||||
|
Reference in New Issue
Block a user