forked from AuroraMiddleware/gtk
Factor out common code to sync_native_window_stack_position
This commit is contained in:
parent
7969c1842a
commit
955da9fc76
@ -999,6 +999,27 @@ get_native_event_mask (GdkWindowObject *private)
|
|||||||
return private->event_mask;
|
return private->event_mask;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Puts the native window in the right order wrt the other native windows
|
||||||
|
in the hierarchy, given the position it has in the client side data.
|
||||||
|
This is useful if some operation changed the stacking order. */
|
||||||
|
static void
|
||||||
|
sync_native_window_stack_position (GdkWindow *window)
|
||||||
|
{
|
||||||
|
GdkWindowObject *above;
|
||||||
|
GdkWindowObject *private;
|
||||||
|
GList listhead = {0};
|
||||||
|
|
||||||
|
private = (GdkWindowObject *) window;
|
||||||
|
|
||||||
|
above = find_native_sibling_above (private->parent, private);
|
||||||
|
if (above)
|
||||||
|
{
|
||||||
|
listhead.data = window;
|
||||||
|
GDK_WINDOW_IMPL_GET_IFACE (private->impl)->restack_under ((GdkWindow *)above,
|
||||||
|
&listhead);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* gdk_window_new:
|
* gdk_window_new:
|
||||||
* @parent: a #GdkWindow, or %NULL to create the window as a child of
|
* @parent: a #GdkWindow, or %NULL to create the window as a child of
|
||||||
@ -1163,9 +1184,6 @@ gdk_window_new (GdkWindow *parent,
|
|||||||
}
|
}
|
||||||
else if (native)
|
else if (native)
|
||||||
{
|
{
|
||||||
GdkWindowObject *above;
|
|
||||||
GList listhead = {0};
|
|
||||||
|
|
||||||
event_mask = get_native_event_mask (private);
|
event_mask = get_native_event_mask (private);
|
||||||
|
|
||||||
/* Create the impl */
|
/* Create the impl */
|
||||||
@ -1174,14 +1192,7 @@ gdk_window_new (GdkWindow *parent,
|
|||||||
|
|
||||||
/* This will put the native window topmost in the native parent, which may
|
/* This will put the native window topmost in the native parent, which may
|
||||||
* be wrong wrt other native windows in the non-native hierarchy, so restack */
|
* be wrong wrt other native windows in the non-native hierarchy, so restack */
|
||||||
above = find_native_sibling_above (private->parent, private);
|
sync_native_window_stack_position (window);
|
||||||
if (above)
|
|
||||||
{
|
|
||||||
listhead.data = window;
|
|
||||||
GDK_WINDOW_IMPL_GET_IFACE (private->impl)->restack_under ((GdkWindow *)above,
|
|
||||||
&listhead);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -1437,19 +1448,10 @@ gdk_window_reparent (GdkWindow *window,
|
|||||||
reparent_to_impl (private);
|
reparent_to_impl (private);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
GdkWindowObject *above;
|
|
||||||
GList listhead = {0};
|
|
||||||
|
|
||||||
/* The reparent will have put the native window topmost in the native parent,
|
/* The reparent will have put the native window topmost in the native parent,
|
||||||
* which may be wrong wrt other native windows in the non-native hierarchy,
|
* which may be wrong wrt other native windows in the non-native hierarchy,
|
||||||
* so restack */
|
* so restack */
|
||||||
above = find_native_sibling_above (private->parent, private);
|
sync_native_window_stack_position (window);
|
||||||
if (above)
|
|
||||||
{
|
|
||||||
listhead.data = window;
|
|
||||||
GDK_WINDOW_IMPL_GET_IFACE (private->impl)->restack_under ((GdkWindow *)above,
|
|
||||||
&listhead);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (show)
|
if (show)
|
||||||
|
Loading…
Reference in New Issue
Block a user