Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/xwt.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVsevolod Kukol <sevo@xamarin.com>2016-03-11 18:47:26 +0300
committerVsevolod Kukol <sevo@xamarin.com>2016-03-11 18:47:26 +0300
commitd1fe6028d5bdc6a5ed1e131f6cf2d69b0433f796 (patch)
treea21777c75555b4d0f3393e39c98acae0b233a6da /Xwt.Gtk.Mac
parent88e3f10a647e9d91c7c5f96a4ad2281852b4b5b9 (diff)
[Gtk.Mac] Remove broken Popover window border
Diffstat (limited to 'Xwt.Gtk.Mac')
-rw-r--r--Xwt.Gtk.Mac/GtkMacPopoverBackend.cs50
-rw-r--r--Xwt.Gtk.Mac/GtkQuartz.cs61
-rw-r--r--Xwt.Gtk.Mac/MacPlatformBackend.cs1
-rw-r--r--Xwt.Gtk.Mac/Xwt.Gtk.Mac.csproj2
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" />