Merge Thomas Holder's raise transient window into gtk-3-24.
This commit is contained in:
commit
26c75f31f4
@ -743,15 +743,38 @@ _gdk_quartz_window_find_child (GdkWindow *window,
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Raises a transient window.
|
||||||
|
*/
|
||||||
|
static void
|
||||||
|
raise_transient (GdkWindowImplQuartz *impl)
|
||||||
|
{
|
||||||
|
/* In quartz the transient-for behavior is implemented by
|
||||||
|
* attaching the transient-for GdkNSWindows to the parent's
|
||||||
|
* GdkNSWindow. Stacking is managed by Quartz and the order
|
||||||
|
* is that of the parent's childWindows array. The only way
|
||||||
|
* to change that order is to remove the child from the
|
||||||
|
* parent and then add it back in.
|
||||||
|
*/
|
||||||
|
GdkWindowImplQuartz *parent_impl =
|
||||||
|
GDK_WINDOW_IMPL_QUARTZ (impl->transient_for->impl);
|
||||||
|
[parent_impl->toplevel removeChildWindow:impl->toplevel];
|
||||||
|
[parent_impl->toplevel addChildWindow:impl->toplevel
|
||||||
|
ordered:NSWindowAbove];
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
_gdk_quartz_window_did_become_main (GdkWindow *window)
|
_gdk_quartz_window_did_become_main (GdkWindow *window)
|
||||||
{
|
{
|
||||||
|
GdkWindowImplQuartz *impl = GDK_WINDOW_IMPL_QUARTZ (window->impl);
|
||||||
|
|
||||||
main_window_stack = g_slist_remove (main_window_stack, window);
|
main_window_stack = g_slist_remove (main_window_stack, window);
|
||||||
|
|
||||||
if (window->window_type != GDK_WINDOW_TEMP)
|
if (window->window_type != GDK_WINDOW_TEMP)
|
||||||
main_window_stack = g_slist_prepend (main_window_stack, window);
|
main_window_stack = g_slist_prepend (main_window_stack, window);
|
||||||
|
|
||||||
|
if (impl->transient_for)
|
||||||
|
raise_transient (impl);
|
||||||
|
|
||||||
clear_toplevel_order ();
|
clear_toplevel_order ();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1510,7 +1533,11 @@ gdk_window_quartz_raise (GdkWindow *window)
|
|||||||
GdkWindowImplQuartz *impl;
|
GdkWindowImplQuartz *impl;
|
||||||
|
|
||||||
impl = GDK_WINDOW_IMPL_QUARTZ (window->impl);
|
impl = GDK_WINDOW_IMPL_QUARTZ (window->impl);
|
||||||
[impl->toplevel orderFront:impl->toplevel];
|
|
||||||
|
if (impl->transient_for)
|
||||||
|
raise_transient (impl);
|
||||||
|
else
|
||||||
|
[impl->toplevel orderFront:impl->toplevel];
|
||||||
|
|
||||||
clear_toplevel_order ();
|
clear_toplevel_order ();
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user