-- The history of the present King of Great Britain is a history of repeated injuries and usurpations, all having in direct object the establishment of an absolute tyranny over these states. -- Thomas Jefferson, Prologue, "Declaration of Independence" { Chris "Xris" Laas }-----{ chrisl_at_cybercom.net }-----{ xris_at_qfl.com } <*>--------------{ http://www.cybercom.net/~chrisl/ }--------------<*> File fvwm-cursor-config.patch: ------------------------------------------------------------------------ diff -ru /usr/src/fvwm-orig/fvwm/builtins.c ./fvwm-devel/fvwm/builtins.c --- /usr/src/fvwm-orig/fvwm/builtins.c Thu Jun 27 10:34:19 1996 +++ ./fvwm-devel/fvwm/builtins.c Wed Mar 5 17:10:29 1997 _at_@ -1139,6 +1139,150 @@ checkPanFrames(); } + +#define CTYPE(type) { #type , type } +static struct { + char *name; + int id; +} cursor_type_names[] = { + CTYPE(POSITION), + CTYPE(TITLE_CURSOR), + CTYPE(DEFAULT), + CTYPE(SYS), + CTYPE(MOVE), + CTYPE(WAIT), + CTYPE(MENU), + CTYPE(SELECT), + CTYPE(DESTROY), + CTYPE(TOP), + CTYPE(RIGHT), + CTYPE(BOTTOM), + CTYPE(LEFT), + CTYPE(TOP_LEFT), + CTYPE(TOP_RIGHT), + CTYPE(BOTTOM_LEFT), + CTYPE(BOTTOM_RIGHT) +}; +static struct { + char *name; + int id; +} cursor_names[] = { + {"X_cursor", XC_X_cursor}, + {"arrow", XC_arrow}, + {"based_arrow_down", XC_based_arrow_down}, + {"based_arrow_up", XC_based_arrow_up}, + {"boat", XC_boat}, + {"bogosity", XC_bogosity}, + {"bottom_left_corner", XC_bottom_left_corner}, + {"bottom_right_corner", XC_bottom_right_corner}, + {"bottom_side", XC_bottom_side}, + {"bottom_tee", XC_bottom_tee}, + {"box_spiral", XC_box_spiral}, + {"center_ptr", XC_center_ptr}, + {"circle", XC_circle}, + {"clock", XC_clock}, + {"coffee_mug", XC_coffee_mug}, + {"cross", XC_cross}, + {"cross_reverse", XC_cross_reverse}, + {"crosshair", XC_crosshair}, + {"diamond_cross", XC_diamond_cross}, + {"dot", XC_dot}, + {"dotbox", XC_dotbox}, + {"double_arrow", XC_double_arrow}, + {"draft_large", XC_draft_large}, + {"draft_small", XC_draft_small}, + {"draped_box", XC_draped_box}, + {"exchange", XC_exchange}, + {"fleur", XC_fleur}, + {"gobbler", XC_gobbler}, + {"gumby", XC_gumby}, + {"hand1", XC_hand1}, + {"hand2", XC_hand2}, + {"heart", XC_heart}, + {"icon", XC_icon}, + {"iron_cross", XC_iron_cross}, + {"left_ptr", XC_left_ptr}, + {"left_side", XC_left_side}, + {"left_tee", XC_left_tee}, + {"leftbutton", XC_leftbutton}, + {"ll_angle", XC_ll_angle}, + {"lr_angle", XC_lr_angle}, + {"man", XC_man}, + {"middlebutton", XC_middlebutton}, + {"mouse", XC_mouse}, + {"pencil", XC_pencil}, + {"pirate", XC_pirate}, + {"plus", XC_plus}, + {"question_arrow", XC_question_arrow}, + {"right_ptr", XC_right_ptr}, + {"right_side", XC_right_side}, + {"right_tee", XC_right_tee}, + {"rightbutton", XC_rightbutton}, + {"rtl_logo", XC_rtl_logo}, + {"sailboat", XC_sailboat}, + {"sb_down_arrow", XC_sb_down_arrow}, + {"sb_h_double_arrow", XC_sb_h_double_arrow}, + {"sb_left_arrow", XC_sb_left_arrow}, + {"sb_right_arrow", XC_sb_right_arrow}, + {"sb_up_arrow", XC_sb_up_arrow}, + {"sb_v_double_arrow", XC_sb_v_double_arrow}, + {"shuttle", XC_shuttle}, + {"sizing", XC_sizing}, + {"spider", XC_spider}, + {"spraycan", XC_spraycan}, + {"star", XC_star}, + {"target", XC_target}, + {"tcross", XC_tcross}, + {"top_left_arrow", XC_top_left_arrow}, + {"top_left_corner", XC_top_left_corner}, + {"top_right_corner", XC_top_right_corner}, + {"top_side", XC_top_side}, + {"top_tee", XC_top_tee}, + {"trek", XC_trek}, + {"ul_angle", XC_ul_angle}, + {"umbrella", XC_umbrella}, + {"ur_angle", XC_ur_angle}, + {"watch", XC_watch}, + {"xterm", XC_xterm} +}; +#define dim(x) (sizeof(x) / sizeof(x[0])) + +void SetCursorConfig(XEvent *eventp,Window w,FvwmWindow *tmp_win, + unsigned long context, char *action,int* Module) +{ + char *ctype=NULL, *fontid=NULL; + int i, ctypenum, fontnum; + + action = GetNextToken(action, &ctype); + GetNextToken(action, &fontid); + for (i = 0; i < dim(cursor_type_names); i++) { + /* Is using "mystrcasecmp" really necessary? What's wrong with + * strcasecmp? */ + if (mystrcasecmp(ctype, cursor_type_names[i].name) == 0) { + ctypenum = cursor_type_names[i].id; + break; + } + } + if (i == dim(cursor_type_names)) { + fvwm_msg(ERR,"SetCursorConfig","Bad cursor type"); + return; + } + for (i = 0; i < dim(cursor_names); i++) { + if (mystrcasecmp(fontid, cursor_names[i].name) == 0) { + fontnum = cursor_names[i].id; + break; + } + } + if (i == dim(cursor_names)) { + fvwm_msg(ERR,"SetCursorConfig","Bad cursor name"); + return; + } + + XFreeCursor(dpy, Scr.FvwmCursors[ctypenum]); + Scr.FvwmCursors[ctypenum] = XCreateFontCursor(dpy, fontnum); +} + + #ifdef XPM char *PixmapPath = FVWM_ICONDIR; void setPixmapPath(XEvent *eventp,Window w,FvwmWindow *tmp_win, diff -ru /usr/src/fvwm-orig/fvwm/functions.c ./fvwm-devel/fvwm/functions.c --- /usr/src/fvwm-orig/fvwm/functions.c Wed Jun 19 20:01:56 1996 +++ ./fvwm-devel/fvwm/functions.c Wed Mar 5 16:29:09 1997 _at_@ -44,6 +44,7 @@ {"Close", close_function, F_CLOSE, FUNC_NEEDS_WINDOW}, {"ColormapFocus",SetColormapFocus, F_COLORMAP_FOCUS, FUNC_NO_WINDOW}, {"CursorMove", movecursor, F_MOVECURSOR, FUNC_NO_WINDOW}, + {"CursorConfig", SetCursorConfig, F_CURSORCONFIG, FUNC_NO_WINDOW}, {"Delete", delete_function, F_DELETE, FUNC_NEEDS_WINDOW}, {"DesktopSize", SetDeskSize, F_SETDESK, FUNC_NO_WINDOW}, {"Desk", changeDesks_func, F_DESK, FUNC_NO_WINDOW}, diff -ru /usr/src/fvwm-orig/fvwm/misc.h ./fvwm-devel/fvwm/misc.h --- /usr/src/fvwm-orig/fvwm/misc.h Wed Jun 19 21:31:15 1996 +++ ./fvwm-devel/fvwm/misc.h Wed Mar 5 16:30:49 1997 _at_@ -453,6 +453,8 @@ unsigned long context, char *action,int* Module); void SetDeskSize(XEvent *eventp,Window w,FvwmWindow *tmp_win, unsigned long context, char *action,int* Module); +void SetCursorConfig(XEvent *eventp,Window w,FvwmWindow *tmp_win, + unsigned long context, char *action,int* Module); void SetOpaque(XEvent *eventp,Window w,FvwmWindow *tmp_win, unsigned long context, char *action,int* Module); void SetXOR(XEvent *eventp,Window w,FvwmWindow *tmp_win, diff -ru /usr/src/fvwm-orig/fvwm/parse.h ./fvwm-devel/fvwm/parse.h --- /usr/src/fvwm-orig/fvwm/parse.h Thu May 30 14:03:10 1996 +++ ./fvwm-devel/fvwm/parse.h Wed Mar 5 16:24:01 1997 _at_@ -73,6 +73,7 @@ #define F_COLORMAP_FOCUS 55 #define F_TITLESTYLE 56 #define F_EXEC_SETUP 57 +#define F_CURSORCONFIG 58 /* Functions which require a target window */ #define F_RESIZE 100 #define F_RAISE 101 -- Visit the official FVWM web page at <URL:http://www.hpc.uh.edu/fvwm/>. To unsubscribe from the list, send "unsubscribe fvwm" in the body of a message to majordomo_at_hpc.uh.edu. To report problems, send mail to fvwm-owner_at_hpc.uh.edu.Received on Wed Mar 05 1997 - 17:47:37 GMT
This archive was generated by hypermail 2.3.0 : Mon Aug 29 2016 - 19:38:00 BST