* frame.c (x_set_alpha) [NS_IMPL_COCOA]: Call x_set_frame_alpha.
* nsfns.m (ns_frame_parm_handlers): Set alpha handler. * nsterm.m (x_set_frame_alpha): New function.
This commit is contained in:
parent
a99dceba92
commit
59bc82c0b9
4 changed files with 53 additions and 3 deletions
|
@ -1,3 +1,11 @@
|
|||
2008-11-28 Seiji Zenitani <zenitani@mac.com>
|
||||
|
||||
* frame.c (x_set_alpha) [NS_IMPL_COCOA]: Call x_set_frame_alpha.
|
||||
|
||||
* nsfns.m (ns_frame_parm_handlers): Set alpha handler.
|
||||
|
||||
* nsterm.m (x_set_frame_alpha): New function.
|
||||
|
||||
2008-11-27 Eli Zaretskii <eliz@gnu.org>
|
||||
|
||||
* xfaces.c (Fx_font_family_list, syms_of_xfaces): Fix last change.
|
||||
|
|
|
@ -3678,7 +3678,7 @@ x_set_alpha (f, arg, oldval)
|
|||
for (i = 0; i < 2; i++)
|
||||
f->alpha[i] = newval[i];
|
||||
|
||||
#if defined (HAVE_X_WINDOWS) || defined (HAVE_NTGUI)
|
||||
#if defined (HAVE_X_WINDOWS) || defined (HAVE_NTGUI) || defined (NS_IMPL_COCOA)
|
||||
BLOCK_INPUT;
|
||||
x_set_frame_alpha (f);
|
||||
UNBLOCK_INPUT;
|
||||
|
|
|
@ -1040,7 +1040,7 @@ Turn the input menu (an NSMenu) into a lisp list for tracking on lisp side
|
|||
0, /* x_set_wait_for_wm, will ignore */
|
||||
0, /* x_set_fullscreen will ignore */
|
||||
x_set_font_backend, /* generic OK */
|
||||
0
|
||||
x_set_alpha
|
||||
};
|
||||
|
||||
|
||||
|
|
44
src/nsterm.m
44
src/nsterm.m
|
@ -964,9 +964,15 @@ Free a pool and temporary objects it refers to (callable from C)
|
|||
dpyinfo->x_highlight_frame != old_highlight)
|
||||
{
|
||||
if (old_highlight)
|
||||
{
|
||||
x_update_cursor (old_highlight, 1);
|
||||
x_set_frame_alpha (old_highlight);
|
||||
}
|
||||
if (dpyinfo->x_highlight_frame)
|
||||
{
|
||||
x_update_cursor (dpyinfo->x_highlight_frame, 1);
|
||||
x_set_frame_alpha (dpyinfo->x_highlight_frame);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1634,6 +1640,39 @@ Free a pool and temporary objects it refers to (callable from C)
|
|||
}
|
||||
|
||||
|
||||
void
|
||||
x_set_frame_alpha (struct frame *f)
|
||||
/* --------------------------------------------------------------------------
|
||||
change the entire-frame transparency
|
||||
-------------------------------------------------------------------------- */
|
||||
{
|
||||
struct ns_display_info *dpyinfo = FRAME_NS_DISPLAY_INFO (f);
|
||||
EmacsView *view = FRAME_NS_VIEW (f);
|
||||
double alpha = 1.0;
|
||||
double alpha_min = 1.0;
|
||||
|
||||
if (dpyinfo->x_highlight_frame == f)
|
||||
alpha = f->alpha[0];
|
||||
else
|
||||
alpha = f->alpha[1];
|
||||
|
||||
if (FLOATP (Vframe_alpha_lower_limit))
|
||||
alpha_min = XFLOAT_DATA (Vframe_alpha_lower_limit);
|
||||
else if (INTEGERP (Vframe_alpha_lower_limit))
|
||||
alpha_min = (XINT (Vframe_alpha_lower_limit)) / 100.0;
|
||||
|
||||
if (alpha < 0.0)
|
||||
return;
|
||||
else if (1.0 < alpha)
|
||||
alpha = 1.0;
|
||||
else if (0.0 <= alpha && alpha < alpha_min && alpha_min <= 1.0)
|
||||
alpha = alpha_min;
|
||||
|
||||
#ifdef NS_IMPL_COCOA
|
||||
[[view window] setAlphaValue: alpha];
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
/* ==========================================================================
|
||||
|
||||
|
@ -5009,7 +5048,10 @@ - (void)windowDidResignKey: (NSNotification *)notification
|
|||
/* FIXME: for some reason needed on second and subsequent clicks away
|
||||
from sole-frame Emacs to get hollow box to show */
|
||||
if (!windowClosing && [[self window] isVisible] == YES)
|
||||
x_update_cursor (emacsframe, 1);
|
||||
{
|
||||
x_update_cursor (emacsframe, 1);
|
||||
x_set_frame_alpha (emacsframe);
|
||||
}
|
||||
|
||||
if (emacs_event)
|
||||
{
|
||||
|
|
Loading…
Add table
Reference in a new issue