diff options
author | Vsevolod Kukol <sevo@xamarin.com> | 2016-03-11 18:47:26 +0300 |
---|---|---|
committer | Vsevolod Kukol <sevo@xamarin.com> | 2016-03-11 18:47:26 +0300 |
commit | d1fe6028d5bdc6a5ed1e131f6cf2d69b0433f796 (patch) | |
tree | a21777c75555b4d0f3393e39c98acae0b233a6da /Xwt.Gtk.Mac | |
parent | 88e3f10a647e9d91c7c5f96a4ad2281852b4b5b9 (diff) |
[Gtk.Mac] Remove broken Popover window border
Diffstat (limited to 'Xwt.Gtk.Mac')
-rw-r--r-- | Xwt.Gtk.Mac/GtkMacPopoverBackend.cs | 50 | ||||
-rw-r--r-- | Xwt.Gtk.Mac/GtkQuartz.cs | 61 | ||||
-rw-r--r-- | Xwt.Gtk.Mac/MacPlatformBackend.cs | 1 | ||||
-rw-r--r-- | Xwt.Gtk.Mac/Xwt.Gtk.Mac.csproj | 2 |
4 files changed, 114 insertions, 0 deletions
diff --git a/Xwt.Gtk.Mac/GtkMacPopoverBackend.cs b/Xwt.Gtk.Mac/GtkMacPopoverBackend.cs new file mode 100644 index 00000000..a6b0ebd7 --- /dev/null +++ b/Xwt.Gtk.Mac/GtkMacPopoverBackend.cs @@ -0,0 +1,50 @@ +// +// GtkMacPopoverBackend.cs +// +// Author: +// Vsevolod Kukol <sevo@sevo.org> +// +// Copyright (c) 2016 Vsevolod Kukol +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. +using System; +using Xwt.GtkBackend; +using GTK = Gtk; + +namespace Xwt.Gtk.Mac +{ + public class GtkMacPopoverBackend : PopoverBackend + { + public override void Initialize (Backends.IPopoverEventSink sink) + { + base.Initialize (sink); + Popover.Shown += RemoveShadow; + } + + static void RemoveShadow (object sender, EventArgs e) + { + var popover = sender as GTK.Window; + if (popover != null) { + var window = GtkQuartz.GetWindow (popover); + window.HasShadow = false; + } + } + } +} + diff --git a/Xwt.Gtk.Mac/GtkQuartz.cs b/Xwt.Gtk.Mac/GtkQuartz.cs new file mode 100644 index 00000000..c38ca60a --- /dev/null +++ b/Xwt.Gtk.Mac/GtkQuartz.cs @@ -0,0 +1,61 @@ +// +// GtkQuartz.cs +// +// Author: +// Vsevolod Kukol <sevo@sevo.org> +// +// Copyright (c) 2016 Vsevolod Kukol +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. +using System; +using System.Runtime.InteropServices; +using AppKit; + +namespace Xwt.Gtk.Mac +{ + public static class GtkQuartz + { + const string LIBQUARTZ = "libgtk-quartz-2.0.dylib"; + + public static NSWindow GetWindow (global::Gtk.Window window) + { + if (window.GdkWindow == null) + return null; + var ptr = gdk_quartz_window_get_nswindow (window.GdkWindow.Handle); + if (ptr == IntPtr.Zero) + return null; + return ObjCRuntime.Runtime.GetNSObject<NSWindow> (ptr); + } + + public static NSView GetView (global::Gtk.Widget widget) + { + var ptr = gdk_quartz_window_get_nsview (widget.GdkWindow.Handle); + if (ptr == IntPtr.Zero) + return null; + return ObjCRuntime.Runtime.GetNSObject<NSView> (ptr); + } + + [DllImport (LIBQUARTZ)] + static extern IntPtr gdk_quartz_window_get_nsview (IntPtr window); + + [DllImport (LIBQUARTZ)] + static extern IntPtr gdk_quartz_window_get_nswindow (IntPtr window); + } +} + diff --git a/Xwt.Gtk.Mac/MacPlatformBackend.cs b/Xwt.Gtk.Mac/MacPlatformBackend.cs index 21adc735..d505bed9 100644 --- a/Xwt.Gtk.Mac/MacPlatformBackend.cs +++ b/Xwt.Gtk.Mac/MacPlatformBackend.cs @@ -36,6 +36,7 @@ namespace Xwt.Gtk.Mac toolit.RegisterBackend <IWebViewBackend,WebViewBackend> (); toolit.RegisterBackend <DesktopBackend,GtkMacDesktopBackend> (); toolit.RegisterBackend <FontBackendHandler,GtkMacFontBackendHandler> (); + toolit.RegisterBackend <IPopoverBackend,GtkMacPopoverBackend> (); } } } diff --git a/Xwt.Gtk.Mac/Xwt.Gtk.Mac.csproj b/Xwt.Gtk.Mac/Xwt.Gtk.Mac.csproj index 60e42eb2..c4ee0c2a 100644 --- a/Xwt.Gtk.Mac/Xwt.Gtk.Mac.csproj +++ b/Xwt.Gtk.Mac/Xwt.Gtk.Mac.csproj @@ -45,6 +45,8 @@ <Compile Include="GtkMacDesktopBackend.cs" /> <Compile Include="Carbon.cs" /> <Compile Include="GtkMacFontBackendHandler.cs" /> + <Compile Include="GtkMacInterop.cs" /> + <Compile Include="GtkMacPopoverBackend.cs" /> </ItemGroup> <Import Project="..\BuildHelpers.targets" /> <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> |