diff src/nsfns.m @ 103296:a23e4364bf6e

Ensure NS frames remain hidden when invisible * nsterm.m (ns_raise_frame): only raise frame if visible. (x_make_frame_visible): move frame to front rather than calling ns_raise_frame(). (keyDown:) do not swallow events that aren't re-sent if frame isn't key window. (drawRect:) do not set visibility/iconified flags because drawRect may be called by NSView even if the frame is hidden. * nsfns.m (Fx_create_frame): follow other ports in determining visibility; default to t. Ensure async_visible is set.
author David Reitter <david.reitter@gmail.com>
date Tue, 26 May 2009 18:14:14 +0000
parents e0a85c405ceb
children 1cd6f938ca95
line wrap: on
line diff
--- a/src/nsfns.m	Tue May 26 14:37:51 2009 +0000
+++ b/src/nsfns.m	Tue May 26 18:14:14 2009 +0000
@@ -1317,13 +1317,20 @@
 
   if (! f->output_data.ns->explicit_parent)
     {
-        tem = x_get_arg (dpyinfo, parms, Qvisibility, 0, 0, RES_TYPE_BOOLEAN);
-        if (EQ (tem, Qunbound))
-            tem = Qnil;
-
-        x_set_visibility (f, tem, Qnil);
-        if (EQ (tem, Qt))
-            [[FRAME_NS_VIEW (f) window] makeKeyWindow];
+      tem = x_get_arg (dpyinfo, parms, Qvisibility, 0, 0, RES_TYPE_SYMBOL);
+      if (EQ (tem, Qunbound))
+	tem = Qt;
+      x_set_visibility (f, tem, Qnil);
+      if (EQ (tem, Qicon))
+	x_iconify_frame (f);
+      else if (! NILP (tem))
+	{
+	  x_make_frame_visible (f);
+	  f->async_visible = 1;
+	  [[FRAME_NS_VIEW (f) window] makeKeyWindow];
+	}
+      else
+	  f->async_visible = 0;
     }
 
   if (FRAME_HAS_MINIBUF_P (f)