|
|
|
@ -124,75 +124,41 @@ gdk_quartz_window_init (GdkQuartzWindow *quartz_window)
|
|
|
|
|
/*
|
|
|
|
|
* GdkQuartzWindowImpl
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
static inline NSObject *
|
|
|
|
|
gdk_quartz_window_search_for_nearest_nsobject (GdkWindow *window, bool get_nswindow_instead_of_nsview)
|
|
|
|
|
static inline GdkWindowImplQuartz*
|
|
|
|
|
gdk_window_get_quartz_impl (GdkWindow* window)
|
|
|
|
|
{
|
|
|
|
|
GdkWindow *onscreen_window = window;
|
|
|
|
|
NSObject *nsobject = NULL;
|
|
|
|
|
GdkWindow *embedder;
|
|
|
|
|
|
|
|
|
|
if (GDK_WINDOW_DESTROYED (window))
|
|
|
|
|
return NULL;
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* if window is type GDK_WINDOW_OFFSCREEN
|
|
|
|
|
* you need to get the embedder in order to find the NSView
|
|
|
|
|
* see: gdkdevice.c:1461
|
|
|
|
|
*/
|
|
|
|
|
while (1)
|
|
|
|
|
embedder = gdk_offscreen_window_get_embedder (window);
|
|
|
|
|
|
|
|
|
|
while (embedder)
|
|
|
|
|
{
|
|
|
|
|
g_return_val_if_fail (onscreen_window != NULL, NULL);
|
|
|
|
|
|
|
|
|
|
if (GDK_IS_WINDOW_IMPL_QUARTZ (onscreen_window->impl))
|
|
|
|
|
{
|
|
|
|
|
if (get_nswindow_instead_of_nsview)
|
|
|
|
|
nsobject = GDK_WINDOW_IMPL_QUARTZ (onscreen_window->impl)->toplevel;
|
|
|
|
|
else
|
|
|
|
|
nsobject = GDK_WINDOW_IMPL_QUARTZ (onscreen_window->impl)->view;
|
|
|
|
|
|
|
|
|
|
if (nsobject != NULL)
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (onscreen_window->window_type == GDK_WINDOW_OFFSCREEN)
|
|
|
|
|
onscreen_window = gdk_offscreen_window_get_embedder (onscreen_window);
|
|
|
|
|
else
|
|
|
|
|
onscreen_window = onscreen_window->parent;
|
|
|
|
|
window = embedder;
|
|
|
|
|
embedder = gdk_offscreen_window_get_embedder (window);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
g_return_val_if_fail (nsobject != NULL, NULL);
|
|
|
|
|
g_return_val_if_fail (GDK_IS_WINDOW_IMPL_QUARTZ (window->impl), NULL);
|
|
|
|
|
|
|
|
|
|
return nsobject;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
NSView *
|
|
|
|
|
gdk_quartz_window_search_for_nearest_nsview (GdkWindow *window)
|
|
|
|
|
{
|
|
|
|
|
return (NSView *)gdk_quartz_window_search_for_nearest_nsobject (window, FALSE);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
NSWindow *
|
|
|
|
|
gdk_quartz_window_search_for_nearest_nswindow (GdkWindow *window)
|
|
|
|
|
{
|
|
|
|
|
return (NSWindow *)gdk_quartz_window_search_for_nearest_nsobject (window, TRUE);
|
|
|
|
|
return window->impl;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
NSView *
|
|
|
|
|
gdk_quartz_window_get_nsview (GdkWindow *window)
|
|
|
|
|
{
|
|
|
|
|
if (GDK_WINDOW_DESTROYED (window) || !GDK_IS_WINDOW_IMPL_QUARTZ (window->impl))
|
|
|
|
|
return NULL;
|
|
|
|
|
GdkWindowImplQuartz *impl = gdk_window_get_quartz_impl (window);
|
|
|
|
|
|
|
|
|
|
return GDK_WINDOW_IMPL_QUARTZ (window->impl)->view;
|
|
|
|
|
return impl ? impl->view : NULL;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
NSWindow *
|
|
|
|
|
gdk_quartz_window_get_nswindow (GdkWindow *window)
|
|
|
|
|
{
|
|
|
|
|
if (GDK_WINDOW_DESTROYED (window) || !GDK_IS_WINDOW_IMPL_QUARTZ (window->impl))
|
|
|
|
|
return NULL;
|
|
|
|
|
GdkWindowImplQuartz *impl = gdk_window_get_quartz_impl (window);
|
|
|
|
|
|
|
|
|
|
return GDK_WINDOW_IMPL_QUARTZ (window->impl)->toplevel;
|
|
|
|
|
return impl ? impl->toplevel : NULL;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static CGContextRef
|
|
|
|
@ -329,9 +295,9 @@ gdk_quartz_create_cairo_surface (GdkWindowImplQuartz *impl,
|
|
|
|
|
static cairo_surface_t *
|
|
|
|
|
gdk_quartz_ref_cairo_surface (GdkWindow *window)
|
|
|
|
|
{
|
|
|
|
|
GdkWindowImplQuartz *impl = GDK_WINDOW_IMPL_QUARTZ (window->impl);
|
|
|
|
|
GdkWindowImplQuartz *impl = gdk_window_get_quartz_impl (window);
|
|
|
|
|
|
|
|
|
|
if (GDK_WINDOW_DESTROYED (window))
|
|
|
|
|
if (GDK_WINDOW_DESTROYED (window) || !impl)
|
|
|
|
|
return NULL;
|
|
|
|
|
|
|
|
|
|
if (!impl->cairo_surface)
|
|
|
|
@ -361,8 +327,8 @@ gdk_quartz_ref_cairo_surface (GdkWindow *window)
|
|
|
|
|
void
|
|
|
|
|
_gdk_quartz_unref_cairo_surface (GdkWindow *window)
|
|
|
|
|
{
|
|
|
|
|
GdkWindowImplQuartz *impl = GDK_WINDOW_IMPL_QUARTZ (window->impl);
|
|
|
|
|
if (GDK_WINDOW_DESTROYED (window))
|
|
|
|
|
GdkWindowImplQuartz *impl = gdk_window_get_quartz_impl (window);
|
|
|
|
|
if (GDK_WINDOW_DESTROYED (window) || !impl)
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
if (impl->cairo_surface)
|
|
|
|
@ -397,7 +363,10 @@ gdk_quartz_window_set_needs_display_in_region (GdkWindow *window,
|
|
|
|
|
GdkWindowImplQuartz *impl;
|
|
|
|
|
int i, n_rects;
|
|
|
|
|
|
|
|
|
|
impl = GDK_WINDOW_IMPL_QUARTZ (window->impl);
|
|
|
|
|
impl = gdk_window_get_quartz_impl (window);
|
|
|
|
|
|
|
|
|
|
if (!impl)
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
if (!impl->needs_display_region)
|
|
|
|
|
impl->needs_display_region = cairo_region_create ();
|
|
|
|
@ -423,16 +392,13 @@ _gdk_quartz_window_process_updates_recurse (GdkWindow *window,
|
|
|
|
|
*/
|
|
|
|
|
if (in_process_all_updates)
|
|
|
|
|
{
|
|
|
|
|
GdkWindow *toplevel;
|
|
|
|
|
GdkWindow *toplevel= gdk_window_get_effective_toplevel (window);
|
|
|
|
|
GdkWindowImplQuartz *toplevel_impl =
|
|
|
|
|
gdk_window_get_quartz_impl (toplevel);
|
|
|
|
|
|
|
|
|
|
toplevel = gdk_window_get_effective_toplevel (window);
|
|
|
|
|
if (toplevel && WINDOW_IS_TOPLEVEL (toplevel))
|
|
|
|
|
if (toplevel && WINDOW_IS_TOPLEVEL (toplevel) && toplevel_impl)
|
|
|
|
|
{
|
|
|
|
|
GdkWindowImplQuartz *toplevel_impl;
|
|
|
|
|
NSWindow *nswindow;
|
|
|
|
|
|
|
|
|
|
toplevel_impl = GDK_WINDOW_IMPL_QUARTZ (toplevel->impl);
|
|
|
|
|
nswindow = toplevel_impl->toplevel;
|
|
|
|
|
NSWindow *nswindow = toplevel_impl->toplevel;
|
|
|
|
|
#if MAC_OS_X_VERSION_MIN_REQUIRED < 101400
|
|
|
|
|
/* In theory, we could skip the flush disabling, since we only
|
|
|
|
|
* have one NSView.
|
|
|
|
@ -701,15 +667,17 @@ find_child_window_helper (GdkWindow *window,
|
|
|
|
|
GdkWindowImplQuartz *impl;
|
|
|
|
|
GList *l;
|
|
|
|
|
|
|
|
|
|
impl = GDK_WINDOW_IMPL_QUARTZ (window->impl);
|
|
|
|
|
impl = gdk_window_get_quartz_impl (window);
|
|
|
|
|
|
|
|
|
|
if (window == _gdk_root)
|
|
|
|
|
update_toplevel_order ();
|
|
|
|
|
|
|
|
|
|
g_return_val_if_fail (impl, NULL);
|
|
|
|
|
|
|
|
|
|
for (l = impl->sorted_children; l; l = l->next)
|
|
|
|
|
{
|
|
|
|
|
GdkWindow *child = l->data;
|
|
|
|
|
GdkWindowImplQuartz *child_impl = GDK_WINDOW_IMPL_QUARTZ (child->impl);
|
|
|
|
|
GdkWindowImplQuartz *child_impl = gdk_window_get_quartz_impl (child);
|
|
|
|
|
int temp_x, temp_y;
|
|
|
|
|
|
|
|
|
|
if (!GDK_WINDOW_IS_MAPPED (child))
|
|
|
|
@ -724,7 +692,7 @@ find_child_window_helper (GdkWindow *window,
|
|
|
|
|
* better way to deal with the events in gdkevents-quartz, this
|
|
|
|
|
* might not be needed.)
|
|
|
|
|
*/
|
|
|
|
|
if (window == _gdk_root)
|
|
|
|
|
if (child_impl && window == _gdk_root)
|
|
|
|
|
{
|
|
|
|
|
NSRect frame = NSMakeRect (0, 0, 100, 100);
|
|
|
|
|
NSRect content;
|
|
|
|
@ -793,23 +761,27 @@ raise_transient (GdkWindowImplQuartz *impl)
|
|
|
|
|
* 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];
|
|
|
|
|
gdk_window_get_quartz_impl (impl->transient_for);
|
|
|
|
|
if (parent_impl)
|
|
|
|
|
{
|
|
|
|
|
[parent_impl->toplevel removeChildWindow:impl->toplevel];
|
|
|
|
|
[parent_impl->toplevel addChildWindow:impl->toplevel
|
|
|
|
|
ordered:NSWindowAbove];
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void
|
|
|
|
|
_gdk_quartz_window_did_become_main (GdkWindow *window)
|
|
|
|
|
{
|
|
|
|
|
GdkWindowImplQuartz *impl = GDK_WINDOW_IMPL_QUARTZ (window->impl);
|
|
|
|
|
GdkWindowImplQuartz *impl = gdk_window_get_quartz_impl (window);
|
|
|
|
|
|
|
|
|
|
main_window_stack = g_slist_remove (main_window_stack, window);
|
|
|
|
|
|
|
|
|
|
if (window->window_type != GDK_WINDOW_TEMP)
|
|
|
|
|
main_window_stack = g_slist_prepend (main_window_stack, window);
|
|
|
|
|
|
|
|
|
|
if (impl->transient_for)
|
|
|
|
|
if (impl &&
|
|
|
|
|
impl->transient_for && !GDK_WINDOW_DESTROYED (impl->transient_for))
|
|
|
|
|
raise_transient (impl);
|
|
|
|
|
|
|
|
|
|
clear_toplevel_order ();
|
|
|
|
@ -837,9 +809,10 @@ _gdk_quartz_window_did_resign_main (GdkWindow *window)
|
|
|
|
|
GDK_WINDOW_IS_MAPPED (new_window) &&
|
|
|
|
|
WINDOW_IS_TOPLEVEL (new_window))
|
|
|
|
|
{
|
|
|
|
|
GdkWindowImplQuartz *impl = GDK_WINDOW_IMPL_QUARTZ (new_window->impl);
|
|
|
|
|
GdkWindowImplQuartz *impl = gdk_window_get_quartz_impl (new_window);
|
|
|
|
|
|
|
|
|
|
[impl->toplevel makeKeyAndOrderFront:impl->toplevel];
|
|
|
|
|
if (impl)
|
|
|
|
|
[impl->toplevel makeKeyAndOrderFront:impl->toplevel];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
clear_toplevel_order ();
|
|
|
|
@ -883,12 +856,12 @@ static void
|
|
|
|
|
on_frame_clock_after_paint (GdkFrameClock *frame_clock,
|
|
|
|
|
GdkWindow *window)
|
|
|
|
|
{
|
|
|
|
|
GdkWindowImplQuartz *impl = GDK_WINDOW_IMPL_QUARTZ (window->impl);
|
|
|
|
|
GdkWindowImplQuartz *impl = gdk_window_get_quartz_impl (window);
|
|
|
|
|
GdkDisplay *display = gdk_window_get_display (window);
|
|
|
|
|
GdkFrameTimings *timings;
|
|
|
|
|
|
|
|
|
|
timings = gdk_frame_clock_get_current_timings (frame_clock);
|
|
|
|
|
if (timings != NULL)
|
|
|
|
|
if (impl && timings != NULL)
|
|
|
|
|
impl->pending_frame_counter = timings->frame_counter;
|
|
|
|
|
|
|
|
|
|
_gdk_quartz_display_add_frame_callback (display, window);
|
|
|
|
@ -916,7 +889,7 @@ _gdk_quartz_display_create_window_impl (GdkDisplay *display,
|
|
|
|
|
window->impl = GDK_WINDOW_IMPL (impl);
|
|
|
|
|
impl->wrapper = window;
|
|
|
|
|
|
|
|
|
|
parent_impl = GDK_WINDOW_IMPL_QUARTZ (window->parent->impl);
|
|
|
|
|
parent_impl = gdk_window_get_quartz_impl (window->parent);
|
|
|
|
|
|
|
|
|
|
switch (window->window_type)
|
|
|
|
|
{
|
|
|
|
@ -925,12 +898,12 @@ _gdk_quartz_display_create_window_impl (GdkDisplay *display,
|
|
|
|
|
if (GDK_WINDOW_TYPE (window->parent) != GDK_WINDOW_ROOT)
|
|
|
|
|
{
|
|
|
|
|
/* The common code warns for this case */
|
|
|
|
|
parent_impl = GDK_WINDOW_IMPL_QUARTZ (_gdk_root->impl);
|
|
|
|
|
parent_impl = gdk_window_get_quartz_impl (_gdk_root);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* Maintain the z-ordered list of children. */
|
|
|
|
|
if (window->parent != _gdk_root)
|
|
|
|
|
if (parent_impl && window->parent != _gdk_root)
|
|
|
|
|
parent_impl->sorted_children = g_list_prepend (parent_impl->sorted_children, window);
|
|
|
|
|
else
|
|
|
|
|
clear_toplevel_order ();
|
|
|
|
@ -1023,9 +996,9 @@ _gdk_quartz_display_create_window_impl (GdkDisplay *display,
|
|
|
|
|
|
|
|
|
|
case GDK_WINDOW_CHILD:
|
|
|
|
|
{
|
|
|
|
|
GdkWindowImplQuartz *parent_impl = GDK_WINDOW_IMPL_QUARTZ (window->parent->impl);
|
|
|
|
|
GdkWindowImplQuartz *parent_impl = gdk_window_get_quartz_impl (window->parent);
|
|
|
|
|
|
|
|
|
|
if (!window->input_only)
|
|
|
|
|
if (parent_impl && !window->input_only)
|
|
|
|
|
{
|
|
|
|
|
NSRect frame_rect = NSMakeRect (window->x + window->parent->abs_x,
|
|
|
|
|
window->y + window->parent->abs_y,
|
|
|
|
@ -1065,7 +1038,10 @@ _gdk_quartz_window_update_position (GdkWindow *window)
|
|
|
|
|
{
|
|
|
|
|
NSRect frame_rect;
|
|
|
|
|
NSRect content_rect;
|
|
|
|
|
GdkWindowImplQuartz *impl = GDK_WINDOW_IMPL_QUARTZ (window->impl);
|
|
|
|
|
GdkWindowImplQuartz *impl = gdk_window_get_quartz_impl (window);
|
|
|
|
|
|
|
|
|
|
if (!impl)
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
GDK_QUARTZ_ALLOC_POOL;
|
|
|
|
|
|
|
|
|
@ -1076,7 +1052,6 @@ _gdk_quartz_window_update_position (GdkWindow *window)
|
|
|
|
|
content_rect.origin.y + content_rect.size.height,
|
|
|
|
|
&window->x, &window->y);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
GDK_QUARTZ_RELEASE_POOL;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -1094,7 +1069,13 @@ _gdk_quartz_window_init_windowing (GdkDisplay *display,
|
|
|
|
|
_gdk_root->impl_window = _gdk_root;
|
|
|
|
|
_gdk_root->visual = gdk_screen_get_system_visual (screen);
|
|
|
|
|
|
|
|
|
|
impl = GDK_WINDOW_IMPL_QUARTZ (_gdk_root->impl);
|
|
|
|
|
impl = gdk_window_get_quartz_impl (_gdk_root);
|
|
|
|
|
/* If impl is somehow not a GdkWindowImplQuartz we're screwed, so crash. */
|
|
|
|
|
if (!impl)
|
|
|
|
|
{
|
|
|
|
|
g_error ("Initializing quartz windowing produced the wrong kind of impl!");
|
|
|
|
|
g_abort ();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
_gdk_quartz_screen_update_window_sizes (screen);
|
|
|
|
|
|
|
|
|
@ -1115,7 +1096,10 @@ gdk_quartz_window_destroy (GdkWindow *window,
|
|
|
|
|
GdkWindow *parent;
|
|
|
|
|
GdkDisplay *display;
|
|
|
|
|
|
|
|
|
|
impl = GDK_WINDOW_IMPL_QUARTZ (window->impl);
|
|
|
|
|
impl = gdk_window_get_quartz_impl (window);
|
|
|
|
|
|
|
|
|
|
if (!impl)
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
display = gdk_window_get_display (window);
|
|
|
|
|
|
|
|
|
@ -1129,9 +1113,10 @@ gdk_quartz_window_destroy (GdkWindow *window,
|
|
|
|
|
parent = window->parent;
|
|
|
|
|
if (parent)
|
|
|
|
|
{
|
|
|
|
|
GdkWindowImplQuartz *parent_impl = GDK_WINDOW_IMPL_QUARTZ (parent->impl);
|
|
|
|
|
GdkWindowImplQuartz *parent_impl = gdk_window_get_quartz_impl (parent);
|
|
|
|
|
|
|
|
|
|
parent_impl->sorted_children = g_list_remove (parent_impl->sorted_children, window);
|
|
|
|
|
if (parent_impl)
|
|
|
|
|
parent_impl->sorted_children = g_list_remove (parent_impl->sorted_children, window);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (impl->cairo_surface)
|
|
|
|
@ -1170,9 +1155,12 @@ gdk_quartz_window_destroy_foreign (GdkWindow *window)
|
|
|
|
|
static void
|
|
|
|
|
gdk_window_quartz_show (GdkWindow *window, gboolean already_mapped)
|
|
|
|
|
{
|
|
|
|
|
GdkWindowImplQuartz *impl = GDK_WINDOW_IMPL_QUARTZ (window->impl);
|
|
|
|
|
GdkWindowImplQuartz *impl = gdk_window_get_quartz_impl (window);
|
|
|
|
|
gboolean focus_on_map;
|
|
|
|
|
|
|
|
|
|
if (!impl)
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
GDK_QUARTZ_ALLOC_POOL;
|
|
|
|
|
|
|
|
|
|
if (!GDK_WINDOW_IS_MAPPED (window))
|
|
|
|
@ -1223,17 +1211,20 @@ _gdk_quartz_window_detach_from_parent (GdkWindow *window)
|
|
|
|
|
|
|
|
|
|
g_return_if_fail (GDK_IS_WINDOW (window));
|
|
|
|
|
|
|
|
|
|
impl = GDK_WINDOW_IMPL_QUARTZ (window->impl);
|
|
|
|
|
|
|
|
|
|
g_return_if_fail (impl->toplevel != NULL);
|
|
|
|
|
impl = gdk_window_get_quartz_impl (window);
|
|
|
|
|
|
|
|
|
|
g_return_if_fail (impl && impl->toplevel != NULL);
|
|
|
|
|
|
|
|
|
|
if (impl->transient_for && !GDK_WINDOW_DESTROYED (impl->transient_for))
|
|
|
|
|
{
|
|
|
|
|
GdkWindowImplQuartz *parent_impl;
|
|
|
|
|
|
|
|
|
|
parent_impl = GDK_WINDOW_IMPL_QUARTZ (impl->transient_for->impl);
|
|
|
|
|
[parent_impl->toplevel removeChildWindow:impl->toplevel];
|
|
|
|
|
clear_toplevel_order ();
|
|
|
|
|
parent_impl = gdk_window_get_quartz_impl (impl->transient_for);
|
|
|
|
|
if (parent_impl)
|
|
|
|
|
{
|
|
|
|
|
[parent_impl->toplevel removeChildWindow:impl->toplevel];
|
|
|
|
|
clear_toplevel_order ();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -1245,17 +1236,20 @@ _gdk_quartz_window_attach_to_parent (GdkWindow *window)
|
|
|
|
|
|
|
|
|
|
g_return_if_fail (GDK_IS_WINDOW (window));
|
|
|
|
|
|
|
|
|
|
impl = GDK_WINDOW_IMPL_QUARTZ (window->impl);
|
|
|
|
|
|
|
|
|
|
g_return_if_fail (impl->toplevel != NULL);
|
|
|
|
|
impl = gdk_window_get_quartz_impl (window);
|
|
|
|
|
|
|
|
|
|
g_return_if_fail (impl && impl->toplevel != NULL);
|
|
|
|
|
|
|
|
|
|
if (impl->transient_for && !GDK_WINDOW_DESTROYED (impl->transient_for))
|
|
|
|
|
{
|
|
|
|
|
GdkWindowImplQuartz *parent_impl;
|
|
|
|
|
|
|
|
|
|
parent_impl = GDK_WINDOW_IMPL_QUARTZ (impl->transient_for->impl);
|
|
|
|
|
[parent_impl->toplevel addChildWindow:impl->toplevel ordered:NSWindowAbove];
|
|
|
|
|
clear_toplevel_order ();
|
|
|
|
|
parent_impl = gdk_window_get_quartz_impl (impl->transient_for);
|
|
|
|
|
if (parent_impl)
|
|
|
|
|
{
|
|
|
|
|
[parent_impl->toplevel addChildWindow:impl->toplevel ordered:NSWindowAbove];
|
|
|
|
|
clear_toplevel_order ();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -1275,9 +1269,11 @@ gdk_window_quartz_hide (GdkWindow *window)
|
|
|
|
|
|
|
|
|
|
_gdk_window_clear_update_area (window);
|
|
|
|
|
|
|
|
|
|
impl = GDK_WINDOW_IMPL_QUARTZ (window->impl);
|
|
|
|
|
impl = gdk_window_get_quartz_impl (window);
|
|
|
|
|
if (!impl)
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
if (WINDOW_IS_TOPLEVEL (window))
|
|
|
|
|
if (WINDOW_IS_TOPLEVEL (window))
|
|
|
|
|
{
|
|
|
|
|
/* Update main window. */
|
|
|
|
|
main_window_stack = g_slist_remove (main_window_stack, window);
|
|
|
|
@ -1315,12 +1311,14 @@ move_resize_window_internal (GdkWindow *window,
|
|
|
|
|
cairo_region_t *old_region;
|
|
|
|
|
cairo_region_t *expose_region;
|
|
|
|
|
NSSize delta;
|
|
|
|
|
gboolean resized = FALSE;
|
|
|
|
|
|
|
|
|
|
if (GDK_WINDOW_DESTROYED (window))
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
impl = GDK_WINDOW_IMPL_QUARTZ (window->impl);
|
|
|
|
|
impl = gdk_window_get_quartz_impl (window);
|
|
|
|
|
|
|
|
|
|
if (!impl)
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
if ((x == -1 || (x == window->x)) &&
|
|
|
|
|
(y == -1 || (y == window->y)) &&
|
|
|
|
@ -1364,15 +1362,11 @@ move_resize_window_internal (GdkWindow *window,
|
|
|
|
|
|
|
|
|
|
if (width != -1)
|
|
|
|
|
{
|
|
|
|
|
if (window->width != width)
|
|
|
|
|
resized = TRUE;
|
|
|
|
|
window->width = width;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (height != -1)
|
|
|
|
|
{
|
|
|
|
|
if (window->height != height)
|
|
|
|
|
resized = TRUE;
|
|
|
|
|
window->height = height;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -1538,14 +1532,21 @@ gdk_window_quartz_reparent (GdkWindow *window,
|
|
|
|
|
return FALSE;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
impl = GDK_WINDOW_IMPL_QUARTZ (window->impl);
|
|
|
|
|
impl = gdk_window_get_quartz_impl (window);
|
|
|
|
|
if (!impl)
|
|
|
|
|
return FALSE;
|
|
|
|
|
view = impl->view;
|
|
|
|
|
|
|
|
|
|
new_parent_impl = GDK_WINDOW_IMPL_QUARTZ (new_parent->impl);
|
|
|
|
|
new_parent_impl = gdk_window_get_quartz_impl (new_parent);
|
|
|
|
|
if (!new_parent_impl)
|
|
|
|
|
return FALSE;
|
|
|
|
|
|
|
|
|
|
new_parent_view = new_parent_impl->view;
|
|
|
|
|
|
|
|
|
|
old_parent = window->parent;
|
|
|
|
|
old_parent_impl = GDK_WINDOW_IMPL_QUARTZ (old_parent->impl);
|
|
|
|
|
old_parent_impl = gdk_window_get_quartz_impl (old_parent);
|
|
|
|
|
if (!old_parent_impl)
|
|
|
|
|
return FALSE;
|
|
|
|
|
|
|
|
|
|
[view retain];
|
|
|
|
|
|
|
|
|
@ -1578,9 +1579,9 @@ update_toplevel_order (void)
|
|
|
|
|
id nswindow;
|
|
|
|
|
GList *toplevels = NULL;
|
|
|
|
|
|
|
|
|
|
root_impl = GDK_WINDOW_IMPL_QUARTZ (_gdk_root->impl);
|
|
|
|
|
root_impl = gdk_window_get_quartz_impl (_gdk_root);
|
|
|
|
|
|
|
|
|
|
if (root_impl->sorted_children)
|
|
|
|
|
if (!root_impl || root_impl->sorted_children)
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
GDK_QUARTZ_ALLOC_POOL;
|
|
|
|
@ -1607,10 +1608,12 @@ clear_toplevel_order (void)
|
|
|
|
|
{
|
|
|
|
|
GdkWindowImplQuartz *root_impl;
|
|
|
|
|
|
|
|
|
|
root_impl = GDK_WINDOW_IMPL_QUARTZ (_gdk_root->impl);
|
|
|
|
|
|
|
|
|
|
g_list_free (root_impl->sorted_children);
|
|
|
|
|
root_impl->sorted_children = NULL;
|
|
|
|
|
root_impl = gdk_window_get_quartz_impl (_gdk_root);
|
|
|
|
|
if (root_impl)
|
|
|
|
|
{
|
|
|
|
|
g_list_free (root_impl->sorted_children);
|
|
|
|
|
root_impl->sorted_children = NULL;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static void
|
|
|
|
@ -1623,9 +1626,10 @@ gdk_window_quartz_raise (GdkWindow *window)
|
|
|
|
|
{
|
|
|
|
|
GdkWindowImplQuartz *impl;
|
|
|
|
|
|
|
|
|
|
impl = GDK_WINDOW_IMPL_QUARTZ (window->impl);
|
|
|
|
|
|
|
|
|
|
if (impl->transient_for)
|
|
|
|
|
impl = gdk_window_get_quartz_impl (window);
|
|
|
|
|
if (!impl)
|
|
|
|
|
return;
|
|
|
|
|
if (impl->transient_for && !GDK_WINDOW_DESTROYED (impl->transient_for))
|
|
|
|
|
raise_transient (impl);
|
|
|
|
|
else
|
|
|
|
|
[impl->toplevel orderFront:impl->toplevel];
|
|
|
|
@ -1640,10 +1644,12 @@ gdk_window_quartz_raise (GdkWindow *window)
|
|
|
|
|
{
|
|
|
|
|
GdkWindowImplQuartz *impl;
|
|
|
|
|
|
|
|
|
|
impl = GDK_WINDOW_IMPL_QUARTZ (parent->impl);
|
|
|
|
|
|
|
|
|
|
impl->sorted_children = g_list_remove (impl->sorted_children, window);
|
|
|
|
|
impl->sorted_children = g_list_prepend (impl->sorted_children, window);
|
|
|
|
|
impl = gdk_window_get_quartz_impl (parent);
|
|
|
|
|
if (impl)
|
|
|
|
|
{
|
|
|
|
|
impl->sorted_children = g_list_remove (impl->sorted_children, window);
|
|
|
|
|
impl->sorted_children = g_list_prepend (impl->sorted_children, window);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@ -1658,10 +1664,13 @@ gdk_window_quartz_lower (GdkWindow *window)
|
|
|
|
|
{
|
|
|
|
|
GdkWindowImplQuartz *impl;
|
|
|
|
|
|
|
|
|
|
impl = GDK_WINDOW_IMPL_QUARTZ (window->impl);
|
|
|
|
|
[impl->toplevel orderBack:impl->toplevel];
|
|
|
|
|
impl = gdk_window_get_quartz_impl (window);
|
|
|
|
|
if (impl)
|
|
|
|
|
{
|
|
|
|
|
[impl->toplevel orderBack:impl->toplevel];
|
|
|
|
|
|
|
|
|
|
clear_toplevel_order ();
|
|
|
|
|
clear_toplevel_order ();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
@ -1671,10 +1680,12 @@ gdk_window_quartz_lower (GdkWindow *window)
|
|
|
|
|
{
|
|
|
|
|
GdkWindowImplQuartz *impl;
|
|
|
|
|
|
|
|
|
|
impl = GDK_WINDOW_IMPL_QUARTZ (parent->impl);
|
|
|
|
|
|
|
|
|
|
impl->sorted_children = g_list_remove (impl->sorted_children, window);
|
|
|
|
|
impl->sorted_children = g_list_append (impl->sorted_children, window);
|
|
|
|
|
impl = gdk_window_get_quartz_impl (parent);
|
|
|
|
|
if (impl)
|
|
|
|
|
{
|
|
|
|
|
impl->sorted_children = g_list_remove (impl->sorted_children, window);
|
|
|
|
|
impl->sorted_children = g_list_append (impl->sorted_children, window);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@ -1685,13 +1696,15 @@ gdk_window_quartz_restack_toplevel (GdkWindow *window,
|
|
|
|
|
gboolean above)
|
|
|
|
|
{
|
|
|
|
|
GdkWindowImplQuartz *impl;
|
|
|
|
|
gint sibling_num;
|
|
|
|
|
gint sibling_num = -1;
|
|
|
|
|
|
|
|
|
|
impl = GDK_WINDOW_IMPL_QUARTZ (sibling->impl);
|
|
|
|
|
sibling_num = [impl->toplevel windowNumber];
|
|
|
|
|
|
|
|
|
|
impl = GDK_WINDOW_IMPL_QUARTZ (window->impl);
|
|
|
|
|
impl = gdk_window_get_quartz_impl (sibling);
|
|
|
|
|
if (impl)
|
|
|
|
|
sibling_num = [impl->toplevel windowNumber];
|
|
|
|
|
|
|
|
|
|
impl = gdk_window_get_quartz_impl (window);
|
|
|
|
|
if (!(impl && sibling_num >= 0))
|
|
|
|
|
return;
|
|
|
|
|
if (above)
|
|
|
|
|
[impl->toplevel orderWindow:NSWindowAbove relativeTo:sibling_num];
|
|
|
|
|
else
|
|
|
|
@ -1735,7 +1748,9 @@ gdk_window_quartz_get_geometry (GdkWindow *window,
|
|
|
|
|
if (GDK_WINDOW_DESTROYED (window))
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
impl = GDK_WINDOW_IMPL_QUARTZ (window->impl);
|
|
|
|
|
impl = gdk_window_get_quartz_impl (window);
|
|
|
|
|
if (!impl)
|
|
|
|
|
return;
|
|
|
|
|
if (window == _gdk_root)
|
|
|
|
|
{
|
|
|
|
|
if (x)
|
|
|
|
@ -1827,7 +1842,10 @@ gdk_window_quartz_get_root_coords (GdkWindow *window,
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
toplevel = gdk_window_get_toplevel (window);
|
|
|
|
|
impl = GDK_WINDOW_IMPL_QUARTZ (toplevel->impl);
|
|
|
|
|
impl = gdk_window_get_quartz_impl (toplevel);
|
|
|
|
|
|
|
|
|
|
if (!impl)
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
content_rect = [impl->toplevel contentRectForFrameRect:[impl->toplevel frame]];
|
|
|
|
|
|
|
|
|
@ -1894,8 +1912,8 @@ gdk_window_quartz_get_device_state_helper (GdkWindow *window,
|
|
|
|
|
GdkWindowImplQuartz *impl;
|
|
|
|
|
NSWindow *nswindow;
|
|
|
|
|
|
|
|
|
|
impl = GDK_WINDOW_IMPL_QUARTZ (toplevel->impl);
|
|
|
|
|
nswindow = impl->toplevel;
|
|
|
|
|
impl = gdk_window_get_quartz_impl (toplevel);
|
|
|
|
|
nswindow = impl ? impl->toplevel : NULL;
|
|
|
|
|
|
|
|
|
|
point = [nswindow mouseLocationOutsideOfEventStream];
|
|
|
|
|
|
|
|
|
@ -1970,8 +1988,8 @@ gdk_quartz_window_set_geometry_hints (GdkWindow *window,
|
|
|
|
|
!WINDOW_IS_TOPLEVEL (window))
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
impl = GDK_WINDOW_IMPL_QUARTZ (window->impl);
|
|
|
|
|
if (!impl->toplevel)
|
|
|
|
|
impl = gdk_window_get_quartz_impl (window);
|
|
|
|
|
if (!(impl && impl->toplevel))
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
if (geom_mask & GDK_HINT_POS)
|
|
|
|
@ -2057,9 +2075,9 @@ gdk_quartz_window_set_title (GdkWindow *window,
|
|
|
|
|
!WINDOW_IS_TOPLEVEL (window))
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
impl = GDK_WINDOW_IMPL_QUARTZ (window->impl);
|
|
|
|
|
impl = gdk_window_get_quartz_impl (window);
|
|
|
|
|
|
|
|
|
|
if (impl->toplevel)
|
|
|
|
|
if (impl && impl->toplevel)
|
|
|
|
|
{
|
|
|
|
|
GDK_QUARTZ_ALLOC_POOL;
|
|
|
|
|
[impl->toplevel setTitle:[NSString stringWithUTF8String:title]];
|
|
|
|
@ -2096,8 +2114,8 @@ gdk_quartz_window_set_transient_for (GdkWindow *window,
|
|
|
|
|
!WINDOW_IS_TOPLEVEL (window))
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
window_impl = GDK_WINDOW_IMPL_QUARTZ (window->impl);
|
|
|
|
|
if (!window_impl->toplevel)
|
|
|
|
|
window_impl = gdk_window_get_quartz_impl (window);
|
|
|
|
|
if (!(window_impl && window_impl->toplevel))
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
GDK_QUARTZ_ALLOC_POOL;
|
|
|
|
@ -2110,8 +2128,8 @@ gdk_quartz_window_set_transient_for (GdkWindow *window,
|
|
|
|
|
window_impl->transient_for = NULL;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
parent_impl = GDK_WINDOW_IMPL_QUARTZ (parent->impl);
|
|
|
|
|
if (parent_impl->toplevel)
|
|
|
|
|
parent_impl = gdk_window_get_quartz_impl (parent);
|
|
|
|
|
if (parent_impl && parent_impl->toplevel)
|
|
|
|
|
{
|
|
|
|
|
/* We save the parent because it needs to be unset/reset when
|
|
|
|
|
* hiding and showing the window.
|
|
|
|
@ -2189,11 +2207,12 @@ gdk_quartz_window_focus (GdkWindow *window,
|
|
|
|
|
guint32 timestamp)
|
|
|
|
|
{
|
|
|
|
|
GdkWindowImplQuartz *impl;
|
|
|
|
|
|
|
|
|
|
impl = GDK_WINDOW_IMPL_QUARTZ (window->impl);
|
|
|
|
|
|
|
|
|
|
impl = gdk_window_get_quartz_impl (window);
|
|
|
|
|
|
|
|
|
|
if (GDK_WINDOW_DESTROYED (window) ||
|
|
|
|
|
!WINDOW_IS_TOPLEVEL (window))
|
|
|
|
|
!WINDOW_IS_TOPLEVEL (window) ||
|
|
|
|
|
!impl)
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
if (window->accept_focus && window->window_type != GDK_WINDOW_TEMP)
|
|
|
|
@ -2358,7 +2377,10 @@ gdk_quartz_window_set_type_hint (GdkWindow *window,
|
|
|
|
|
!WINDOW_IS_TOPLEVEL (window))
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
impl = GDK_WINDOW_IMPL_QUARTZ (window->impl);
|
|
|
|
|
impl = gdk_window_get_quartz_impl (window);
|
|
|
|
|
|
|
|
|
|
if (!impl)
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
impl->type_hint = hint;
|
|
|
|
|
|
|
|
|
@ -2380,7 +2402,7 @@ gdk_quartz_window_get_type_hint (GdkWindow *window)
|
|
|
|
|
!WINDOW_IS_TOPLEVEL (window))
|
|
|
|
|
return GDK_WINDOW_TYPE_HINT_NORMAL;
|
|
|
|
|
|
|
|
|
|
return GDK_WINDOW_IMPL_QUARTZ (window->impl)->type_hint;
|
|
|
|
|
return gdk_window_get_quartz_impl (window)->type_hint;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static void
|
|
|
|
@ -2432,11 +2454,11 @@ gdk_quartz_window_begin_resize_drag (GdkWindow *window,
|
|
|
|
|
if (GDK_WINDOW_DESTROYED (window))
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
impl = GDK_WINDOW_IMPL_QUARTZ (window->impl);
|
|
|
|
|
impl = gdk_window_get_quartz_impl (window);
|
|
|
|
|
|
|
|
|
|
if (!impl->toplevel)
|
|
|
|
|
if (!(impl && impl->toplevel))
|
|
|
|
|
{
|
|
|
|
|
g_warning ("Can't call gdk_window_begin_resize_drag on non-toplevel window");
|
|
|
|
|
g_warning ("Can't call gdk_window_begin_resize_drag on non-quartz or non-toplevel window");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -2457,11 +2479,11 @@ gdk_quartz_window_begin_move_drag (GdkWindow *window,
|
|
|
|
|
!WINDOW_IS_TOPLEVEL (window))
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
impl = GDK_WINDOW_IMPL_QUARTZ (window->impl);
|
|
|
|
|
impl = gdk_window_get_quartz_impl (window);
|
|
|
|
|
|
|
|
|
|
if (!impl->toplevel)
|
|
|
|
|
if (!(impl && impl->toplevel))
|
|
|
|
|
{
|
|
|
|
|
g_warning ("Can't call gdk_window_begin_move_drag on non-toplevel window");
|
|
|
|
|
g_warning ("Can't call gdk_window_begin_move_drag on non-quartz or non-toplevel window");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -2492,7 +2514,10 @@ gdk_quartz_window_get_frame_extents (GdkWindow *window,
|
|
|
|
|
rect->height = 1;
|
|
|
|
|
|
|
|
|
|
toplevel = gdk_window_get_effective_toplevel (window);
|
|
|
|
|
impl = GDK_WINDOW_IMPL_QUARTZ (toplevel->impl);
|
|
|
|
|
impl = gdk_window_get_quartz_impl (toplevel);
|
|
|
|
|
|
|
|
|
|
if (!impl)
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
ns_rect = [impl->toplevel frame];
|
|
|
|
|
|
|
|
|
@ -2524,10 +2549,11 @@ gdk_quartz_window_set_decorations (GdkWindow *window,
|
|
|
|
|
!WINDOW_IS_TOPLEVEL (window))
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
impl = GDK_WINDOW_IMPL_QUARTZ (window->impl);
|
|
|
|
|
impl = gdk_window_get_quartz_impl (window);
|
|
|
|
|
|
|
|
|
|
if (GDK_WINDOW_TYPE (window) == GDK_WINDOW_TEMP ||
|
|
|
|
|
impl->type_hint == GDK_WINDOW_TYPE_HINT_SPLASHSCREEN )
|
|
|
|
|
(impl &&
|
|
|
|
|
impl->type_hint == GDK_WINDOW_TYPE_HINT_SPLASHSCREEN ))
|
|
|
|
|
{
|
|
|
|
|
new_mask = GDK_QUARTZ_BORDERLESS_WINDOW;
|
|
|
|
|
}
|
|
|
|
@ -2649,12 +2675,13 @@ gdk_quartz_window_get_decorations (GdkWindow *window,
|
|
|
|
|
!WINDOW_IS_TOPLEVEL (window))
|
|
|
|
|
return FALSE;
|
|
|
|
|
|
|
|
|
|
impl = GDK_WINDOW_IMPL_QUARTZ (window->impl);
|
|
|
|
|
impl = gdk_window_get_quartz_impl (window);
|
|
|
|
|
|
|
|
|
|
if (decorations)
|
|
|
|
|
{
|
|
|
|
|
/* Borderless is 0, so we can't check it as a bit being set. */
|
|
|
|
|
if ([impl->toplevel styleMask] == GDK_QUARTZ_BORDERLESS_WINDOW)
|
|
|
|
|
if (impl &&
|
|
|
|
|
[impl->toplevel styleMask] == GDK_QUARTZ_BORDERLESS_WINDOW)
|
|
|
|
|
{
|
|
|
|
|
*decorations = 0;
|
|
|
|
|
}
|
|
|
|
@ -2677,7 +2704,7 @@ gdk_quartz_window_set_functions (GdkWindow *window,
|
|
|
|
|
|
|
|
|
|
g_return_if_fail (GDK_IS_WINDOW (window));
|
|
|
|
|
|
|
|
|
|
impl = GDK_WINDOW_IMPL_QUARTZ (window->impl);
|
|
|
|
|
impl = gdk_window_get_quartz_impl (window);
|
|
|
|
|
|
|
|
|
|
if (functions & GDK_FUNC_ALL)
|
|
|
|
|
{
|
|
|
|
@ -2692,7 +2719,7 @@ gdk_quartz_window_set_functions (GdkWindow *window,
|
|
|
|
|
close = (functions & GDK_FUNC_CLOSE);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (impl->toplevel)
|
|
|
|
|
if (impl && impl->toplevel)
|
|
|
|
|
{
|
|
|
|
|
NSUInteger mask = [impl->toplevel styleMask];
|
|
|
|
|
|
|
|
|
@ -2741,10 +2768,11 @@ gdk_quartz_window_maximize (GdkWindow *window)
|
|
|
|
|
!WINDOW_IS_TOPLEVEL (window))
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
impl = GDK_WINDOW_IMPL_QUARTZ (window->impl);
|
|
|
|
|
impl = gdk_window_get_quartz_impl (window);
|
|
|
|
|
maximized = gdk_window_get_state (window) & GDK_WINDOW_STATE_MAXIMIZED;
|
|
|
|
|
|
|
|
|
|
if (GDK_WINDOW_IS_MAPPED (window))
|
|
|
|
|
if (GDK_WINDOW_IS_MAPPED (window) &&
|
|
|
|
|
impl)
|
|
|
|
|
{
|
|
|
|
|
GDK_QUARTZ_ALLOC_POOL;
|
|
|
|
|
|
|
|
|
@ -2765,10 +2793,11 @@ gdk_quartz_window_unmaximize (GdkWindow *window)
|
|
|
|
|
!WINDOW_IS_TOPLEVEL (window))
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
impl = GDK_WINDOW_IMPL_QUARTZ (window->impl);
|
|
|
|
|
impl = gdk_window_get_quartz_impl (window);
|
|
|
|
|
maximized = gdk_window_get_state (window) & GDK_WINDOW_STATE_MAXIMIZED;
|
|
|
|
|
|
|
|
|
|
if (GDK_WINDOW_IS_MAPPED (window))
|
|
|
|
|
if (GDK_WINDOW_IS_MAPPED (window) &&
|
|
|
|
|
impl)
|
|
|
|
|
{
|
|
|
|
|
GDK_QUARTZ_ALLOC_POOL;
|
|
|
|
|
|
|
|
|
@ -2788,9 +2817,10 @@ gdk_quartz_window_iconify (GdkWindow *window)
|
|
|
|
|
!WINDOW_IS_TOPLEVEL (window))
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
impl = GDK_WINDOW_IMPL_QUARTZ (window->impl);
|
|
|
|
|
impl = gdk_window_get_quartz_impl (window);
|
|
|
|
|
|
|
|
|
|
if (GDK_WINDOW_IS_MAPPED (window))
|
|
|
|
|
if (GDK_WINDOW_IS_MAPPED (window) &&
|
|
|
|
|
impl)
|
|
|
|
|
{
|
|
|
|
|
GDK_QUARTZ_ALLOC_POOL;
|
|
|
|
|
|
|
|
|
@ -2816,9 +2846,10 @@ gdk_quartz_window_deiconify (GdkWindow *window)
|
|
|
|
|
!WINDOW_IS_TOPLEVEL (window))
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
impl = GDK_WINDOW_IMPL_QUARTZ (window->impl);
|
|
|
|
|
impl = gdk_window_get_quartz_impl (window);
|
|
|
|
|
|
|
|
|
|
if (GDK_WINDOW_IS_MAPPED (window))
|
|
|
|
|
if (GDK_WINDOW_IS_MAPPED (window) &&
|
|
|
|
|
impl)
|
|
|
|
|
{
|
|
|
|
|
GDK_QUARTZ_ALLOC_POOL;
|
|
|
|
|
|
|
|
|
@ -2838,10 +2869,11 @@ gdk_quartz_window_deiconify (GdkWindow *window)
|
|
|
|
|
static gboolean
|
|
|
|
|
window_is_fullscreen (GdkWindow *window)
|
|
|
|
|
{
|
|
|
|
|
GdkWindowImplQuartz *impl = GDK_WINDOW_IMPL_QUARTZ (window->impl);
|
|
|
|
|
GdkWindowImplQuartz *impl = gdk_window_get_quartz_impl (window);
|
|
|
|
|
|
|
|
|
|
#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1070
|
|
|
|
|
if (gdk_quartz_osx_version() >= GDK_OSX_LION)
|
|
|
|
|
if (impl &&
|
|
|
|
|
gdk_quartz_osx_version() >= GDK_OSX_LION)
|
|
|
|
|
return ([impl->toplevel styleMask] & GDK_QUARTZ_FULLSCREEN_WINDOW) != 0;
|
|
|
|
|
else
|
|
|
|
|
#endif
|
|
|
|
@ -2857,10 +2889,11 @@ gdk_quartz_window_fullscreen (GdkWindow *window)
|
|
|
|
|
!WINDOW_IS_TOPLEVEL (window))
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
impl = GDK_WINDOW_IMPL_QUARTZ (window->impl);
|
|
|
|
|
impl = gdk_window_get_quartz_impl (window);
|
|
|
|
|
|
|
|
|
|
#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1070
|
|
|
|
|
if (gdk_quartz_osx_version() >= GDK_OSX_LION)
|
|
|
|
|
if (gdk_quartz_osx_version() >= GDK_OSX_LION &&
|
|
|
|
|
impl)
|
|
|
|
|
{
|
|
|
|
|
if (!window_is_fullscreen (window))
|
|
|
|
|
[impl->toplevel toggleFullScreen:nil];
|
|
|
|
@ -2869,11 +2902,12 @@ gdk_quartz_window_fullscreen (GdkWindow *window)
|
|
|
|
|
{
|
|
|
|
|
#endif
|
|
|
|
|
FullscreenSavedGeometry *geometry;
|
|
|
|
|
GdkWindowImplQuartz *impl = GDK_WINDOW_IMPL_QUARTZ (window->impl);
|
|
|
|
|
GdkWindowImplQuartz *impl = gdk_window_get_quartz_impl (window);
|
|
|
|
|
NSRect frame;
|
|
|
|
|
|
|
|
|
|
if (GDK_WINDOW_DESTROYED (window) ||
|
|
|
|
|
!WINDOW_IS_TOPLEVEL (window))
|
|
|
|
|
!WINDOW_IS_TOPLEVEL (window) ||
|
|
|
|
|
!impl)
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
geometry = get_fullscreen_geometry (window);
|
|
|
|
@ -2925,19 +2959,21 @@ gdk_quartz_window_unfullscreen (GdkWindow *window)
|
|
|
|
|
#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1070
|
|
|
|
|
if (gdk_quartz_osx_version() >= GDK_OSX_LION)
|
|
|
|
|
{
|
|
|
|
|
impl = GDK_WINDOW_IMPL_QUARTZ (window->impl);
|
|
|
|
|
impl = gdk_window_get_quartz_impl (window);
|
|
|
|
|
|
|
|
|
|
if (window_is_fullscreen (window))
|
|
|
|
|
if (window_is_fullscreen (window) &&
|
|
|
|
|
impl)
|
|
|
|
|
[impl->toplevel toggleFullScreen:nil];
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
#endif
|
|
|
|
|
GdkWindowImplQuartz *impl = GDK_WINDOW_IMPL_QUARTZ (window->impl);
|
|
|
|
|
GdkWindowImplQuartz *impl = gdk_window_get_quartz_impl (window);
|
|
|
|
|
FullscreenSavedGeometry *geometry;
|
|
|
|
|
|
|
|
|
|
if (GDK_WINDOW_DESTROYED (window) ||
|
|
|
|
|
!WINDOW_IS_TOPLEVEL (window))
|
|
|
|
|
!WINDOW_IS_TOPLEVEL (window) ||
|
|
|
|
|
!impl)
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
geometry = get_fullscreen_geometry (window);
|
|
|
|
@ -3002,10 +3038,11 @@ static void
|
|
|
|
|
gdk_quartz_window_set_keep_above (GdkWindow *window,
|
|
|
|
|
gboolean setting)
|
|
|
|
|
{
|
|
|
|
|
GdkWindowImplQuartz *impl = GDK_WINDOW_IMPL_QUARTZ (window->impl);
|
|
|
|
|
GdkWindowImplQuartz *impl = gdk_window_get_quartz_impl (window);
|
|
|
|
|
gint level;
|
|
|
|
|
|
|
|
|
|
g_return_if_fail (GDK_IS_WINDOW (window));
|
|
|
|
|
g_return_if_fail (impl);
|
|
|
|
|
|
|
|
|
|
if (GDK_WINDOW_DESTROYED (window) ||
|
|
|
|
|
!WINDOW_IS_TOPLEVEL (window))
|
|
|
|
@ -3021,10 +3058,11 @@ static void
|
|
|
|
|
gdk_quartz_window_set_keep_below (GdkWindow *window,
|
|
|
|
|
gboolean setting)
|
|
|
|
|
{
|
|
|
|
|
GdkWindowImplQuartz *impl = GDK_WINDOW_IMPL_QUARTZ (window->impl);
|
|
|
|
|
GdkWindowImplQuartz *impl = gdk_window_get_quartz_impl (window);
|
|
|
|
|
gint level;
|
|
|
|
|
|
|
|
|
|
g_return_if_fail (GDK_IS_WINDOW (window));
|
|
|
|
|
g_return_if_fail (impl);
|
|
|
|
|
|
|
|
|
|
if (GDK_WINDOW_DESTROYED (window) ||
|
|
|
|
|
!WINDOW_IS_TOPLEVEL (window))
|
|
|
|
@ -3062,10 +3100,11 @@ static void
|
|
|
|
|
gdk_quartz_window_set_opacity (GdkWindow *window,
|
|
|
|
|
gdouble opacity)
|
|
|
|
|
{
|
|
|
|
|
GdkWindowImplQuartz *impl = GDK_WINDOW_IMPL_QUARTZ (window->impl);
|
|
|
|
|
GdkWindowImplQuartz *impl = gdk_window_get_quartz_impl (window);
|
|
|
|
|
|
|
|
|
|
g_return_if_fail (GDK_IS_WINDOW (window));
|
|
|
|
|
g_return_if_fail (WINDOW_IS_TOPLEVEL (window));
|
|
|
|
|
g_return_if_fail (impl);
|
|
|
|
|
|
|
|
|
|
if (GDK_WINDOW_DESTROYED (window) ||
|
|
|
|
|
!WINDOW_IS_TOPLEVEL (window))
|
|
|
|
@ -3086,10 +3125,11 @@ gdk_quartz_window_set_shadow_width (GdkWindow *window,
|
|
|
|
|
gint top,
|
|
|
|
|
gint bottom)
|
|
|
|
|
{
|
|
|
|
|
GdkWindowImplQuartz *impl = GDK_WINDOW_IMPL_QUARTZ (window->impl);
|
|
|
|
|
GdkWindowImplQuartz *impl = gdk_window_get_quartz_impl (window);
|
|
|
|
|
|
|
|
|
|
g_return_if_fail (GDK_IS_WINDOW (window));
|
|
|
|
|
g_return_if_fail (WINDOW_IS_TOPLEVEL (window));
|
|
|
|
|
g_return_if_fail (impl);
|
|
|
|
|
|
|
|
|
|
if (GDK_WINDOW_DESTROYED (window) ||
|
|
|
|
|
!WINDOW_IS_TOPLEVEL (window))
|
|
|
|
@ -3127,9 +3167,10 @@ gdk_quartz_window_get_scale_factor (GdkWindow *window)
|
|
|
|
|
if (GDK_WINDOW_DESTROYED (window))
|
|
|
|
|
return 1;
|
|
|
|
|
|
|
|
|
|
impl = GDK_WINDOW_IMPL_QUARTZ (window->impl);
|
|
|
|
|
impl = gdk_window_get_quartz_impl (window);
|
|
|
|
|
|
|
|
|
|
if (impl->toplevel != NULL && gdk_quartz_osx_version() >= GDK_OSX_LION)
|
|
|
|
|
if (impl && impl->toplevel != NULL &&
|
|
|
|
|
gdk_quartz_osx_version() >= GDK_OSX_LION)
|
|
|
|
|
return [(id <ScaleFactor>) impl->toplevel backingScaleFactor];
|
|
|
|
|
|
|
|
|
|
return 1;
|
|
|
|
@ -3355,15 +3396,14 @@ _gdk_root_window_impl_quartz_get_type (void)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
static CGContextRef
|
|
|
|
|
gdk_root_window_impl_quartz_get_context (GdkWindowImplQuartz *window,
|
|
|
|
|
gdk_root_window_impl_quartz_get_context (GdkWindowImplQuartz *window_impl,
|
|
|
|
|
gboolean antialias)
|
|
|
|
|
{
|
|
|
|
|
GdkWindowImplQuartz *window_impl = GDK_WINDOW_IMPL_QUARTZ (window);
|
|
|
|
|
GdkRootWindowImplQuartz *impl = GDK_ROOT_WINDOW_IMPL_QUARTZ (window);
|
|
|
|
|
GdkRootWindowImplQuartz *impl = GDK_ROOT_WINDOW_IMPL_QUARTZ (window_impl);
|
|
|
|
|
CGSize size;
|
|
|
|
|
CGLayerRef layer;
|
|
|
|
|
|
|
|
|
|
if (GDK_WINDOW_DESTROYED (window_impl->wrapper))
|
|
|
|
|
if (!window_impl || GDK_WINDOW_DESTROYED (window_impl->wrapper))
|
|
|
|
|
return NULL;
|
|
|
|
|
|
|
|
|
|
size.width = gdk_window_get_width (window_impl->wrapper);
|
|
|
|
|