summaryrefslogtreecommitdiff
path: root/x11-wm/ion-2/files/patch-disable_border
blob: 9afd88b74f34ea0eca7e8bfe39d4dabea7fbb566 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
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 */