parent
875e8c9d4d
commit
9202316ece
8 changed files with 42 additions and 45 deletions
1
Makefile
1
Makefile
|
@ -27,7 +27,6 @@ RUST_APIS = \
|
||||||
src/settings.h
|
src/settings.h
|
||||||
|
|
||||||
MODULES_SRC = \
|
MODULES_SRC = \
|
||||||
src/config/cursors.c \
|
|
||||||
src/config/keys.c \
|
src/config/keys.c \
|
||||||
src/config/buttons.c \
|
src/config/buttons.c \
|
||||||
src/config/layouts.c \
|
src/config/layouts.c \
|
||||||
|
|
|
@ -1,21 +0,0 @@
|
||||||
#include "cursors.h"
|
|
||||||
|
|
||||||
#include <X11/cursorfont.h>
|
|
||||||
|
|
||||||
const Cursor cursors[CURSORS_COUNT] = { 0, 0, 0 };
|
|
||||||
|
|
||||||
void cursors_create(Display *const display)
|
|
||||||
{
|
|
||||||
Cursor *const cursors_ptr = (Cursor*)cursors;
|
|
||||||
cursors_ptr[CURSOR_NORMAL] = XCreateFontCursor(display, XC_left_ptr);
|
|
||||||
cursors_ptr[CURSOR_RESIZE] = XCreateFontCursor(display, XC_sizing);
|
|
||||||
cursors_ptr[CURSOR_MOVE] = XCreateFontCursor(display, XC_fleur);
|
|
||||||
}
|
|
||||||
|
|
||||||
void cursors_destroy(Display *const display)
|
|
||||||
{
|
|
||||||
Cursor *const cursors_ptr = (Cursor*)cursors;
|
|
||||||
XFreeCursor(display, cursors_ptr[CURSOR_NORMAL]);
|
|
||||||
XFreeCursor(display, cursors_ptr[CURSOR_RESIZE]);
|
|
||||||
XFreeCursor(display, cursors_ptr[CURSOR_MOVE]);
|
|
||||||
}
|
|
|
@ -1,17 +0,0 @@
|
||||||
#ifndef _CONFIG_CURSORS_H
|
|
||||||
#define _CONFIG_CURSORS_H
|
|
||||||
|
|
||||||
#include <X11/Xlib.h>
|
|
||||||
|
|
||||||
#define CURSOR_NORMAL 0
|
|
||||||
#define CURSOR_RESIZE 1
|
|
||||||
#define CURSOR_MOVE 2
|
|
||||||
|
|
||||||
#define CURSORS_COUNT 3
|
|
||||||
|
|
||||||
extern const Cursor cursors[CURSORS_COUNT];
|
|
||||||
|
|
||||||
void cursors_create(Display *display);
|
|
||||||
void cursors_destroy(Display *display);
|
|
||||||
|
|
||||||
#endif // _CONFIG_CURSORS_H
|
|
23
src/drw.c
23
src/drw.c
|
@ -65,3 +65,26 @@ drw_scm_create(Drw *drw, const char *clrnames[], size_t clrcount)
|
||||||
drw_clr_create(drw, &ret[i], clrnames[i]);
|
drw_clr_create(drw, &ret[i], clrnames[i]);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Cur *
|
||||||
|
drw_cur_create(Drw *drw, int shape)
|
||||||
|
{
|
||||||
|
Cur *cur;
|
||||||
|
|
||||||
|
if (!drw || !(cur = ecalloc(1, sizeof(Cur))))
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
cur->cursor = XCreateFontCursor(drw->dpy, shape);
|
||||||
|
|
||||||
|
return cur;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
drw_cur_free(Drw *drw, Cur *cursor)
|
||||||
|
{
|
||||||
|
if (!cursor)
|
||||||
|
return;
|
||||||
|
|
||||||
|
XFreeCursor(drw->dpy, cursor->cursor);
|
||||||
|
free(cursor);
|
||||||
|
}
|
||||||
|
|
|
@ -1,6 +1,10 @@
|
||||||
#ifndef _DRW_H
|
#ifndef _DRW_H
|
||||||
#define _DRW_H
|
#define _DRW_H
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
Cursor cursor;
|
||||||
|
} Cur;
|
||||||
|
|
||||||
enum { ColFg, ColBg, ColBorder }; /* Clr scheme index */
|
enum { ColFg, ColBg, ColBorder }; /* Clr scheme index */
|
||||||
typedef XftColor Clr;
|
typedef XftColor Clr;
|
||||||
|
|
||||||
|
@ -21,4 +25,8 @@ void drw_free(Drw *drw);
|
||||||
/* Colorscheme abstraction */
|
/* Colorscheme abstraction */
|
||||||
Clr *drw_scm_create(Drw *drw, const char *clrnames[], size_t clrcount);
|
Clr *drw_scm_create(Drw *drw, const char *clrnames[], size_t clrcount);
|
||||||
|
|
||||||
|
/* Cursor abstraction */
|
||||||
|
Cur *drw_cur_create(Drw *drw, int shape);
|
||||||
|
void drw_cur_free(Drw *drw, Cur *cursor);
|
||||||
|
|
||||||
#endif // _DRW_H
|
#endif // _DRW_H
|
||||||
|
|
12
src/dwm.c
12
src/dwm.c
|
@ -154,6 +154,7 @@ static Unit global_unit = NULL;
|
||||||
static const char broken[] = "broken";
|
static const char broken[] = "broken";
|
||||||
static unsigned int numlockmask = 0;
|
static unsigned int numlockmask = 0;
|
||||||
static int running = 1;
|
static int running = 1;
|
||||||
|
static Cur *cursor[CurLast];
|
||||||
static Clr **scheme;
|
static Clr **scheme;
|
||||||
static Drw *drw;
|
static Drw *drw;
|
||||||
static Monitor *mons, *selmon;
|
static Monitor *mons, *selmon;
|
||||||
|
@ -224,7 +225,9 @@ int dwm_main(const char *const new_program_title)
|
||||||
|
|
||||||
updategeom();
|
updategeom();
|
||||||
/* init cursors */
|
/* init cursors */
|
||||||
cursors_create(drw->dpy);
|
cursor[CurNormal] = drw_cur_create(drw, XC_left_ptr);
|
||||||
|
cursor[CurResize] = drw_cur_create(drw, XC_sizing);
|
||||||
|
cursor[CurMove] = drw_cur_create(drw, XC_fleur);
|
||||||
/* init appearance */
|
/* init appearance */
|
||||||
scheme_create();
|
scheme_create();
|
||||||
|
|
||||||
|
@ -249,7 +252,7 @@ int dwm_main(const char *const new_program_title)
|
||||||
);
|
);
|
||||||
|
|
||||||
/* select events */
|
/* select events */
|
||||||
wa.cursor = cursors[CURSOR_NORMAL];
|
wa.cursor = cursor[CurNormal]->cursor;
|
||||||
wa.event_mask =
|
wa.event_mask =
|
||||||
SubstructureRedirectMask | SubstructureNotifyMask | ButtonPressMask |
|
SubstructureRedirectMask | SubstructureNotifyMask | ButtonPressMask |
|
||||||
PointerMotionMask | EnterWindowMask | LeaveWindowMask |
|
PointerMotionMask | EnterWindowMask | LeaveWindowMask |
|
||||||
|
@ -286,7 +289,10 @@ int dwm_main(const char *const new_program_title)
|
||||||
monitor_destroy(mons);
|
monitor_destroy(mons);
|
||||||
}
|
}
|
||||||
|
|
||||||
cursors_destroy(drw->dpy);
|
for (size_t i = 0; i < CurLast; i++) {
|
||||||
|
drw_cur_free(drw, cursor[i]);
|
||||||
|
}
|
||||||
|
|
||||||
scheme_destroy();
|
scheme_destroy();
|
||||||
|
|
||||||
wmcheckwin_destroy();
|
wmcheckwin_destroy();
|
||||||
|
|
|
@ -2,7 +2,6 @@
|
||||||
#define _DWM_H
|
#define _DWM_H
|
||||||
|
|
||||||
#include "config/buttons.h"
|
#include "config/buttons.h"
|
||||||
#include "config/cursors.h"
|
|
||||||
#include "config/keys.h"
|
#include "config/keys.h"
|
||||||
#include "config/layouts.h"
|
#include "config/layouts.h"
|
||||||
|
|
||||||
|
|
|
@ -126,7 +126,7 @@ void movemouse(__attribute__((unused)) const Arg *arg)
|
||||||
GrabModeAsync,
|
GrabModeAsync,
|
||||||
GrabModeAsync,
|
GrabModeAsync,
|
||||||
None,
|
None,
|
||||||
cursors[CURSOR_MOVE],
|
cursor[CurMove]->cursor,
|
||||||
CurrentTime
|
CurrentTime
|
||||||
) != GrabSuccess
|
) != GrabSuccess
|
||||||
) {
|
) {
|
||||||
|
@ -357,7 +357,7 @@ void resizemouse(__attribute__((unused)) const Arg *arg)
|
||||||
GrabModeAsync,
|
GrabModeAsync,
|
||||||
GrabModeAsync,
|
GrabModeAsync,
|
||||||
None,
|
None,
|
||||||
cursors[CURSOR_RESIZE],
|
cursor[CurResize]->cursor,
|
||||||
CurrentTime
|
CurrentTime
|
||||||
) != GrabSuccess
|
) != GrabSuccess
|
||||||
) {
|
) {
|
||||||
|
|
Loading…
Reference in a new issue