Transparency4=20patch=20for=20Carbon=20Emacs=20Package=0AThis=20file=20=
can=20be=20redistributed=20and/or=20modified=20under=20the=20terms=20of=20=
the=20GNU=0AGeneral=20Public=20License=20as=20published=20by=20the=20=
Free=20Software=20Foundation;=20either=0Aversion=203,=20or=20(at=20your=20=
option)=20any=20later=20version.=0A---=20=
../emacs-22.1.orig/lisp/frame.el=092007-01-20=2022:53:11.000000000=20=
-0500=0A+++=20lisp/frame.el=092007-07-01=2020:07:53.000000000=20-0400=0A=
@@=20-929,6=20+929,17=20@@=0A=20=20=20(modify-frame-parameters=20=
(selected-frame)=0A=20=09=09=09=20=20=20(list=20(cons=20'border-color=20=
color-name))))=0A=20=0A+=20=20(defun=20set-alpha=20(alpha=20&optional=20=
frame)=0A+=20=20=20=20"Set=20the=20opacity=20of=20FRAME=20to=20ALPHA.=20=20=
First=20argument=20ALPHA=20=0A+should=20range=20from=200=20(invisible)=20=
to=20100=20(completely=20opaque).=0A+You=20can=20also=20use=20an=20=
floating=20point=20number=200.0=20to=201.0.=0A+When=20called=20=
interactively,=20prompt=20for=20the=20value=20of=20the=20opacity=20to=20=
set.=0A+FRAME=20defaults=20to=20the=20selected=20frame.=20=20To=20get=20=
the=20frame's=20current=0A+alpha=20value=20state,=20use=20=
`frame-parameters'."=0A+=20=20=20=20(interactive=20"XWindow=20Opacity=20=
(0-100=20or=200.0-1.0)=20:=20")=0A+=20=20=20=20(modify-frame-parameters=20=
frame=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20(list=20(cons=20'alpha=20alpha))))=0A+=0A=20(defun=20=
auto-raise-mode=20(arg)=0A=20=20=20"Toggle=20whether=20or=20not=20the=20=
selected=20frame=20should=20auto-raise.=0A=20With=20arg,=20turn=20=
auto-raise=20mode=20on=20if=20and=20only=20if=20arg=20is=20positive.=0A=
---=20../emacs-22.1.orig/src/frame.c=092007-02-19=2020:56:11.000000000=20=
-0500=0A+++=20src/frame.c=092007-07-01=2020:07:53.000000000=20-0400=0A@@=20=
-60,6=20+60,12=20@@=0A=20=20=20=20Normally=20"Emacs".=20=20*/=0A=20=0A=20=
Lisp_Object=20Vx_resource_class;=0A+=0A+#if=20defined=20(HAVE_X_WINDOWS)=20=
||=20defined=20(HAVE_CARBON)=20||=20defined=20(WINDOWSNT)=0A+/*=20Lower=20=
limit=20value=20of=20frame=20transparency.=20=20*/=0A+=0A+Lisp_Object=20=
Vframe_alpha_lower_limit;=0A+#endif=0A=20=0A=20#endif=0A=20=0A@@=20=
-105,6=20+105,9=20@@=0A=20Lisp_Object=20Qleft_fringe,=20Qright_fringe;=0A=
=20Lisp_Object=20Qbuffer_predicate,=20Qbuffer_list;=0A=20Lisp_Object=20=
Qtty_color_mode;=0A+#if=20defined=20(HAVE_X_WINDOWS)=20||=20defined=20=
(HAVE_CARBON)=20||=20defined=20(WINDOWSNT)=0A+Lisp_Object=20Qalpha;=0A=
+#endif=0A=20=0A=20Lisp_Object=20Qfullscreen,=20Qfullwidth,=20=
Qfullheight,=20Qfullboth;=0A=20=0A@@=20-2580,6=20+2581,9=20@@=0A=20=20=20=
{"right-fringe",=09=09&Qright_fringe},=0A=20=20=20{"wait-for-wm",=09=09=
&Qwait_for_wm},=0A=20=20=20{"fullscreen",=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20&Qfullscreen},=0A+#if=20defined=20(HAVE_X_WINDOWS)=20||=20=
defined=20(HAVE_CARBON)=20||=20defined=20(WINDOWSNT)=0A+=20=20{"alpha",=09=
=09=09=20&Qalpha},=0A+#endif=0A=20};=0A=20=0A=20#ifdef=20=
HAVE_WINDOW_SYSTEM=0A@@=20-4078,6=20+4079,12=20@@=0A=20but=20binding=20=
this=20variable=20locally=20around=20a=20call=20to=20`x-get-resource'=0A=20=
is=20a=20reasonable=20practice.=20=20See=20also=20the=20variable=20=
`x-resource-name'.=20=20*/);=0A=20=20=20Vx_resource_class=20=3D=20=
build_string=20(EMACS_CLASS);=0A+=0A+#if=20defined=20(HAVE_X_WINDOWS)=20=
||=20defined=20(HAVE_CARBON)=20||=20defined=20(WINDOWSNT)=0A+=20=20=
DEFVAR_LISP=20("frame-alpha-lower-limit",=20&Vframe_alpha_lower_limit,=0A=
+=20=20=20=20doc:=20/*=20Lower=20limit=20of=20alpha=20value=20of=20=
frame.=20=20*/);=0A+=20=20Vframe_alpha_lower_limit=20=3D=20make_number=20=
(20);=0A+#endif=0A=20#endif=0A=20=0A=20=20=20DEFVAR_LISP=20=
("default-frame-alist",=20&Vdefault_frame_alist,=0A---=20=
../emacs-22.1.orig/src/frame.h=092007-01-20=2023:18:16.000000000=20-0500=0A=
+++=20src/frame.h=092007-07-01=2020:07:53.000000000=20-0400=0A@@=20=
-453,6=20+453,11=20@@=0A=20=20=20/*=20Additional=20space=20to=20put=20=
between=20text=20lines=20on=20this=20frame.=20=20*/=0A=20=20=20int=20=
extra_line_spacing;=0A=20=0A+#if=20defined=20(HAVE_X_WINDOWS)=20||=20=
defined=20(HAVE_CARBON)=20||=20defined=20(WINDOWSNT)=0A+=20=20/*=20=
Opacity=20of=20the=20Frame=20=20*/=0A+=20=20double=20alpha[2];=0A+#endif=0A=
+=0A=20=20=20/*=20Set=20to=20non-zero=20in=20change_frame_size=20when=20=
size=20of=20frame=20changed=0A=20=20=20=20=20=20Clear=20the=20frame=20in=20=
clear_garbaged_frames=20if=20set.=20=20*/=0A=20=20=20unsigned=20=
resized_p=20:=201;=0A@@=20-1009,6=20+1020,9=20@@=0A=20extern=20=
Lisp_Object=20Qline_spacing;=0A=20extern=20Lisp_Object=20Qwait_for_wm;=0A=
=20extern=20Lisp_Object=20Qfullscreen;=0A+#if=20defined=20=
(HAVE_X_WINDOWS)=20||=20defined=20(HAVE_CARBON)=20||=20defined=20=
(WINDOWSNT)=0A+extern=20Lisp_Object=20Qalpha;=0A+#endif=0A=20=0A=20=
extern=20Lisp_Object=20Qleft_fringe,=20Qright_fringe;=0A=20extern=20=
Lisp_Object=20Qheight,=20Qwidth;=0A@@=20-1054,6=20+1065,9=20@@=0A=20=0A=20=
extern=20Lisp_Object=20Vx_resource_name;=0A=20extern=20Lisp_Object=20=
Vx_resource_class;=0A+#if=20defined=20(HAVE_X_WINDOWS)=20||=20defined=20=
(HAVE_CARBON)=20||=20defined=20(WINDOWSNT)=0A+extern=20Lisp_Object=20=
Vframe_alpha_lower_limit;=0A+#endif=0A=20=0A=20=0A=20extern=20=
Lisp_Object=20Qface_set_after_frame_default;=0A---=20=
../emacs-22.1.orig/src/macfns.c=092007-03-26=2022:31:40.000000000=20=
-0400=0A+++=20src/macfns.c=092007-07-01=2020:07:53.000000000=20-0400=0A=
@@=20-223,6=20+224,8=20@@=0A=20=0A=20=0C=0A=20=0A+extern=20void=20=
x_set_frame_alpha=20P_=20((struct=20frame=20*));=0A+=0A=20/*=20Store=20=
the=20screen=20positions=20of=20frame=20F=20into=20XPTR=20and=20YPTR.=0A=20=
=20=20=20These=20are=20the=20positions=20of=20the=20containing=20window=20=
manager=20window,=0A=20=20=20=20not=20Emacs's=20own=20window.=20=20*/=0A=
@@=20-1886,6=20+1889,62=20@@=0A=20=20=20x_set_name_internal=20(f,=20=
name);=0A=20}=0A=20=0A+static=20void=0A+x_set_alpha=20(f,=20arg,=20=
oldval)=0A+=20=20=20=20=20struct=20frame=20*f;=0A+=20=20=20=20=20=
Lisp_Object=20arg,=20oldval;=0A+{=0A+=20=20double=20alpha=20=3D=201.0;=0A=
+=20=20double=20newval[2];=0A+=20=20int=20i,=20ialpha;=0A+=20=20=
Lisp_Object=20item;=0A+=0A+=20=20for(=20i=3D0;=20i<2;=20i++=20)=0A+=20=20=
=20=20newval[i]=20=3D=201.0;=0A+=0A+=20=20for(=20i=3D0;=20i<2;=20i++=20)=0A=
+=20=20=20=20{=0A+=20=20=20=20=20=20if(=20CONSP=20(arg)=20)=0A+=20=20=20=20=
=20=20=20=20{=0A+=20=20=20=20=20=20=20=20=20=20item=20=3D=20CAR=20(arg);=0A=
+=20=20=20=20=20=20=20=20=20=20arg=20=20=3D=20CDR=20(arg);=0A+=20=20=20=20=
=20=20=20=20}=0A+=20=20=20=20=20=20else=0A+=20=20=20=20=20=20=20=20=
item=3Darg;=0A+=0A+=20=20=20=20=20=20if(=20!NILP=20(item)=20)=0A+=20=20=20=
=20=20=20=20=20{=0A+=20=20=20=20=20=20=20=20=20=20if(=20FLOATP(item)=20)=0A=
+=20=20=20=20=20=20=20=20=20=20=20=20{=0A+=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20alpha=20=3D=20XFLOAT_DATA=20(item);=0A+=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20if=20(=20alpha=20<=200.0=20||=201.0=20<=20alpha=20)=0A+=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20args_out_of_range=20=
(make_float=20(0.0),=20make_float=20(1.0));=0A+=20=20=20=20=20=20=20=20=20=
=20=20=20}=0A+=20=20=20=20=20=20=20=20=20=20else=20if(=20INTEGERP(item)=20=
)=0A+=20=20=20=20=20=20=20=20=20=20=20=20{=0A+=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20ialpha=20=3D=20XINT=20(item);=0A+=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20if=20(=20ialpha=20<=200=20||=20100=20<=20ialpha=20)=0A+=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20args_out_of_range=20=
(make_number=20(0),=20make_number=20(100));=0A+=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20else=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
alpha=20=3D=20ialpha=20/=20100.0;=0A+=20=20=20=20=20=20=20=20=20=20=20=20=
}=0A+=20=20=20=20=20=20=20=20=20=20else=0A+=20=20=20=20=20=20=20=20=20=20=
=20=20wrong_type_argument=20(Qnumberp,=20item);=0A+=20=20=20=20=20=20=20=20=
}=0A+=20=20=20=20=20=20newval[i]=3Dalpha;=0A+=20=20=20=20}=0A+=0A+=20=20=
for=20(=20i=3D0;=20i<2;=20i++=20)=0A+=20=20=20=20f->alpha[i]=20=3D=20=
newval[i];=0A+=0A+#if=20TARGET_API_MAC_CARBON=0A+=20=20BLOCK_INPUT;=0A+=20=
=20x_set_frame_alpha=20(f);=0A+=20=20UNBLOCK_INPUT;=0A+#endif=0A+=0A+=20=20=
return;=0A+}=0A=20void=0A=20x_set_scroll_bar_default_width=20(f)=0A=20=20=
=20=20=20=20struct=20frame=20*f;=0A@@=20-2760,6=20+2836,8=20@@=0A=20=20=20=
x_default_parameter=20(f,=20parms,=20Qscroll_bar_width,=20Qnil,=0A=20=09=09=
=20=20=20=20=20=20=20"scrollBarWidth",=20"ScrollBarWidth",=0A=20=09=09=20=
=20=20=20=20=20=20RES_TYPE_NUMBER);=0A+=20=20x_default_parameter=20(f,=20=
parms,=20Qalpha,=20Qnil,=0A+=09=09=20=20=20=20=20=20=20"alpha",=20=
"Alpha",=20RES_TYPE_NUMBER);=0A=20=0A=20=20=20/*=20Dimensions,=20=
especially=20FRAME_LINES=20(f),=20must=20be=20done=20via=20=
change_frame_size.=0A=20=20=20=20=20=20Change=20will=20not=20be=20=
effected=20unless=20different=20from=20the=20current=0A@@=20-4677,6=20=
+4755,7=20@@=0A=20=20=20x_set_fringe_width,=0A=20=20=200,=20/*=20=
x_set_wait_for_wm,=20*/=0A=20=20=20x_set_fullscreen,=0A+=20=20=
x_set_alpha,=0A=20};=0A=20=0A=20void=0A---=20=
../emacs-22.1.orig/src/macterm.c=092007-05-25=2008:43:34.000000000=20=
-0400=0A+++=20src/macterm.c=092007-07-01=2020:07:53.000000000=20-0400=0A=
@@=20-2540,6=20+2540,37=20@@=0A=20=20=20return=20FONT_TYPE_UNKNOWN;=0A=20=
}=0A=20=0A+void=0A+x_set_frame_alpha=20(f)=0A+=20=20=20=20=20struct=20=
frame=20*f;=0A+{=0A+=20=20struct=20mac_display_info=20*dpyinfo=20=3D=20=
FRAME_MAC_DISPLAY_INFO=20(f);=0A+=20=20SInt32=20response;=0A+=20=20OSErr=20=
err;=0A+=20=20double=20alpha=20=3D=201.0,=20alpha_lower_limit=20=3D=20=
1.0;=0A+=0A+=20=20BLOCK_INPUT;=0A+=20=20err=20=3D=20Gestalt=20=
(gestaltSystemVersion,=20&response);=0A+=20=20UNBLOCK_INPUT;=0A+=0A+=20=20=
if=20(dpyinfo->x_highlight_frame=20=3D=3D=20f)=0A+=20=20=20=20alpha=20=3D=20=
f->alpha[0];=0A+=20=20else=0A+=20=20=20=20alpha=20=3D=20f->alpha[1];=0A+=0A=
+=20=20if(=20FLOATP(Vframe_alpha_lower_limit)=20)=0A+=20=20=20=20=
alpha_lower_limit=20=3D=20XFLOAT_DATA=20(Vframe_alpha_lower_limit);=0A+=20=
=20else=20if(=20INTEGERP(Vframe_alpha_lower_limit)=20)=0A+=20=20=20=20=
alpha_lower_limit=20=3D=20(=20XINT=20(Vframe_alpha_lower_limit)=20)=20/=20=
100.0;=0A+=0A+=20=20if(=20alpha=20<=200.0=20||=201.0=20<=20alpha=20)=20=
alpha=20=3D=201.0;=0A+=20=20if(=200.0=20<=20alpha=20&&=20alpha=20<=20=
alpha_lower_limit=20&&=20alpha_lower_limit=20<=201.0=20)=0A+=20=20=20=20=
alpha=20=3D=20alpha_lower_limit;=0A+=0A+=20=20if=20((err=20=3D=3D=20=
noErr)=20&&=20(response=20>=3D=200x1020))=20{=0A+=20=20=20=20=
SetWindowAlpha=20(FRAME_MAC_WINDOW(f),=20alpha=20);=0A+=20=20}=0A+}=0A=20=
=0A=20=0C=0A=20=
/***********************************************************************=0A=
@@=20-4267,6=20+4290,7=20@@=0A=20=20=20=20=20ActivateControl=20=
(root_control);=0A=20=20=20UNBLOCK_INPUT;=0A=20=20=20x_update_cursor=20=
(f,=201);=0A+=20=20x_set_frame_alpha=20(f);=0A=20}=0A=20=0A=20static=20=
void=0A@@=20-4282,6=20+4306,7=20@@=0A=20=20=20=20=20DeactivateControl=20=
(root_control);=0A=20=20=20UNBLOCK_INPUT;=0A=20=20=20x_update_cursor=20=
(f,=201);=0A+=20=20x_set_frame_alpha=20(f);=0A=20}=0A=20=0A=20/*=20The=20=
focus=20has=20changed.=20=20Update=20the=20frames=20as=20necessary=20to=20=
reflect=0A---=20../emacs-22.1.orig/src/xfns.c=092007-06-02=20=
00:00:11.000000000=20-0400=0A+++=20src/xfns.c=092007-07-01=20=
20:07:54.000000000=20-0400=0A@@=20-565,6=20+567,8=20@@=0A=20=09=09=09=09=09=
=09=09=20=20=20=20=20Lisp_Object,=0A=20=09=09=09=09=09=09=09=20=20=20=20=20=
char=20*,=20char=20*,=0A=20=09=09=09=09=09=09=09=20=20=20=20=20int));=0A=
+extern=20void=20x_set_frame_alpha=20P_=20((struct=20frame=20*));=0A+=0A=20=
=0C=0A=20=0A=20/*=20Store=20the=20screen=20positions=20of=20frame=20F=20=
into=20XPTR=20and=20YPTR.=0A@@=20-1817,6=20+1821,61=20@@=0A=20#endif=0A=20=
}=0A=20=0A+static=20void=0A+x_set_alpha=20(f,=20arg,=20oldval)=0A+=20=20=20=
=20=20struct=20frame=20*f;=0A+=20=20=20=20=20Lisp_Object=20arg,=20=
oldval;=0A+{=0A+=20=20double=20alpha=20=3D=201.0;=0A+=20=20double=20=
newval[2];=0A+=20=20int=20i,=20ialpha;=0A+=20=20Lisp_Object=20item;=0A+=0A=
+=20=20for(=20i=3D0;=20i<2;=20i++=20)=0A+=20=20=20=20newval[i]=20=3D=20=
1.0;=0A+=0A+=20=20for(=20i=3D0;=20i<2;=20i++=20)=0A+=20=20=20=20{=0A+=20=20=
=20=20=20=20if(=20CONSP=20(arg)=20)=0A+=20=20=20=20=20=20=20=20{=0A+=20=20=
=20=20=20=20=20=20=20=20item=20=3D=20CAR=20(arg);=0A+=20=20=20=20=20=20=20=
=20=20=20arg=20=20=3D=20CDR=20(arg);=0A+=20=20=20=20=20=20=20=20}=0A+=20=20=
=20=20=20=20else=0A+=20=20=20=20=20=20=20=20item=3Darg;=0A+=0A+=20=20=20=20=
=20=20if(=20!NILP=20(item)=20)=0A+=20=20=20=20=20=20=20=20{=0A+=20=20=20=20=
=20=20=20=20=20=20if(=20FLOATP(item)=20)=0A+=20=20=20=20=20=20=20=20=20=20=
=20=20{=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20alpha=20=3D=20=
XFLOAT_DATA=20(item);=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20if=20=
(=20alpha=20<=200.0=20||=201.0=20<=20alpha=20)=0A+=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20args_out_of_range=20(make_float=20(0.0),=20=
make_float=20(1.0));=0A+=20=20=20=20=20=20=20=20=20=20=20=20}=0A+=20=20=20=
=20=20=20=20=20=20=20else=20if(=20INTEGERP(item)=20)=0A+=20=20=20=20=20=20=
=20=20=20=20=20=20{=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20ialpha=20=
=3D=20XINT=20(item);=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20if=20(=20=
ialpha=20<=200=20||=20100=20<=20ialpha=20)=0A+=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20args_out_of_range=20(make_number=20(0),=20=
make_number=20(100));=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20else=0A=
+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20alpha=20=3D=20ialpha=20=
/=20100.0;=0A+=20=20=20=20=20=20=20=20=20=20=20=20}=0A+=20=20=20=20=20=20=
=20=20=20=20else=0A+=20=20=20=20=20=20=20=20=20=20=20=20=
wrong_type_argument=20(Qnumberp,=20item);=0A+=20=20=20=20=20=20=20=20}=0A=
+=20=20=20=20=20=20newval[i]=3Dalpha;=0A+=20=20=20=20}=0A+=0A+=20=20for=20=
(=20i=3D0;=20i<2;=20i++=20)=0A+=20=20=20=20f->alpha[i]=20=3D=20=
newval[i];=0A+=0A+=20=20BLOCK_INPUT;=0A+=20=20x_set_frame_alpha=20(f);=0A=
+=20=20UNBLOCK_INPUT;=0A+=0A+=20=20return;=0A+}=0A+=0A=20=0C=0A=20/*=20=
Record=20in=20frame=20F=20the=20specified=20or=20default=20value=20=
according=20to=20ALIST=0A=20=20=20=20of=20the=20parameter=20named=20PROP=20=
(a=20Lisp=20symbol).=20=20If=20no=20value=20is=0A@@=20-3372,6=20+3443,8=20=
@@=0A=20=20=20x_default_parameter=20(f,=20parms,=20Qscroll_bar_width,=20=
Qnil,=0A=20=09=09=20=20=20=20=20=20=20"scrollBarWidth",=20=
"ScrollBarWidth",=0A=20=09=09=20=20=20=20=20=20=20RES_TYPE_NUMBER);=0A+=20=
=20x_default_parameter=20(f,=20parms,=20Qalpha,=20Qnil,=0A+=09=09=20=20=20=
=20=20=20=20"alpha",=20"Alpha",=20RES_TYPE_NUMBER);=0A=20=0A=20=20=20/*=20=
Dimensions,=20especially=20FRAME_LINES=20(f),=20must=20be=20done=20via=20=
change_frame_size.=0A=20=20=20=20=20=20Change=20will=20not=20be=20=
effected=20unless=20different=20from=20the=20current=0A@@=20-5755,6=20=
+5828,7=20@@=0A=20=20=20x_set_fringe_width,=0A=20=20=20=
x_set_wait_for_wm,=0A=20=20=20x_set_fullscreen,=0A+=20=20x_set_alpha,=0A=20=
};=0A=20=0A=20void=0A---=20../emacs-22.1.orig/src/xterm.c=092007-05-25=20=
08:43:35.000000000=20-0400=0A+++=20src/xterm.c=092007-07-01=20=
20:07:54.000000000=20-0400=0A@@=20-954,6=20+954,66=20@@=0A=20=20=20=
return=20FONT_TYPE_UNKNOWN;=0A=20}=0A=20=0A+#define=20OPAQUE=20=20=
0xffffffff=0A+#define=20OPACITY=20"_NET_WM_WINDOW_OPACITY"=0A+=0A+void=0A=
+x_set_frame_alpha=20(f)=0A+=20=20=20=20=20struct=20frame=20*f;=0A+{=0A+=20=
=20struct=20x_display_info=20*dpyinfo=20=3D=20FRAME_X_DISPLAY_INFO=20=
(f);=0A+=20=20Display=20*dpy=20=3D=20FRAME_X_DISPLAY=20(f);=0A+=20=20=
Window=20win=20=3D=20FRAME_OUTER_WINDOW=20(f);=0A+=20=20if=20=
(FRAME_X_DISPLAY_INFO=20(f)->root_window=20!=3D=20FRAME_X_OUTPUT=20=
(f)->parent_desc)=0A+=20=20=20=20/*=20Since=20the=20WM=20decoration=20=
lies=20under=20the=20FRAME_OUTER_WINDOW,=0A+=20=20=20=20=20=20=20we=20=
must=20treat=20the=20former=20instead=20of=20the=20latter.=20*/=0A+=20=20=
=20=20win=20=3D=20FRAME_X_OUTPUT(f)->parent_desc;=0A+=0A+=20=20double=20=
alpha=20=3D=201.0,=20alpha_lower_limit=20=3D=201.0;=0A+=0A+=20=20if=20=
(dpyinfo->x_highlight_frame=20=3D=3D=20f)=0A+=20=20=20=20alpha=20=3D=20=
f->alpha[0];=0A+=20=20else=0A+=20=20=20=20alpha=20=3D=20f->alpha[1];=0A+=0A=
+=20=20if(=20FLOATP(Vframe_alpha_lower_limit)=20)=0A+=20=20=20=20=
alpha_lower_limit=20=3D=20XFLOAT_DATA=20(Vframe_alpha_lower_limit);=0A+=20=
=20else=20if(=20INTEGERP(Vframe_alpha_lower_limit)=20)=0A+=20=20=20=20=
alpha_lower_limit=20=3D=20(=20XINT=20(Vframe_alpha_lower_limit)=20)=20/=20=
100.0;=0A+=0A+=20=20if(=20alpha=20<=200.0=20||=201.0=20<=20alpha=20)=20=
alpha=20=3D=201.0;=0A+=20=20if=20(=200.0=20<=20alpha=20&&=20alpha=20<=20=
alpha_lower_limit=20&&=20alpha_lower_limit=20<=201.0)=0A+=20=20=20=20=
alpha=20=3D=20alpha_lower_limit;=0A+=0A+=20=20unsigned=20int=20opac=20=3D=20=
(unsigned=20int)(alpha=20*=20OPAQUE);=0A+=0A+=20=20/*=20return=20unless=20=
necessary=20*/=0A+=20=20{=0A+=20=20=20=20unsigned=20char=20*data;=0A+=20=20=
=20=20Atom=20actual;=0A+=20=20=20=20int=20format;=0A+=20=20=20=20=
unsigned=20long=20n,=20left;=0A+=0A+=20=20=20=20XGetWindowProperty(dpy,=20=
win,=20XInternAtom(dpy,=20OPACITY,=20False),=0A+=09=09=20=20=20=20=20=20=20=
0L,=201L,=20False,=20XA_CARDINAL,=20&actual,=20&format,=20&n,=20&left,=0A=
+=09=09=20=20=20=20=20=20=20(unsigned=20char=20**)=20&data);=0A+=20=20=20=
=20if=20(data=20!=3D=20None)=0A+=20=20=20=20=20=20if=20(*(unsigned=20int=20=
*)data=20=3D=3D=20opac)=0A+=09{=0A+=09=20=20XFree=20((void=20*)=20data);=0A=
+=09=20=20return;=0A+=09}=0A+=20=20=20=20=20=20else=0A+=20=20=20=20=20=20=
=20{=0A+=09=20=20XFree=20((void=20*)=20data);=0A+=20=20=20=20=20=20=20}=0A=
+=20=20}=0A+=0A+=20=20XChangeProperty=20(dpy,=20win,=20XInternAtom=20=
(dpy,=20OPACITY,=20False),=0A+=09=09=20=20=20XA_CARDINAL,=2032,=20=
PropModeReplace,=0A+=09=09=20=20=20(unsigned=20char=20*)=20&opac,=201L);=0A=
+=20=20XSync=20(dpy,=20False);=0A+}=0A=20=0A=20=0C=0A=20=
/***********************************************************************=0A=
@@=20-3157,6=20+3210,7=20@@=0A=20=09=09=20=20=20=20=
f->output_data.x->border_pixel);=0A=20=20=20UNBLOCK_INPUT;=0A=20=20=20=
x_update_cursor=20(f,=201);=0A+=20=20x_set_frame_alpha=20(f);=0A=20}=0A=20=
=0A=20static=20void=0A@@=20-3172,6=20+3226,7=20@@=0A=20=09=09=09=20=20=
f->output_data.x->border_tile);=0A=20=20=20UNBLOCK_INPUT;=0A=20=20=20=
x_update_cursor=20(f,=201);=0A+=20=20x_set_frame_alpha=20(f);=0A=20}=0A=20=
=0A=20/*=20The=20focus=20has=20changed.=20=20Update=20the=20frames=20as=20=
necessary=20to=20reflect=0A=
