75 lines
2.2 KiB
Diff
75 lines
2.2 KiB
Diff
|
diff --git a/gdk/gdkwindow.h b/gdk/gdkwindow.h
|
||
|
index e9428d0..8bd02d7 100644
|
||
|
--- a/gdk/gdkwindow.h
|
||
|
+++ b/gdk/gdkwindow.h
|
||
|
@@ -724,6 +724,8 @@ void gdk_window_remove_redirection (GdkWindow *window);
|
||
|
|
||
|
/* NSView embedding */
|
||
|
gboolean gdk_window_supports_nsview_embedding ();
|
||
|
+gboolean gdk_window_has_embedded_nsview_focus (GdkWindow *window);
|
||
|
+void gdk_window_set_has_embedded_nsview_focus (GdkWindow *window, gboolean value);
|
||
|
|
||
|
#ifndef GDK_DISABLE_DEPRECATED
|
||
|
#ifndef GDK_MULTIHEAD_SAFE
|
||
|
diff --git a/gdk/quartz/GdkQuartzWindow.c b/gdk/quartz/GdkQuartzWindow.c
|
||
|
index b6b794e..124427e 100644
|
||
|
--- a/gdk/quartz/GdkQuartzWindow.c
|
||
|
+++ b/gdk/quartz/GdkQuartzWindow.c
|
||
|
@@ -247,6 +247,15 @@
|
||
|
}
|
||
|
}
|
||
|
|
||
|
+ if (responder != NULL && [responder isKindOfClass: [NSTextView class]])
|
||
|
+ {
|
||
|
+ gdk_window_set_has_embedded_nsview_focus (window, TRUE);
|
||
|
+ }
|
||
|
+ else
|
||
|
+ {
|
||
|
+ gdk_window_set_has_embedded_nsview_focus (window, FALSE);
|
||
|
+ }
|
||
|
+
|
||
|
return [super makeFirstResponder:responder];
|
||
|
}
|
||
|
|
||
|
diff --git a/gdk/quartz/gdkwindow-quartz.c b/gdk/quartz/gdkwindow-quartz.c
|
||
|
index 050139a..cd5cc26 100644
|
||
|
--- a/gdk/quartz/gdkwindow-quartz.c
|
||
|
+++ b/gdk/quartz/gdkwindow-quartz.c
|
||
|
@@ -895,6 +895,24 @@ gdk_window_supports_nsview_embedding ()
|
||
|
return TRUE;
|
||
|
}
|
||
|
|
||
|
+gboolean
|
||
|
+gdk_window_has_embedded_nsview_focus (GdkWindow *window)
|
||
|
+{
|
||
|
+ GdkWindowObject *private = GDK_WINDOW_OBJECT (window);
|
||
|
+ GdkWindowImplQuartz *impl = GDK_WINDOW_IMPL_QUARTZ (private->impl);
|
||
|
+
|
||
|
+ return impl->has_nsview_focus;
|
||
|
+}
|
||
|
+
|
||
|
+void
|
||
|
+gdk_window_set_has_embedded_nsview_focus (GdkWindow *window, gboolean value)
|
||
|
+{
|
||
|
+ GdkWindowObject *private = GDK_WINDOW_OBJECT (window);
|
||
|
+ GdkWindowImplQuartz *impl = GDK_WINDOW_IMPL_QUARTZ (private->impl);
|
||
|
+
|
||
|
+ impl->has_nsview_focus = value;
|
||
|
+}
|
||
|
+
|
||
|
void
|
||
|
_gdk_window_impl_new (GdkWindow *window,
|
||
|
GdkWindow *real_parent,
|
||
|
diff --git a/gdk/quartz/gdkwindow-quartz.h b/gdk/quartz/gdkwindow-quartz.h
|
||
|
index f35238b..b619914 100644
|
||
|
--- a/gdk/quartz/gdkwindow-quartz.h
|
||
|
+++ b/gdk/quartz/gdkwindow-quartz.h
|
||
|
@@ -61,6 +61,7 @@ struct _GdkWindowImplQuartz
|
||
|
GList *sorted_children;
|
||
|
|
||
|
GdkRegion *needs_display_region;
|
||
|
+ gboolean has_nsview_focus;
|
||
|
};
|
||
|
|
||
|
struct _GdkWindowImplQuartzClass
|