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:
authorCody Russell <bratsche@gnome.org>2014-01-29 19:18:49 +0400
committerCody Russell <bratsche@gnome.org>2014-01-30 00:25:54 +0400
commited806630abafcfff787b6ccd76edfc92a27a659f (patch)
tree23658b2478f70d7796cb701098be346ffdfcd470 /Xwt.Gtk.Windows
parent3a1a3e2629a61c86a68b20eb4817aa6cf4e55e38 (diff)
Xwt.Gtk.Windows.WebView implementation.
Diffstat (limited to 'Xwt.Gtk.Windows')
-rw-r--r--Xwt.Gtk.Windows/WebViewBackend.cs82
-rw-r--r--Xwt.Gtk.Windows/WindowsPlatformBackend.cs1
-rw-r--r--Xwt.Gtk.Windows/Xwt.Gtk.Windows.csproj3
3 files changed, 86 insertions, 0 deletions
diff --git a/Xwt.Gtk.Windows/WebViewBackend.cs b/Xwt.Gtk.Windows/WebViewBackend.cs
new file mode 100644
index 00000000..ea0165b5
--- /dev/null
+++ b/Xwt.Gtk.Windows/WebViewBackend.cs
@@ -0,0 +1,82 @@
+//
+// WebViewBackend.cs
+//
+// Author:
+// Cody Russell <cody@xamarin.com>
+//
+// Copyright (c) 2014 Xamarin Inc.
+//
+// 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.Threading;
+using System.Runtime.InteropServices;
+using SWF = System.Windows.Forms;
+using Xwt.GtkBackend;
+using Xwt.Backends;
+using GTK = Gtk;
+
+namespace Xwt.Gtk.Windows
+{
+ public class WebViewBackend : WidgetBackend, IWebViewBackend
+ {
+ SWF.WebBrowser view;
+ string url;
+ GTK.Socket socket;
+
+ [DllImportAttribute("user32.dll", EntryPoint = "SetParent")]
+ internal static extern System.IntPtr SetParent([InAttribute] System.IntPtr hwndChild, [InAttribute] System.IntPtr hwndNewParent);
+
+ public override void Initialize ()
+ {
+ base.Initialize ();
+
+ socket = new GTK.Socket ();
+ Widget = socket;
+
+ GLib.Timeout.Add (50, delegate {
+ // We need to wait until after this widget has been parented.
+ Widget.Realize ();
+ Widget.Show ();
+
+ var size = new System.Drawing.Size (Widget.WidthRequest, Widget.HeightRequest);
+
+ view = new SWF.WebBrowser ();
+ view.Size = size;
+ var browser_handle = view.Handle;
+ IntPtr window_handle = (IntPtr)socket.Id;
+ SetParent (browser_handle, window_handle);
+ if (url != null)
+ view.Navigate (url);
+
+ return false;
+ });
+ }
+
+ public string Url {
+ get { return url; }
+ set {
+ url = value;
+ if (view != null)
+ view.Navigate (url);
+ }
+ }
+ }
+}
+
diff --git a/Xwt.Gtk.Windows/WindowsPlatformBackend.cs b/Xwt.Gtk.Windows/WindowsPlatformBackend.cs
index 454f0d9f..8112e1e6 100644
--- a/Xwt.Gtk.Windows/WindowsPlatformBackend.cs
+++ b/Xwt.Gtk.Windows/WindowsPlatformBackend.cs
@@ -35,6 +35,7 @@ namespace Xwt.Gtk.Windows
{
base.Initialize (toolit);
toolit.RegisterBackend<DesktopBackend, GtkWindowsDesktopBackend> ();
+ toolit.RegisterBackend<IWebViewBackend, WebViewBackend> ();
}
}
}
diff --git a/Xwt.Gtk.Windows/Xwt.Gtk.Windows.csproj b/Xwt.Gtk.Windows/Xwt.Gtk.Windows.csproj
index 36f4884c..15a9c4fa 100644
--- a/Xwt.Gtk.Windows/Xwt.Gtk.Windows.csproj
+++ b/Xwt.Gtk.Windows/Xwt.Gtk.Windows.csproj
@@ -36,6 +36,8 @@
<Reference Include="gtk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f, processorArchitecture=MSIL" />
<Reference Include="System" />
<Reference Include="System.Drawing" />
+ <Reference Include="System.Windows.Forms" />
+ <Reference Include="atk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
</ItemGroup>
<ItemGroup>
<Compile Include="Enums.cs" />
@@ -44,6 +46,7 @@
<Compile Include="Structs.cs" />
<Compile Include="Win32.cs" />
<Compile Include="WindowsPlatformBackend.cs" />
+ <Compile Include="WebViewBackend.cs" />
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<ItemGroup>