linux-packaging-mono/external/bockbuild/packages/patches/gtk/embedded-nstextview-has-focus.patch
Xamarin Public Jenkins (auto-signing) 6bdd276d05 Imported Upstream version 5.0.0.42
Former-commit-id: fd56571888259555122d8a0f58c68838229cea2b
2017-04-10 11:41:01 +00:00

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