summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/nsterm.m30
1 files changed, 26 insertions, 4 deletions
diff --git a/src/nsterm.m b/src/nsterm.m
index 3c95fedadc9..c0d2d91fde8 100644
--- a/src/nsterm.m
+++ b/src/nsterm.m
@@ -2016,12 +2016,34 @@ x_set_parent_frame (struct frame *f, Lisp_Object new_value, Lisp_Object old_valu
if (p != FRAME_PARENT_FRAME (f))
{
- parent = [FRAME_NS_VIEW (p) window];
+ block_input ();
child = [FRAME_NS_VIEW (f) window];
- block_input ();
- [parent addChildWindow: child
- ordered: NSWindowAbove];
+ if ([child parentWindow] != nil)
+ {
+ [[child parentWindow] removeChildWindow:child];
+#if defined (NS_IMPL_COCOA) && MAC_OS_X_VERSION_MAX_ALLOWED >= 101000
+#if MAC_OS_X_VERSION_MIN_REQUIRED < 101000
+ if ([child respondsToSelector:@selector(setAccessibilitySubrole:)]
+#endif
+ [child setAccessibilitySubrole:NSAccessibilityStandardWindowSubrole];
+#endif
+ }
+
+ if (!NILP (new_value))
+ {
+ parent = [FRAME_NS_VIEW (p) window];
+
+ [parent addChildWindow: child
+ ordered: NSWindowAbove];
+#if defined (NS_IMPL_COCOA) && MAC_OS_X_VERSION_MAX_ALLOWED >= 101000
+#if MAC_OS_X_VERSION_MIN_REQUIRED < 101000
+ if ([child respondsToSelector:@selector(setAccessibilitySubrole:)]
+#endif
+ [child setAccessibilitySubrole:NSAccessibilityFloatingWindowSubrole];
+#endif
+ }
+
unblock_input ();
fset_parent_frame (f, new_value);