diff options
author | Mike Krüger <mikkrg@microsoft.com> | 2019-11-11 12:16:12 +0300 |
---|---|---|
committer | monojenkins <jo.shields+jenkins@xamarin.com> | 2019-12-05 16:38:26 +0300 |
commit | a341194db6bf368d670801d8598fd98d60511256 (patch) | |
tree | f151783e2407c19f13bcdb615b427b3bbdda316b | |
parent | 4eb3aee27fcaffe26b24ac4eeb2ffda9e1b32b50 (diff) |
[Core] Introduced TryGetNativeWidget method to Control.
-rw-r--r-- | main/src/core/MonoDevelop.Ide/MonoDevelop.Components/Control.cs | 12 | ||||
-rw-r--r-- | main/src/core/MonoDevelop.Ide/MonoDevelop.Components/Window.cs | 8 |
2 files changed, 12 insertions, 8 deletions
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components/Control.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components/Control.cs index 842593a939..3a9f8409ed 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components/Control.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components/Control.cs @@ -55,7 +55,7 @@ namespace MonoDevelop.Components { throw new NotSupportedException (); } - + public T GetNativeWidget<T> () where T : class { if (nativeWidget == null) { @@ -92,6 +92,16 @@ namespace MonoDevelop.Components throw new NotSupportedException ($"Cannot get native widget {typeof (T)}"); } + public bool TryGetNativeWidget<T> (out T widget) where T : class + { + if (nativeWidget is T) { + widget = GetNativeWidget<T> (); + return true; + } + widget = null; + return false; + } + void OnGtkDestroyed (object sender, EventArgs args) { GC.SuppressFinalize (this); diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components/Window.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components/Window.cs index 86d2c60234..8446f68609 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components/Window.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components/Window.cs @@ -218,13 +218,7 @@ namespace MonoDevelop.Components { try { #if MAC - NSWindow nsWindow = null; - try { - nsWindow = parent.GetNativeWidget<NSWindow> (); - } catch { - ; // nothing - } - if (nsWindow != null) { + if (parent.TryGetNativeWidget<NSWindow> (out var nsWindow)) { var myNSWindow = MonoDevelop.Components.Mac.GtkMacInterop.GetNSWindow (window); myNSWindow.ParentWindow = nsWindow; } else { |