+2006-07-19 Richard Hult <richard@imendio.com>
+
+ * gdk/quartz/gdkwindow-quartz.c (gdk_window_impl_quartz_init)
+ (gdk_window_set_type_hint, gdk_window_get_type_hint):
+ * gdk/quartz/GdkQuartzWindow.c
+ ([GdkQuartzWindow -canBecomeMainWindow])
+ ([GdkQuartzWindow -canBecomeKeyWindow]): Implement type hints and
+ use them to determine which windows should be allowed to become
+ main and key windows.
+
2006-07-19 Richard Hult <richard@imendio.com>
* gdk/quartz/gdkwindow-quartz.c:
+2006-07-19 Richard Hult <richard@imendio.com>
+
+ * gdk/quartz/gdkwindow-quartz.c (gdk_window_impl_quartz_init)
+ (gdk_window_set_type_hint, gdk_window_get_type_hint):
+ * gdk/quartz/GdkQuartzWindow.c
+ ([GdkQuartzWindow -canBecomeMainWindow])
+ ([GdkQuartzWindow -canBecomeKeyWindow]): Implement type hints and
+ use them to determine which windows should be allowed to become
+ main and key windows.
+
2006-07-19 Richard Hult <richard@imendio.com>
* gdk/quartz/gdkwindow-quartz.c:
-(BOOL)canBecomeMainWindow
{
+ GdkWindow *window = [[self contentView] gdkWindow];
+ GdkWindowObject *private = (GdkWindowObject *)window;
+ GdkWindowImplQuartz *impl = GDK_WINDOW_IMPL_QUARTZ (private->impl);
+
+ switch (impl->type_hint)
+ {
+ case GDK_WINDOW_TYPE_HINT_NORMAL:
+ case GDK_WINDOW_TYPE_HINT_DIALOG:
+ return YES;
+
+ case GDK_WINDOW_TYPE_HINT_MENU:
+ case GDK_WINDOW_TYPE_HINT_TOOLBAR:
+ case GDK_WINDOW_TYPE_HINT_SPLASHSCREEN:
+ case GDK_WINDOW_TYPE_HINT_UTILITY:
+ case GDK_WINDOW_TYPE_HINT_DOCK:
+ case GDK_WINDOW_TYPE_HINT_DESKTOP:
+ case GDK_WINDOW_TYPE_HINT_DROPDOWN_MENU:
+ case GDK_WINDOW_TYPE_HINT_POPUP_MENU:
+ case GDK_WINDOW_TYPE_HINT_TOOLTIP:
+ case GDK_WINDOW_TYPE_HINT_NOTIFICATION:
+ case GDK_WINDOW_TYPE_HINT_COMBO:
+ case GDK_WINDOW_TYPE_HINT_DND:
+ return NO;
+ }
+
return YES;
}
-(BOOL)canBecomeKeyWindow
{
+ GdkWindow *window = [[self contentView] gdkWindow];
+ GdkWindowObject *private = (GdkWindowObject *)window;
+ GdkWindowImplQuartz *impl = GDK_WINDOW_IMPL_QUARTZ (private->impl);
+
+ switch (impl->type_hint)
+ {
+ case GDK_WINDOW_TYPE_HINT_NORMAL:
+ case GDK_WINDOW_TYPE_HINT_DIALOG:
+ case GDK_WINDOW_TYPE_HINT_MENU:
+ case GDK_WINDOW_TYPE_HINT_TOOLBAR:
+ case GDK_WINDOW_TYPE_HINT_UTILITY:
+ case GDK_WINDOW_TYPE_HINT_DOCK:
+ case GDK_WINDOW_TYPE_HINT_DESKTOP:
+ case GDK_WINDOW_TYPE_HINT_DROPDOWN_MENU:
+ case GDK_WINDOW_TYPE_HINT_POPUP_MENU:
+ case GDK_WINDOW_TYPE_HINT_COMBO:
+ return YES;
+
+ case GDK_WINDOW_TYPE_HINT_SPLASHSCREEN:
+ case GDK_WINDOW_TYPE_HINT_TOOLTIP:
+ case GDK_WINDOW_TYPE_HINT_NOTIFICATION:
+ case GDK_WINDOW_TYPE_HINT_DND:
+ return NO;
+ }
+
return YES;
}
{
impl->width = 1;
impl->height = 1;
+ impl->type_hint = GDK_WINDOW_TYPE_HINT_NORMAL;
}
static void
GdkDrawableImplQuartz *draw_impl;
GdkVisual *visual;
- GDK_QUARTZ_ALLOC_POOL;
-
if (parent && GDK_WINDOW_DESTROYED (parent))
- {
- GDK_QUARTZ_RELEASE_POOL;
- return NULL;
- }
+ return NULL;
+
+ GDK_QUARTZ_ALLOC_POOL;
if (!parent)
parent = _gdk_root;
GdkWindowObject *private;
GdkWindowImplQuartz *impl;
- private = (GdkWindowObject *)window;
-
- if (private->destroyed)
+ if (GDK_WINDOW_DESTROYED (window))
return;
GDK_QUARTZ_ALLOC_POOL;
+ private = (GdkWindowObject *)window;
impl = GDK_WINDOW_IMPL_QUARTZ (private->impl);
/* FIXME: We need to raise the window (move it to the top in the list) */
{
g_return_if_fail (GDK_IS_WINDOW (window));
- /* FIXME: Implement */
+ if (GDK_WINDOW_DESTROYED (window))
+ return;
+
+ GDK_WINDOW_IMPL_QUARTZ (((GdkWindowObject *) window)->impl)->type_hint = hint;
}
GdkWindowTypeHint
gdk_window_get_type_hint (GdkWindow *window)
{
- /* FIXME: Implement */
- return GDK_WINDOW_TYPE_HINT_NORMAL;
+ if (GDK_WINDOW_DESTROYED (window))
+ return GDK_WINDOW_TYPE_HINT_NORMAL;
+
+ return GDK_WINDOW_IMPL_QUARTZ (((GdkWindowObject *) window)->impl)->type_hint;
}
void
NSTrackingRectTag tracking_rect;
GdkQuartzView *view;
+ GdkWindowTypeHint type_hint;
+
/* This is the autorelease pool which is retained
* while the context is being held
*/