|
|
@@ -35,10 +35,13 @@ enum { |
|
|
|
V_TEXT_PAD = 1 |
|
|
|
}; |
|
|
|
|
|
|
|
static Cursor carrow; |
|
|
|
static Cursor cnone; |
|
|
|
static Cursor cdrag; |
|
|
|
static Cursor cwatch; |
|
|
|
static struct { |
|
|
|
int name; |
|
|
|
Cursor icon; |
|
|
|
} cursors[CURSOR_COUNT] = { |
|
|
|
{ XC_left_ptr }, { XC_dotbox }, { XC_watch } |
|
|
|
}; |
|
|
|
|
|
|
|
static GC gc; |
|
|
|
|
|
|
|
static XftFont *font; |
|
|
@@ -153,6 +156,7 @@ void win_open(win_t *win) |
|
|
|
XClassHint classhint; |
|
|
|
unsigned long *icon_data; |
|
|
|
XColor col; |
|
|
|
Cursor *cnone = &cursors[CURSOR_NONE].icon; |
|
|
|
char none_data[] = { 0, 0, 0, 0, 0, 0, 0, 0 }; |
|
|
|
Pixmap none; |
|
|
|
int gmask; |
|
|
@@ -209,17 +213,17 @@ void win_open(win_t *win) |
|
|
|
ButtonReleaseMask | ButtonPressMask | KeyPressMask | |
|
|
|
PointerMotionMask | StructureNotifyMask); |
|
|
|
|
|
|
|
carrow = XCreateFontCursor(e->dpy, XC_left_ptr); |
|
|
|
cdrag = XCreateFontCursor(e->dpy, XC_dotbox); |
|
|
|
cwatch = XCreateFontCursor(e->dpy, XC_watch); |
|
|
|
|
|
|
|
for (i = 0; i < ARRLEN(cursors); i++) { |
|
|
|
if (i != CURSOR_NONE) |
|
|
|
cursors[i].icon = XCreateFontCursor(e->dpy, cursors[i].name); |
|
|
|
} |
|
|
|
if (XAllocNamedColor(e->dpy, DefaultColormap(e->dpy, e->scr), "black", |
|
|
|
&col, &col) == 0) |
|
|
|
{ |
|
|
|
error(EXIT_FAILURE, 0, "Error allocating color 'black'"); |
|
|
|
} |
|
|
|
none = XCreateBitmapFromData(e->dpy, win->xwin, none_data, 8, 8); |
|
|
|
cnone = XCreatePixmapCursor(e->dpy, none, none, &col, &col, 0, 0); |
|
|
|
*cnone = XCreatePixmapCursor(e->dpy, none, none, &col, &col, 0, 0); |
|
|
|
|
|
|
|
gc = XCreateGC(e->dpy, win->xwin, 0, None); |
|
|
|
|
|
|
@@ -275,10 +279,10 @@ void win_open(win_t *win) |
|
|
|
|
|
|
|
CLEANUP void win_close(win_t *win) |
|
|
|
{ |
|
|
|
XFreeCursor(win->env.dpy, carrow); |
|
|
|
XFreeCursor(win->env.dpy, cnone); |
|
|
|
XFreeCursor(win->env.dpy, cdrag); |
|
|
|
XFreeCursor(win->env.dpy, cwatch); |
|
|
|
int i; |
|
|
|
|
|
|
|
for (i = 0; i < ARRLEN(cursors); i++) |
|
|
|
XFreeCursor(win->env.dpy, cursors[i].icon); |
|
|
|
|
|
|
|
XFreeGC(win->env.dpy, gc); |
|
|
|
|
|
|
@@ -461,21 +465,8 @@ void win_set_title(win_t *win, const char *title) |
|
|
|
|
|
|
|
void win_set_cursor(win_t *win, cursor_t cursor) |
|
|
|
{ |
|
|
|
switch (cursor) { |
|
|
|
case CURSOR_NONE: |
|
|
|
XDefineCursor(win->env.dpy, win->xwin, cnone); |
|
|
|
break; |
|
|
|
case CURSOR_DRAG: |
|
|
|
XDefineCursor(win->env.dpy, win->xwin, cdrag); |
|
|
|
break; |
|
|
|
case CURSOR_WATCH: |
|
|
|
XDefineCursor(win->env.dpy, win->xwin, cwatch); |
|
|
|
break; |
|
|
|
case CURSOR_ARROW: |
|
|
|
default: |
|
|
|
XDefineCursor(win->env.dpy, win->xwin, carrow); |
|
|
|
break; |
|
|
|
if (cursor >= 0 && cursor < ARRLEN(cursors)) { |
|
|
|
XDefineCursor(win->env.dpy, win->xwin, cursors[cursor].icon); |
|
|
|
XFlush(win->env.dpy); |
|
|
|
} |
|
|
|
|
|
|
|
XFlush(win->env.dpy); |
|
|
|
} |