--
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