aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPatrick Li <pat@FreeBSD.org>2002-09-07 20:55:18 +0000
committerPatrick Li <pat@FreeBSD.org>2002-09-07 20:55:18 +0000
commit08cdd482d34c1e4defa2583f6bafa4fbbafdcd4e (patch)
treec7641df943dc339008183465bdbf0a501b5887c1
parent65bc0eb215c56e73e88a200dbbcf430518104459 (diff)
downloadports-08cdd482d34c1e4defa2583f6bafa4fbbafdcd4e.tar.gz
ports-08cdd482d34c1e4defa2583f6bafa4fbbafdcd4e.zip
Notes
-rw-r--r--x11-wm/ion-2/files/patch-disable_border162
-rw-r--r--x11-wm/ion-2/files/patch-system.mk12
-rw-r--r--x11-wm/ion-2/files/patch-winprop_frame74
-rw-r--r--x11-wm/ion-devel/files/patch-disable_border162
-rw-r--r--x11-wm/ion-devel/files/patch-system.mk12
-rw-r--r--x11-wm/ion-devel/files/patch-winprop_frame74
-rw-r--r--x11-wm/ion/files/patch-disable_border162
-rw-r--r--x11-wm/ion/files/patch-system.mk12
-rw-r--r--x11-wm/ion/files/patch-winprop_frame74
-rw-r--r--x11-wm/ion3/files/patch-disable_border162
-rw-r--r--x11-wm/ion3/files/patch-system.mk12
-rw-r--r--x11-wm/ion3/files/patch-winprop_frame74
12 files changed, 976 insertions, 16 deletions
diff --git a/x11-wm/ion-2/files/patch-disable_border b/x11-wm/ion-2/files/patch-disable_border
new file mode 100644
index 000000000000..9afd88b74f34
--- /dev/null
+++ b/x11-wm/ion-2/files/patch-disable_border
@@ -0,0 +1,162 @@
+# This patch was originally sent to the ION mailing list by:
+# Christian Mauduit <ufoot@ufoot.org>
+
+diff -r -u doc.orig/functions.txt doc/functions.txt
+--- doc.orig/functions.txt Fri Feb 8 22:23:17 2002
++++ doc/functions.txt Fri Mar 8 23:57:46 2002
+@@ -59,6 +59,13 @@
+ enabled
+
+
++Border control
++--------------
++
++disable_border Disables the border and the bar
++enable_border Enables the border and the bar
++
++
+ Close and destroy
+ -----------------
+
+diff -r -u src.orig/draw.c src/draw.c
+--- src.orig/draw.c Fri Feb 8 22:23:17 2002
++++ src/draw.c Fri Mar 8 23:53:34 2002
+@@ -136,6 +136,13 @@
+ DrawInfo _dinfo, *dinfo=&_dinfo;
+ WGRData *grdata=GRDATA_OF(frame);
+
++ if(complete)
++ XClearWindow(wglobal.dpy, FRAME_WIN(frame));
++
++ /* if the border is not active, we draw nothing here */
++ if (frame->flags & WFRAME_NO_BORDER)
++ return;
++
+ dinfo->win=FRAME_WIN(frame);
+ dinfo->grdata=grdata;
+ dinfo->gc=grdata->gc;
+@@ -143,15 +150,12 @@
+ dinfo->geom.w+=FRAME_W(frame);
+ dinfo->geom.h+=FRAME_H(frame);
+ dinfo->border=&(grdata->frame_border);
+-
++
+ if(IS_ACTIVE_FRAME(frame))
+ dinfo->colors=&(grdata->act_frame_colors);
+ else
+ dinfo->colors=&(grdata->frame_colors);
+
+- if(complete)
+- XClearWindow(wglobal.dpy, FRAME_WIN(frame));
+-
+ /*#if 1*/
+ draw_box(dinfo, FALSE);
+ /*#else
+@@ -191,6 +195,10 @@
+ WGRData *grdata=&(scr->grdata);
+ WRectangle bg;
+
++ /* if the border is not active, we draw nothing here */
++ if (frame->flags & WFRAME_NO_BORDER)
++ return;
++
+ frame_bar_geom(frame, &bg);
+
+ dinfo->win=FRAME_WIN(frame);
+diff -r -u src.orig/frame.c src/frame.c
+--- src.orig/frame.c Fri Feb 8 22:23:17 2002
++++ src/frame.c Fri Mar 8 23:53:37 2002
+@@ -41,15 +41,28 @@
+ #define BAR_W(FRAME, GRDATA) ((FRAME)->win.geom.w+(GRDATA)->bar_off.w)
+ #define BAR_H(FRAME, GRDATA) ((GRDATA)->bar_h)
+
+-#define FRAME_TO_CLIENT_W(W, GRDATA) ((W)+(GRDATA)->client_off.w)
+-#define FRAME_TO_CLIENT_H(H, GRDATA) ((H)+(GRDATA)->client_off.h)
+-#define CLIENT_TO_FRAME_W(W, GRDATA) ((W)-(GRDATA)->client_off.w)
+-#define CLIENT_TO_FRAME_H(H, GRDATA) ((H)-(GRDATA)->client_off.h)
+-
+-#define CLIENT_X(FRAME, GRDATA) ((GRDATA)->client_off.x)
+-#define CLIENT_Y(FRAME, GRDATA) ((GRDATA)->client_off.y)
+-#define CLIENT_W(FRAME, GRDATA) FRAME_TO_CLIENT_W(FRAME_W(FRAME), GRDATA)
+-#define CLIENT_H(FRAME, GRDATA) FRAME_TO_CLIENT_H(FRAME_H(FRAME), GRDATA)
++#define FRAME_TO_CLIENT_W(W, FRAME, GRDATA) \
++ (((FRAME)->flags & WFRAME_NO_BORDER) ? \
++ (W) : (W)+(GRDATA)->client_off.w)
++#define FRAME_TO_CLIENT_H(H, FRAME, GRDATA) \
++ (((FRAME)->flags & WFRAME_NO_BORDER) ? \
++ (H) : (H)+(GRDATA)->client_off.h)
++#define CLIENT_TO_FRAME_W(W, FRAME, GRDATA) \
++ (((FRAME)->flags & WFRAME_NO_BORDER) ? \
++ (W) : (W)-(GRDATA)->client_off.w)
++#define CLIENT_TO_FRAME_H(H, FRAME, GRDATA) \
++ (((FRAME)->flags & WFRAME_NO_BORDER) ? \
++ (H) : (H)-(GRDATA)->client_off.h)
++
++#define CLIENT_X(FRAME, GRDATA) \
++ ((FRAME)->flags & WFRAME_NO_BORDER ? \
++ 0 : (GRDATA)->client_off.x)
++#define CLIENT_Y(FRAME, GRDATA) \
++ ((FRAME)->flags & WFRAME_NO_BORDER ? \
++ 0 : (GRDATA)->client_off.y)
++
++#define CLIENT_W(FRAME, GRDATA) FRAME_TO_CLIENT_W(FRAME_W(FRAME), FRAME, GRDATA)
++#define CLIENT_H(FRAME, GRDATA) FRAME_TO_CLIENT_H(FRAME_H(FRAME), FRAME, GRDATA)
+
+
+ WThingFuntab frame_funtab={deinit_frame, frame_remove_child};
+@@ -658,6 +671,22 @@
+ geom->y=CLIENT_Y(frame, grdata);
+ geom->w=CLIENT_W(frame, grdata);
+ geom->h=CLIENT_H(frame, grdata);
++}
++
++void enable_border(WFrame *frame)
++{
++ frame->flags = frame->flags & (~WFRAME_NO_BORDER);
++
++ frame_fit_clients(frame);
++ draw_frame(frame,TRUE);
++}
++
++void disable_border(WFrame *frame)
++{
++ frame->flags = frame->flags | WFRAME_NO_BORDER;
++
++ frame_fit_clients(frame);
++ draw_frame(frame,TRUE);
+ }
+
+
+diff -r -u src.orig/frame.h src/frame.h
+--- src.orig/frame.h Fri Feb 8 22:23:17 2002
++++ src/frame.h Fri Mar 8 23:05:54 2002
+@@ -23,6 +23,7 @@
+ #define WFRAME_SHADE 0x0004
+ #define WFRAME_NO_BAR 0x0008
+ #define WFRAME_MAX_BOTH (WFRAME_MAX_VERT|WFRAME_MAX_HORIZ)
++#define WFRAME_NO_BORDER 0x0010
+
+ #define FRAME_SHORTCUT_W 23
+
+@@ -96,5 +97,8 @@
+ extern void split_top(WWorkspace *ws, char *str);
+
+ extern WFrame *find_frame_of(Window win);
++
++extern void enable_border(WFrame *frame);
++extern void disable_border(WFrame *frame);
+
+ #endif /* INCLUDED_FRAME_H */
+diff -r -u src.orig/function.c src/function.c
+--- src.orig/function.c Fri Feb 8 22:23:17 2002
++++ src/function.c Fri Mar 8 23:05:54 2002
+@@ -90,6 +90,9 @@
+ FN(d, generic, WFrame, "set_widthq", set_widthq),
+ FN(d, generic, WFrame, "set_heightq", set_heightq),
+
++ FN_VOID(generic, WFrame, "enable_border", enable_border),
++ FN_VOID(generic, WFrame, "disable_border", disable_border),
++
+ FN(s, generic, WWorkspace,"split_top", split_top),
+
+ /* client */
diff --git a/x11-wm/ion-2/files/patch-system.mk b/x11-wm/ion-2/files/patch-system.mk
index 45938ca823ed..4a952238ccd7 100644
--- a/x11-wm/ion-2/files/patch-system.mk
+++ b/x11-wm/ion-2/files/patch-system.mk
@@ -1,5 +1,5 @@
---- system.mk.orig Mon Mar 5 09:16:01 2001
-+++ system.mk Thu Mar 29 11:37:26 2001
+--- system.mk.orig Sat Jan 19 18:15:13 2002
++++ system.mk Sat Sep 7 15:53:15 2002
@@ -7,13 +7,13 @@
## Installation paths
##
@@ -33,8 +33,12 @@
# SunOS/Solaris
#X11_PREFIX=/usr/openwin
-@@ -86,8 +86,8 @@
- -Wparentheses -pedantic-errors -Wuninitialized
+@@ -83,11 +83,11 @@
+ # have unused variables.
+ WARN= -W -Wimplicit -Wreturn-type -Wswitch -Wcomment \
+ -Wtrigraphs -Wformat -Wchar-subscripts \
+- -Wparentheses -pedantic-errors -Wuninitialized
++ -Wparentheses -Wuninitialized
-CFLAGS=-g -O2 $(WARN) $(DEFINES) $(INCLUDES) $(EXTRA_INCLUDES)
diff --git a/x11-wm/ion-2/files/patch-winprop_frame b/x11-wm/ion-2/files/patch-winprop_frame
new file mode 100644
index 000000000000..412d82f36d56
--- /dev/null
+++ b/x11-wm/ion-2/files/patch-winprop_frame
@@ -0,0 +1,74 @@
+# This patch was originally sent to the ION mailing list by:
+# Alejandro Forero Cuervo <bachue@bachue.com>
+
+diff -Naur ChangeLog.orig ChangeLog
+--- ChangeLog.orig Tue Feb 5 23:46:01 2002
++++ ChangeLog Sat Feb 9 17:19:06 2002
+@@ -1,3 +1,6 @@
++2002-02-09:
++ * Implemented "frame" functionality for winprops (Alejandro Forero
++ <bachue@bachue.com>).
+
+ 2002-02-06:
+ * Added 'split_top "dir"' command.
+diff -Naur src.orig/clientwin.c src/clientwin.c
+--- src.orig/clientwin.c Wed Feb 6 18:41:22 2002
++++ src/clientwin.c Sat Feb 9 17:09:22 2002
+@@ -180,7 +180,10 @@
+ }
+ }
+
+- get_integer_property(win, wglobal.atom_frame_id, &frame_id);
++ if (props!=NULL && props->frame!=0)
++ frame_id=props->frame;
++ else
++ get_integer_property(win, wglobal.atom_frame_id, &frame_id);
+
+ /* Get client to place this window in */
+ if(client==NULL){
+diff -Naur src.orig/readconfig.c src/readconfig.c
+--- src.orig/readconfig.c Wed Feb 6 18:38:16 2002
++++ src/readconfig.c Sat Feb 9 17:24:01 2002
+@@ -674,6 +674,14 @@
+ return TRUE;
+ }
+
++
++static bool opt_winprop_frame(Tokenizer *tokz, int n, Token *toks)
++{
++ tmp_winprop->frame=TOK_LONG_VAL(&(toks[1]));
++ return TRUE;
++}
++
++
+ static bool opt_winprop_transient_mode(Tokenizer *tokz, int n, Token *toks)
+ {
+ char *mod=TOK_IDENT_VAL(&(toks[1]));
+@@ -721,6 +729,7 @@
+ tmp_winprop->data=wclass=TOK_TAKE_STRING_VAL(&(toks[1]));
+ tmp_winprop->switchto=-1;
+ tmp_winprop->stubborn=0;
++ tmp_winprop->frame=0;
+ tmp_winprop->transient_mode=TRANSIENT_MODE_NORMAL;
+
+ winstance=strchr(wclass, '.');
+@@ -799,6 +808,7 @@
+ {"switchto", "b", opt_winprop_switchto, NULL},
+ {"stubborn", "b", opt_winprop_stubborn, NULL},
+ {"transient_mode", "i", opt_winprop_transient_mode, NULL},
++ {"frame", "l", opt_winprop_frame, NULL},
+
+ {"#end", NULL, end_winprop, NULL},
+ /*{"#cancel", NULL, cancel_winprop, NULL},*/
+diff -Naur src.orig/winprops.h src/winprops.h
+--- src.orig/winprops.h Mon Mar 5 16:16:06 2001
++++ src/winprops.h Sat Feb 9 17:09:22 2002
+@@ -30,6 +30,7 @@
+ int transient_mode;
+ int max_w, max_h;
+ int aspect_w, aspect_h;
++ int frame;
+
+ WWinProp *next, *prev;
+ };
+
diff --git a/x11-wm/ion-devel/files/patch-disable_border b/x11-wm/ion-devel/files/patch-disable_border
new file mode 100644
index 000000000000..9afd88b74f34
--- /dev/null
+++ b/x11-wm/ion-devel/files/patch-disable_border
@@ -0,0 +1,162 @@
+# This patch was originally sent to the ION mailing list by:
+# Christian Mauduit <ufoot@ufoot.org>
+
+diff -r -u doc.orig/functions.txt doc/functions.txt
+--- doc.orig/functions.txt Fri Feb 8 22:23:17 2002
++++ doc/functions.txt Fri Mar 8 23:57:46 2002
+@@ -59,6 +59,13 @@
+ enabled
+
+
++Border control
++--------------
++
++disable_border Disables the border and the bar
++enable_border Enables the border and the bar
++
++
+ Close and destroy
+ -----------------
+
+diff -r -u src.orig/draw.c src/draw.c
+--- src.orig/draw.c Fri Feb 8 22:23:17 2002
++++ src/draw.c Fri Mar 8 23:53:34 2002
+@@ -136,6 +136,13 @@
+ DrawInfo _dinfo, *dinfo=&_dinfo;
+ WGRData *grdata=GRDATA_OF(frame);
+
++ if(complete)
++ XClearWindow(wglobal.dpy, FRAME_WIN(frame));
++
++ /* if the border is not active, we draw nothing here */
++ if (frame->flags & WFRAME_NO_BORDER)
++ return;
++
+ dinfo->win=FRAME_WIN(frame);
+ dinfo->grdata=grdata;
+ dinfo->gc=grdata->gc;
+@@ -143,15 +150,12 @@
+ dinfo->geom.w+=FRAME_W(frame);
+ dinfo->geom.h+=FRAME_H(frame);
+ dinfo->border=&(grdata->frame_border);
+-
++
+ if(IS_ACTIVE_FRAME(frame))
+ dinfo->colors=&(grdata->act_frame_colors);
+ else
+ dinfo->colors=&(grdata->frame_colors);
+
+- if(complete)
+- XClearWindow(wglobal.dpy, FRAME_WIN(frame));
+-
+ /*#if 1*/
+ draw_box(dinfo, FALSE);
+ /*#else
+@@ -191,6 +195,10 @@
+ WGRData *grdata=&(scr->grdata);
+ WRectangle bg;
+
++ /* if the border is not active, we draw nothing here */
++ if (frame->flags & WFRAME_NO_BORDER)
++ return;
++
+ frame_bar_geom(frame, &bg);
+
+ dinfo->win=FRAME_WIN(frame);
+diff -r -u src.orig/frame.c src/frame.c
+--- src.orig/frame.c Fri Feb 8 22:23:17 2002
++++ src/frame.c Fri Mar 8 23:53:37 2002
+@@ -41,15 +41,28 @@
+ #define BAR_W(FRAME, GRDATA) ((FRAME)->win.geom.w+(GRDATA)->bar_off.w)
+ #define BAR_H(FRAME, GRDATA) ((GRDATA)->bar_h)
+
+-#define FRAME_TO_CLIENT_W(W, GRDATA) ((W)+(GRDATA)->client_off.w)
+-#define FRAME_TO_CLIENT_H(H, GRDATA) ((H)+(GRDATA)->client_off.h)
+-#define CLIENT_TO_FRAME_W(W, GRDATA) ((W)-(GRDATA)->client_off.w)
+-#define CLIENT_TO_FRAME_H(H, GRDATA) ((H)-(GRDATA)->client_off.h)
+-
+-#define CLIENT_X(FRAME, GRDATA) ((GRDATA)->client_off.x)
+-#define CLIENT_Y(FRAME, GRDATA) ((GRDATA)->client_off.y)
+-#define CLIENT_W(FRAME, GRDATA) FRAME_TO_CLIENT_W(FRAME_W(FRAME), GRDATA)
+-#define CLIENT_H(FRAME, GRDATA) FRAME_TO_CLIENT_H(FRAME_H(FRAME), GRDATA)
++#define FRAME_TO_CLIENT_W(W, FRAME, GRDATA) \
++ (((FRAME)->flags & WFRAME_NO_BORDER) ? \
++ (W) : (W)+(GRDATA)->client_off.w)
++#define FRAME_TO_CLIENT_H(H, FRAME, GRDATA) \
++ (((FRAME)->flags & WFRAME_NO_BORDER) ? \
++ (H) : (H)+(GRDATA)->client_off.h)
++#define CLIENT_TO_FRAME_W(W, FRAME, GRDATA) \
++ (((FRAME)->flags & WFRAME_NO_BORDER) ? \
++ (W) : (W)-(GRDATA)->client_off.w)
++#define CLIENT_TO_FRAME_H(H, FRAME, GRDATA) \
++ (((FRAME)->flags & WFRAME_NO_BORDER) ? \
++ (H) : (H)-(GRDATA)->client_off.h)
++
++#define CLIENT_X(FRAME, GRDATA) \
++ ((FRAME)->flags & WFRAME_NO_BORDER ? \
++ 0 : (GRDATA)->client_off.x)
++#define CLIENT_Y(FRAME, GRDATA) \
++ ((FRAME)->flags & WFRAME_NO_BORDER ? \
++ 0 : (GRDATA)->client_off.y)
++
++#define CLIENT_W(FRAME, GRDATA) FRAME_TO_CLIENT_W(FRAME_W(FRAME), FRAME, GRDATA)
++#define CLIENT_H(FRAME, GRDATA) FRAME_TO_CLIENT_H(FRAME_H(FRAME), FRAME, GRDATA)
+
+
+ WThingFuntab frame_funtab={deinit_frame, frame_remove_child};
+@@ -658,6 +671,22 @@
+ geom->y=CLIENT_Y(frame, grdata);
+ geom->w=CLIENT_W(frame, grdata);
+ geom->h=CLIENT_H(frame, grdata);
++}
++
++void enable_border(WFrame *frame)
++{
++ frame->flags = frame->flags & (~WFRAME_NO_BORDER);
++
++ frame_fit_clients(frame);
++ draw_frame(frame,TRUE);
++}
++
++void disable_border(WFrame *frame)
++{
++ frame->flags = frame->flags | WFRAME_NO_BORDER;
++
++ frame_fit_clients(frame);
++ draw_frame(frame,TRUE);
+ }
+
+
+diff -r -u src.orig/frame.h src/frame.h
+--- src.orig/frame.h Fri Feb 8 22:23:17 2002
++++ src/frame.h Fri Mar 8 23:05:54 2002
+@@ -23,6 +23,7 @@
+ #define WFRAME_SHADE 0x0004
+ #define WFRAME_NO_BAR 0x0008
+ #define WFRAME_MAX_BOTH (WFRAME_MAX_VERT|WFRAME_MAX_HORIZ)
++#define WFRAME_NO_BORDER 0x0010
+
+ #define FRAME_SHORTCUT_W 23
+
+@@ -96,5 +97,8 @@
+ extern void split_top(WWorkspace *ws, char *str);
+
+ extern WFrame *find_frame_of(Window win);
++
++extern void enable_border(WFrame *frame);
++extern void disable_border(WFrame *frame);
+
+ #endif /* INCLUDED_FRAME_H */
+diff -r -u src.orig/function.c src/function.c
+--- src.orig/function.c Fri Feb 8 22:23:17 2002
++++ src/function.c Fri Mar 8 23:05:54 2002
+@@ -90,6 +90,9 @@
+ FN(d, generic, WFrame, "set_widthq", set_widthq),
+ FN(d, generic, WFrame, "set_heightq", set_heightq),
+
++ FN_VOID(generic, WFrame, "enable_border", enable_border),
++ FN_VOID(generic, WFrame, "disable_border", disable_border),
++
+ FN(s, generic, WWorkspace,"split_top", split_top),
+
+ /* client */
diff --git a/x11-wm/ion-devel/files/patch-system.mk b/x11-wm/ion-devel/files/patch-system.mk
index 45938ca823ed..4a952238ccd7 100644
--- a/x11-wm/ion-devel/files/patch-system.mk
+++ b/x11-wm/ion-devel/files/patch-system.mk
@@ -1,5 +1,5 @@
---- system.mk.orig Mon Mar 5 09:16:01 2001
-+++ system.mk Thu Mar 29 11:37:26 2001
+--- system.mk.orig Sat Jan 19 18:15:13 2002
++++ system.mk Sat Sep 7 15:53:15 2002
@@ -7,13 +7,13 @@
## Installation paths
##
@@ -33,8 +33,12 @@
# SunOS/Solaris
#X11_PREFIX=/usr/openwin
-@@ -86,8 +86,8 @@
- -Wparentheses -pedantic-errors -Wuninitialized
+@@ -83,11 +83,11 @@
+ # have unused variables.
+ WARN= -W -Wimplicit -Wreturn-type -Wswitch -Wcomment \
+ -Wtrigraphs -Wformat -Wchar-subscripts \
+- -Wparentheses -pedantic-errors -Wuninitialized
++ -Wparentheses -Wuninitialized
-CFLAGS=-g -O2 $(WARN) $(DEFINES) $(INCLUDES) $(EXTRA_INCLUDES)
diff --git a/x11-wm/ion-devel/files/patch-winprop_frame b/x11-wm/ion-devel/files/patch-winprop_frame
new file mode 100644
index 000000000000..412d82f36d56
--- /dev/null
+++ b/x11-wm/ion-devel/files/patch-winprop_frame
@@ -0,0 +1,74 @@
+# This patch was originally sent to the ION mailing list by:
+# Alejandro Forero Cuervo <bachue@bachue.com>
+
+diff -Naur ChangeLog.orig ChangeLog
+--- ChangeLog.orig Tue Feb 5 23:46:01 2002
++++ ChangeLog Sat Feb 9 17:19:06 2002
+@@ -1,3 +1,6 @@
++2002-02-09:
++ * Implemented "frame" functionality for winprops (Alejandro Forero
++ <bachue@bachue.com>).
+
+ 2002-02-06:
+ * Added 'split_top "dir"' command.
+diff -Naur src.orig/clientwin.c src/clientwin.c
+--- src.orig/clientwin.c Wed Feb 6 18:41:22 2002
++++ src/clientwin.c Sat Feb 9 17:09:22 2002
+@@ -180,7 +180,10 @@
+ }
+ }
+
+- get_integer_property(win, wglobal.atom_frame_id, &frame_id);
++ if (props!=NULL && props->frame!=0)
++ frame_id=props->frame;
++ else
++ get_integer_property(win, wglobal.atom_frame_id, &frame_id);
+
+ /* Get client to place this window in */
+ if(client==NULL){
+diff -Naur src.orig/readconfig.c src/readconfig.c
+--- src.orig/readconfig.c Wed Feb 6 18:38:16 2002
++++ src/readconfig.c Sat Feb 9 17:24:01 2002
+@@ -674,6 +674,14 @@
+ return TRUE;
+ }
+
++
++static bool opt_winprop_frame(Tokenizer *tokz, int n, Token *toks)
++{
++ tmp_winprop->frame=TOK_LONG_VAL(&(toks[1]));
++ return TRUE;
++}
++
++
+ static bool opt_winprop_transient_mode(Tokenizer *tokz, int n, Token *toks)
+ {
+ char *mod=TOK_IDENT_VAL(&(toks[1]));
+@@ -721,6 +729,7 @@
+ tmp_winprop->data=wclass=TOK_TAKE_STRING_VAL(&(toks[1]));
+ tmp_winprop->switchto=-1;
+ tmp_winprop->stubborn=0;
++ tmp_winprop->frame=0;
+ tmp_winprop->transient_mode=TRANSIENT_MODE_NORMAL;
+
+ winstance=strchr(wclass, '.');
+@@ -799,6 +808,7 @@
+ {"switchto", "b", opt_winprop_switchto, NULL},
+ {"stubborn", "b", opt_winprop_stubborn, NULL},
+ {"transient_mode", "i", opt_winprop_transient_mode, NULL},
++ {"frame", "l", opt_winprop_frame, NULL},
+
+ {"#end", NULL, end_winprop, NULL},
+ /*{"#cancel", NULL, cancel_winprop, NULL},*/
+diff -Naur src.orig/winprops.h src/winprops.h
+--- src.orig/winprops.h Mon Mar 5 16:16:06 2001
++++ src/winprops.h Sat Feb 9 17:09:22 2002
+@@ -30,6 +30,7 @@
+ int transient_mode;
+ int max_w, max_h;
+ int aspect_w, aspect_h;
++ int frame;
+
+ WWinProp *next, *prev;
+ };
+
diff --git a/x11-wm/ion/files/patch-disable_border b/x11-wm/ion/files/patch-disable_border
new file mode 100644
index 000000000000..9afd88b74f34
--- /dev/null
+++ b/x11-wm/ion/files/patch-disable_border
@@ -0,0 +1,162 @@
+# This patch was originally sent to the ION mailing list by:
+# Christian Mauduit <ufoot@ufoot.org>
+
+diff -r -u doc.orig/functions.txt doc/functions.txt
+--- doc.orig/functions.txt Fri Feb 8 22:23:17 2002
++++ doc/functions.txt Fri Mar 8 23:57:46 2002
+@@ -59,6 +59,13 @@
+ enabled
+
+
++Border control
++--------------
++
++disable_border Disables the border and the bar
++enable_border Enables the border and the bar
++
++
+ Close and destroy
+ -----------------
+
+diff -r -u src.orig/draw.c src/draw.c
+--- src.orig/draw.c Fri Feb 8 22:23:17 2002
++++ src/draw.c Fri Mar 8 23:53:34 2002
+@@ -136,6 +136,13 @@
+ DrawInfo _dinfo, *dinfo=&_dinfo;
+ WGRData *grdata=GRDATA_OF(frame);
+
++ if(complete)
++ XClearWindow(wglobal.dpy, FRAME_WIN(frame));
++
++ /* if the border is not active, we draw nothing here */
++ if (frame->flags & WFRAME_NO_BORDER)
++ return;
++
+ dinfo->win=FRAME_WIN(frame);
+ dinfo->grdata=grdata;
+ dinfo->gc=grdata->gc;
+@@ -143,15 +150,12 @@
+ dinfo->geom.w+=FRAME_W(frame);
+ dinfo->geom.h+=FRAME_H(frame);
+ dinfo->border=&(grdata->frame_border);
+-
++
+ if(IS_ACTIVE_FRAME(frame))
+ dinfo->colors=&(grdata->act_frame_colors);
+ else
+ dinfo->colors=&(grdata->frame_colors);
+
+- if(complete)
+- XClearWindow(wglobal.dpy, FRAME_WIN(frame));
+-
+ /*#if 1*/
+ draw_box(dinfo, FALSE);
+ /*#else
+@@ -191,6 +195,10 @@
+ WGRData *grdata=&(scr->grdata);
+ WRectangle bg;
+
++ /* if the border is not active, we draw nothing here */
++ if (frame->flags & WFRAME_NO_BORDER)
++ return;
++
+ frame_bar_geom(frame, &bg);
+
+ dinfo->win=FRAME_WIN(frame);
+diff -r -u src.orig/frame.c src/frame.c
+--- src.orig/frame.c Fri Feb 8 22:23:17 2002
++++ src/frame.c Fri Mar 8 23:53:37 2002
+@@ -41,15 +41,28 @@
+ #define BAR_W(FRAME, GRDATA) ((FRAME)->win.geom.w+(GRDATA)->bar_off.w)
+ #define BAR_H(FRAME, GRDATA) ((GRDATA)->bar_h)
+
+-#define FRAME_TO_CLIENT_W(W, GRDATA) ((W)+(GRDATA)->client_off.w)
+-#define FRAME_TO_CLIENT_H(H, GRDATA) ((H)+(GRDATA)->client_off.h)
+-#define CLIENT_TO_FRAME_W(W, GRDATA) ((W)-(GRDATA)->client_off.w)
+-#define CLIENT_TO_FRAME_H(H, GRDATA) ((H)-(GRDATA)->client_off.h)
+-
+-#define CLIENT_X(FRAME, GRDATA) ((GRDATA)->client_off.x)
+-#define CLIENT_Y(FRAME, GRDATA) ((GRDATA)->client_off.y)
+-#define CLIENT_W(FRAME, GRDATA) FRAME_TO_CLIENT_W(FRAME_W(FRAME), GRDATA)
+-#define CLIENT_H(FRAME, GRDATA) FRAME_TO_CLIENT_H(FRAME_H(FRAME), GRDATA)
++#define FRAME_TO_CLIENT_W(W, FRAME, GRDATA) \
++ (((FRAME)->flags & WFRAME_NO_BORDER) ? \
++ (W) : (W)+(GRDATA)->client_off.w)
++#define FRAME_TO_CLIENT_H(H, FRAME, GRDATA) \
++ (((FRAME)->flags & WFRAME_NO_BORDER) ? \
++ (H) : (H)+(GRDATA)->client_off.h)
++#define CLIENT_TO_FRAME_W(W, FRAME, GRDATA) \
++ (((FRAME)->flags & WFRAME_NO_BORDER) ? \
++ (W) : (W)-(GRDATA)->client_off.w)
++#define CLIENT_TO_FRAME_H(H, FRAME, GRDATA) \
++ (((FRAME)->flags & WFRAME_NO_BORDER) ? \
++ (H) : (H)-(GRDATA)->client_off.h)
++
++#define CLIENT_X(FRAME, GRDATA) \
++ ((FRAME)->flags & WFRAME_NO_BORDER ? \
++ 0 : (GRDATA)->client_off.x)
++#define CLIENT_Y(FRAME, GRDATA) \
++ ((FRAME)->flags & WFRAME_NO_BORDER ? \
++ 0 : (GRDATA)->client_off.y)
++
++#define CLIENT_W(FRAME, GRDATA) FRAME_TO_CLIENT_W(FRAME_W(FRAME), FRAME, GRDATA)
++#define CLIENT_H(FRAME, GRDATA) FRAME_TO_CLIENT_H(FRAME_H(FRAME), FRAME, GRDATA)
+
+
+ WThingFuntab frame_funtab={deinit_frame, frame_remove_child};
+@@ -658,6 +671,22 @@
+ geom->y=CLIENT_Y(frame, grdata);
+ geom->w=CLIENT_W(frame, grdata);
+ geom->h=CLIENT_H(frame, grdata);
++}
++
++void enable_border(WFrame *frame)
++{
++ frame->flags = frame->flags & (~WFRAME_NO_BORDER);
++
++ frame_fit_clients(frame);
++ draw_frame(frame,TRUE);
++}
++
++void disable_border(WFrame *frame)
++{
++ frame->flags = frame->flags | WFRAME_NO_BORDER;
++
++ frame_fit_clients(frame);
++ draw_frame(frame,TRUE);
+ }
+
+
+diff -r -u src.orig/frame.h src/frame.h
+--- src.orig/frame.h Fri Feb 8 22:23:17 2002
++++ src/frame.h Fri Mar 8 23:05:54 2002
+@@ -23,6 +23,7 @@
+ #define WFRAME_SHADE 0x0004
+ #define WFRAME_NO_BAR 0x0008
+ #define WFRAME_MAX_BOTH (WFRAME_MAX_VERT|WFRAME_MAX_HORIZ)
++#define WFRAME_NO_BORDER 0x0010
+
+ #define FRAME_SHORTCUT_W 23
+
+@@ -96,5 +97,8 @@
+ extern void split_top(WWorkspace *ws, char *str);
+
+ extern WFrame *find_frame_of(Window win);
++
++extern void enable_border(WFrame *frame);
++extern void disable_border(WFrame *frame);
+
+ #endif /* INCLUDED_FRAME_H */
+diff -r -u src.orig/function.c src/function.c
+--- src.orig/function.c Fri Feb 8 22:23:17 2002
++++ src/function.c Fri Mar 8 23:05:54 2002
+@@ -90,6 +90,9 @@
+ FN(d, generic, WFrame, "set_widthq", set_widthq),
+ FN(d, generic, WFrame, "set_heightq", set_heightq),
+
++ FN_VOID(generic, WFrame, "enable_border", enable_border),
++ FN_VOID(generic, WFrame, "disable_border", disable_border),
++
+ FN(s, generic, WWorkspace,"split_top", split_top),
+
+ /* client */
diff --git a/x11-wm/ion/files/patch-system.mk b/x11-wm/ion/files/patch-system.mk
index 45938ca823ed..4a952238ccd7 100644
--- a/x11-wm/ion/files/patch-system.mk
+++ b/x11-wm/ion/files/patch-system.mk
@@ -1,5 +1,5 @@
---- system.mk.orig Mon Mar 5 09:16:01 2001
-+++ system.mk Thu Mar 29 11:37:26 2001
+--- system.mk.orig Sat Jan 19 18:15:13 2002
++++ system.mk Sat Sep 7 15:53:15 2002
@@ -7,13 +7,13 @@
## Installation paths
##
@@ -33,8 +33,12 @@
# SunOS/Solaris
#X11_PREFIX=/usr/openwin
-@@ -86,8 +86,8 @@
- -Wparentheses -pedantic-errors -Wuninitialized
+@@ -83,11 +83,11 @@
+ # have unused variables.
+ WARN= -W -Wimplicit -Wreturn-type -Wswitch -Wcomment \
+ -Wtrigraphs -Wformat -Wchar-subscripts \
+- -Wparentheses -pedantic-errors -Wuninitialized
++ -Wparentheses -Wuninitialized
-CFLAGS=-g -O2 $(WARN) $(DEFINES) $(INCLUDES) $(EXTRA_INCLUDES)
diff --git a/x11-wm/ion/files/patch-winprop_frame b/x11-wm/ion/files/patch-winprop_frame
new file mode 100644
index 000000000000..412d82f36d56
--- /dev/null
+++ b/x11-wm/ion/files/patch-winprop_frame
@@ -0,0 +1,74 @@
+# This patch was originally sent to the ION mailing list by:
+# Alejandro Forero Cuervo <bachue@bachue.com>
+
+diff -Naur ChangeLog.orig ChangeLog
+--- ChangeLog.orig Tue Feb 5 23:46:01 2002
++++ ChangeLog Sat Feb 9 17:19:06 2002
+@@ -1,3 +1,6 @@
++2002-02-09:
++ * Implemented "frame" functionality for winprops (Alejandro Forero
++ <bachue@bachue.com>).
+
+ 2002-02-06:
+ * Added 'split_top "dir"' command.
+diff -Naur src.orig/clientwin.c src/clientwin.c
+--- src.orig/clientwin.c Wed Feb 6 18:41:22 2002
++++ src/clientwin.c Sat Feb 9 17:09:22 2002
+@@ -180,7 +180,10 @@
+ }
+ }
+
+- get_integer_property(win, wglobal.atom_frame_id, &frame_id);
++ if (props!=NULL && props->frame!=0)
++ frame_id=props->frame;
++ else
++ get_integer_property(win, wglobal.atom_frame_id, &frame_id);
+
+ /* Get client to place this window in */
+ if(client==NULL){
+diff -Naur src.orig/readconfig.c src/readconfig.c
+--- src.orig/readconfig.c Wed Feb 6 18:38:16 2002
++++ src/readconfig.c Sat Feb 9 17:24:01 2002
+@@ -674,6 +674,14 @@
+ return TRUE;
+ }
+
++
++static bool opt_winprop_frame(Tokenizer *tokz, int n, Token *toks)
++{
++ tmp_winprop->frame=TOK_LONG_VAL(&(toks[1]));
++ return TRUE;
++}
++
++
+ static bool opt_winprop_transient_mode(Tokenizer *tokz, int n, Token *toks)
+ {
+ char *mod=TOK_IDENT_VAL(&(toks[1]));
+@@ -721,6 +729,7 @@
+ tmp_winprop->data=wclass=TOK_TAKE_STRING_VAL(&(toks[1]));
+ tmp_winprop->switchto=-1;
+ tmp_winprop->stubborn=0;
++ tmp_winprop->frame=0;
+ tmp_winprop->transient_mode=TRANSIENT_MODE_NORMAL;
+
+ winstance=strchr(wclass, '.');
+@@ -799,6 +808,7 @@
+ {"switchto", "b", opt_winprop_switchto, NULL},
+ {"stubborn", "b", opt_winprop_stubborn, NULL},
+ {"transient_mode", "i", opt_winprop_transient_mode, NULL},
++ {"frame", "l", opt_winprop_frame, NULL},
+
+ {"#end", NULL, end_winprop, NULL},
+ /*{"#cancel", NULL, cancel_winprop, NULL},*/
+diff -Naur src.orig/winprops.h src/winprops.h
+--- src.orig/winprops.h Mon Mar 5 16:16:06 2001
++++ src/winprops.h Sat Feb 9 17:09:22 2002
+@@ -30,6 +30,7 @@
+ int transient_mode;
+ int max_w, max_h;
+ int aspect_w, aspect_h;
++ int frame;
+
+ WWinProp *next, *prev;
+ };
+
diff --git a/x11-wm/ion3/files/patch-disable_border b/x11-wm/ion3/files/patch-disable_border
new file mode 100644
index 000000000000..9afd88b74f34
--- /dev/null
+++ b/x11-wm/ion3/files/patch-disable_border
@@ -0,0 +1,162 @@
+# This patch was originally sent to the ION mailing list by:
+# Christian Mauduit <ufoot@ufoot.org>
+
+diff -r -u doc.orig/functions.txt doc/functions.txt
+--- doc.orig/functions.txt Fri Feb 8 22:23:17 2002
++++ doc/functions.txt Fri Mar 8 23:57:46 2002
+@@ -59,6 +59,13 @@
+ enabled
+
+
++Border control
++--------------
++
++disable_border Disables the border and the bar
++enable_border Enables the border and the bar
++
++
+ Close and destroy
+ -----------------
+
+diff -r -u src.orig/draw.c src/draw.c
+--- src.orig/draw.c Fri Feb 8 22:23:17 2002
++++ src/draw.c Fri Mar 8 23:53:34 2002
+@@ -136,6 +136,13 @@
+ DrawInfo _dinfo, *dinfo=&_dinfo;
+ WGRData *grdata=GRDATA_OF(frame);
+
++ if(complete)
++ XClearWindow(wglobal.dpy, FRAME_WIN(frame));
++
++ /* if the border is not active, we draw nothing here */
++ if (frame->flags & WFRAME_NO_BORDER)
++ return;
++
+ dinfo->win=FRAME_WIN(frame);
+ dinfo->grdata=grdata;
+ dinfo->gc=grdata->gc;
+@@ -143,15 +150,12 @@
+ dinfo->geom.w+=FRAME_W(frame);
+ dinfo->geom.h+=FRAME_H(frame);
+ dinfo->border=&(grdata->frame_border);
+-
++
+ if(IS_ACTIVE_FRAME(frame))
+ dinfo->colors=&(grdata->act_frame_colors);
+ else
+ dinfo->colors=&(grdata->frame_colors);
+
+- if(complete)
+- XClearWindow(wglobal.dpy, FRAME_WIN(frame));
+-
+ /*#if 1*/
+ draw_box(dinfo, FALSE);
+ /*#else
+@@ -191,6 +195,10 @@
+ WGRData *grdata=&(scr->grdata);
+ WRectangle bg;
+
++ /* if the border is not active, we draw nothing here */
++ if (frame->flags & WFRAME_NO_BORDER)
++ return;
++
+ frame_bar_geom(frame, &bg);
+
+ dinfo->win=FRAME_WIN(frame);
+diff -r -u src.orig/frame.c src/frame.c
+--- src.orig/frame.c Fri Feb 8 22:23:17 2002
++++ src/frame.c Fri Mar 8 23:53:37 2002
+@@ -41,15 +41,28 @@
+ #define BAR_W(FRAME, GRDATA) ((FRAME)->win.geom.w+(GRDATA)->bar_off.w)
+ #define BAR_H(FRAME, GRDATA) ((GRDATA)->bar_h)
+
+-#define FRAME_TO_CLIENT_W(W, GRDATA) ((W)+(GRDATA)->client_off.w)
+-#define FRAME_TO_CLIENT_H(H, GRDATA) ((H)+(GRDATA)->client_off.h)
+-#define CLIENT_TO_FRAME_W(W, GRDATA) ((W)-(GRDATA)->client_off.w)
+-#define CLIENT_TO_FRAME_H(H, GRDATA) ((H)-(GRDATA)->client_off.h)
+-
+-#define CLIENT_X(FRAME, GRDATA) ((GRDATA)->client_off.x)
+-#define CLIENT_Y(FRAME, GRDATA) ((GRDATA)->client_off.y)
+-#define CLIENT_W(FRAME, GRDATA) FRAME_TO_CLIENT_W(FRAME_W(FRAME), GRDATA)
+-#define CLIENT_H(FRAME, GRDATA) FRAME_TO_CLIENT_H(FRAME_H(FRAME), GRDATA)
++#define FRAME_TO_CLIENT_W(W, FRAME, GRDATA) \
++ (((FRAME)->flags & WFRAME_NO_BORDER) ? \
++ (W) : (W)+(GRDATA)->client_off.w)
++#define FRAME_TO_CLIENT_H(H, FRAME, GRDATA) \
++ (((FRAME)->flags & WFRAME_NO_BORDER) ? \
++ (H) : (H)+(GRDATA)->client_off.h)
++#define CLIENT_TO_FRAME_W(W, FRAME, GRDATA) \
++ (((FRAME)->flags & WFRAME_NO_BORDER) ? \
++ (W) : (W)-(GRDATA)->client_off.w)
++#define CLIENT_TO_FRAME_H(H, FRAME, GRDATA) \
++ (((FRAME)->flags & WFRAME_NO_BORDER) ? \
++ (H) : (H)-(GRDATA)->client_off.h)
++
++#define CLIENT_X(FRAME, GRDATA) \
++ ((FRAME)->flags & WFRAME_NO_BORDER ? \
++ 0 : (GRDATA)->client_off.x)
++#define CLIENT_Y(FRAME, GRDATA) \
++ ((FRAME)->flags & WFRAME_NO_BORDER ? \
++ 0 : (GRDATA)->client_off.y)
++
++#define CLIENT_W(FRAME, GRDATA) FRAME_TO_CLIENT_W(FRAME_W(FRAME), FRAME, GRDATA)
++#define CLIENT_H(FRAME, GRDATA) FRAME_TO_CLIENT_H(FRAME_H(FRAME), FRAME, GRDATA)
+
+
+ WThingFuntab frame_funtab={deinit_frame, frame_remove_child};
+@@ -658,6 +671,22 @@
+ geom->y=CLIENT_Y(frame, grdata);
+ geom->w=CLIENT_W(frame, grdata);
+ geom->h=CLIENT_H(frame, grdata);
++}
++
++void enable_border(WFrame *frame)
++{
++ frame->flags = frame->flags & (~WFRAME_NO_BORDER);
++
++ frame_fit_clients(frame);
++ draw_frame(frame,TRUE);
++}
++
++void disable_border(WFrame *frame)
++{
++ frame->flags = frame->flags | WFRAME_NO_BORDER;
++
++ frame_fit_clients(frame);
++ draw_frame(frame,TRUE);
+ }
+
+
+diff -r -u src.orig/frame.h src/frame.h
+--- src.orig/frame.h Fri Feb 8 22:23:17 2002
++++ src/frame.h Fri Mar 8 23:05:54 2002
+@@ -23,6 +23,7 @@
+ #define WFRAME_SHADE 0x0004
+ #define WFRAME_NO_BAR 0x0008
+ #define WFRAME_MAX_BOTH (WFRAME_MAX_VERT|WFRAME_MAX_HORIZ)
++#define WFRAME_NO_BORDER 0x0010
+
+ #define FRAME_SHORTCUT_W 23
+
+@@ -96,5 +97,8 @@
+ extern void split_top(WWorkspace *ws, char *str);
+
+ extern WFrame *find_frame_of(Window win);
++
++extern void enable_border(WFrame *frame);
++extern void disable_border(WFrame *frame);
+
+ #endif /* INCLUDED_FRAME_H */
+diff -r -u src.orig/function.c src/function.c
+--- src.orig/function.c Fri Feb 8 22:23:17 2002
++++ src/function.c Fri Mar 8 23:05:54 2002
+@@ -90,6 +90,9 @@
+ FN(d, generic, WFrame, "set_widthq", set_widthq),
+ FN(d, generic, WFrame, "set_heightq", set_heightq),
+
++ FN_VOID(generic, WFrame, "enable_border", enable_border),
++ FN_VOID(generic, WFrame, "disable_border", disable_border),
++
+ FN(s, generic, WWorkspace,"split_top", split_top),
+
+ /* client */
diff --git a/x11-wm/ion3/files/patch-system.mk b/x11-wm/ion3/files/patch-system.mk
index 45938ca823ed..4a952238ccd7 100644
--- a/x11-wm/ion3/files/patch-system.mk
+++ b/x11-wm/ion3/files/patch-system.mk
@@ -1,5 +1,5 @@
---- system.mk.orig Mon Mar 5 09:16:01 2001
-+++ system.mk Thu Mar 29 11:37:26 2001
+--- system.mk.orig Sat Jan 19 18:15:13 2002
++++ system.mk Sat Sep 7 15:53:15 2002
@@ -7,13 +7,13 @@
## Installation paths
##
@@ -33,8 +33,12 @@
# SunOS/Solaris
#X11_PREFIX=/usr/openwin
-@@ -86,8 +86,8 @@
- -Wparentheses -pedantic-errors -Wuninitialized
+@@ -83,11 +83,11 @@
+ # have unused variables.
+ WARN= -W -Wimplicit -Wreturn-type -Wswitch -Wcomment \
+ -Wtrigraphs -Wformat -Wchar-subscripts \
+- -Wparentheses -pedantic-errors -Wuninitialized
++ -Wparentheses -Wuninitialized
-CFLAGS=-g -O2 $(WARN) $(DEFINES) $(INCLUDES) $(EXTRA_INCLUDES)
diff --git a/x11-wm/ion3/files/patch-winprop_frame b/x11-wm/ion3/files/patch-winprop_frame
new file mode 100644
index 000000000000..412d82f36d56
--- /dev/null
+++ b/x11-wm/ion3/files/patch-winprop_frame
@@ -0,0 +1,74 @@
+# This patch was originally sent to the ION mailing list by:
+# Alejandro Forero Cuervo <bachue@bachue.com>
+
+diff -Naur ChangeLog.orig ChangeLog
+--- ChangeLog.orig Tue Feb 5 23:46:01 2002
++++ ChangeLog Sat Feb 9 17:19:06 2002
+@@ -1,3 +1,6 @@
++2002-02-09:
++ * Implemented "frame" functionality for winprops (Alejandro Forero
++ <bachue@bachue.com>).
+
+ 2002-02-06:
+ * Added 'split_top "dir"' command.
+diff -Naur src.orig/clientwin.c src/clientwin.c
+--- src.orig/clientwin.c Wed Feb 6 18:41:22 2002
++++ src/clientwin.c Sat Feb 9 17:09:22 2002
+@@ -180,7 +180,10 @@
+ }
+ }
+
+- get_integer_property(win, wglobal.atom_frame_id, &frame_id);
++ if (props!=NULL && props->frame!=0)
++ frame_id=props->frame;
++ else
++ get_integer_property(win, wglobal.atom_frame_id, &frame_id);
+
+ /* Get client to place this window in */
+ if(client==NULL){
+diff -Naur src.orig/readconfig.c src/readconfig.c
+--- src.orig/readconfig.c Wed Feb 6 18:38:16 2002
++++ src/readconfig.c Sat Feb 9 17:24:01 2002
+@@ -674,6 +674,14 @@
+ return TRUE;
+ }
+
++
++static bool opt_winprop_frame(Tokenizer *tokz, int n, Token *toks)
++{
++ tmp_winprop->frame=TOK_LONG_VAL(&(toks[1]));
++ return TRUE;
++}
++
++
+ static bool opt_winprop_transient_mode(Tokenizer *tokz, int n, Token *toks)
+ {
+ char *mod=TOK_IDENT_VAL(&(toks[1]));
+@@ -721,6 +729,7 @@
+ tmp_winprop->data=wclass=TOK_TAKE_STRING_VAL(&(toks[1]));
+ tmp_winprop->switchto=-1;
+ tmp_winprop->stubborn=0;
++ tmp_winprop->frame=0;
+ tmp_winprop->transient_mode=TRANSIENT_MODE_NORMAL;
+
+ winstance=strchr(wclass, '.');
+@@ -799,6 +808,7 @@
+ {"switchto", "b", opt_winprop_switchto, NULL},
+ {"stubborn", "b", opt_winprop_stubborn, NULL},
+ {"transient_mode", "i", opt_winprop_transient_mode, NULL},
++ {"frame", "l", opt_winprop_frame, NULL},
+
+ {"#end", NULL, end_winprop, NULL},
+ /*{"#cancel", NULL, cancel_winprop, NULL},*/
+diff -Naur src.orig/winprops.h src/winprops.h
+--- src.orig/winprops.h Mon Mar 5 16:16:06 2001
++++ src/winprops.h Sat Feb 9 17:09:22 2002
+@@ -30,6 +30,7 @@
+ int transient_mode;
+ int max_w, max_h;
+ int aspect_w, aspect_h;
++ int frame;
+
+ WWinProp *next, *prev;
+ };
+