mono / xwt

A cross-platform UI toolkit for creating desktop applications with .NET and Mono
MIT License
1.37k stars 241 forks source link

[Mac] GtkOnMacTest.exe webkit widget does not work #601

Open HinTak opened 8 years ago

HinTak commented 8 years ago

The rest of it works, but not the webkit widget.

System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.NullReferenceException: Object re
ference not set to an instance of an object
  at ObjCRuntime.Class.Register (System.Type type) <0x7ca76f8 + 0x00027> in <filename unknown>:0 
  at ObjCRuntime.Class.GetHandle (System.Type type) <0x7ca7668 + 0x00023> in <filename unknown>:0 
  at Foundation.NSObject.AllocIfNeeded () <0x7ca75d8 + 0x0003b> in <filename unknown>:0 
  at Foundation.NSObject..ctor (Foundation.NSObjectFlag x) <0x7ca6998 + 0x00023> in <filename unknown>:0 
  at AppKit.NSResponder..ctor (Foundation.NSObjectFlag t) <0x7ca6360 + 0x0002b> in <filename unknown>:0 
  at AppKit.NSView..ctor (Foundation.NSObjectFlag t) <0x7ca4588 + 0x0002b> in <filename unknown>:0 
  at WebKit.WebView..ctor () <0x7ca36b0 + 0x0002f> in <filename unknown>:0 
  at Xwt.Gtk.Mac.WebViewBackend.Initialize () <0x7ca3418 + 0x00033> in <filename unknown>:0 
  at Xwt.GtkBackend.WidgetBackend.Xwt.Backends.IWidgetBackend.Initialize (IWidgetEventSink sink) <0x58a0ce0 + 0x00039> in <filename unknown>:0 
  at Xwt.Widget+WidgetBackendHost.OnBackendCreated () <0x58a0c30 + 0x00027> in <filename unknown>:0 
  at Xwt.Backends.BackendHost.LoadBackend () <0x2fd8850 + 0x00129> in <filename unknown>:0 
  at Xwt.Backends.BackendHost.get_Backend () <0x2fd8828 + 0x00013> in <filename unknown>:0 
  at Xwt.Backends.BackendHost`2[T,B].get_Backend () <0x2fd87d8 + 0x00013> in <filename unknown>:0 
  at Xwt.WebView.get_Backend () <0x5ccd648 + 0x0001f> in <filename unknown>:0 
  at Xwt.WebView.get_Url () <0x5ccd5a0 + 0x00013> in <filename unknown>:0 
  at (wrapper remoting-invoke-with-check) Xwt.WebView:get_Url ()
  at Samples.WebViewSample..ctor () <0x5ccab60 + 0x00313> in <filename unknown>:0 
  at (wrapper managed-to-native) System.Reflection.MonoCMethod:InternalInvoke (System.Reflection.MonoCMethod,object,object[],System.Exception&)
  at System.Reflection.MonoCMethod.InternalInvoke (System.Object obj, System.Object[] parameters) <0x4b0250 + 0x00033> in <filename unknown>:0 
  --- End of inner exception stack trace ---
  at System.Reflection.MonoCMethod.InternalInvoke (System.Object obj, System.Object[] parameters) <0x4b0250 + 0x0007b> in <filename unknown>:0 
  at System.RuntimeType.CreateInstanceMono (Boolean nonPublic) <0x4b23a0 + 0x00143> in <filename unknown>:0 
  at System.RuntimeType.CreateInstanceSlow (Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache, System.Threading.StackCrawlMark& stackMark
) <0x4b1e08 + 0x00043> in <filename unknown>:0 
  at System.RuntimeType.CreateInstanceDefaultCtor (Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache, System.Threading.StackCrawlMark& st
ackMark) <0x4b1d88 + 0x00047> in <filename unknown>:0 
  at System.Activator.CreateInstance (System.Type type, Boolean nonPublic) <0x4b1c70 + 0x00093> in <filename unknown>:0 
  at System.Activator.CreateInstance (System.Type type) <0x4b1c40 + 0x0001b> in <filename unknown>:0 
  at Samples.MainWindow.HandleSamplesTreeSelectionChanged (System.Object sender, System.EventArgs e) <0x5cc5ef0 + 0x000cb> in <filename unknown>:0 
  at Xwt.TreeView.OnSelectionChanged (System.EventArgs a) <0x5cc5eb8 + 0x0002f> in <filename unknown>:0 
  at Xwt.TreeView+WidgetBackendHost.OnSelectionChanged () <0x5cc5e88 + 0x00028> in <filename unknown>:0 
  at Xwt.GtkBackend.TableViewBackend.<HandleWidgetSelectionChanged>m__0 () <0x5cc5d68 + 0x00020> in <filename unknown>:0 
  at Xwt.Toolkit.Invoke (System.Action a) <0x58a7e30 + 0x0003d> in <filename unknown>:0 

I think it is somewhat related to https://github.com/mono/xwt/issues/249 and https://github.com/mono/xwt/pull/285 ? I see it is calling

(wrapper managed-to-native) Xwt.GtkBackend.GtkWorkarounds:objc_getClass (string)([STRING:0x548990:NSApplication], ) 

then do nothing on it?

@sevoku @slluis - should be easy to confirm, since it is one of your own TestApp examples? I see GtkOnMac seems to do strange things - Mostly it is GTK, but for about 5 widgets, it loads Xwt.Gtk.Mac which uses Xamarin.Mac for only about 5 widgets, and there is a section with NSApplication.Init which is commented out in Xwt.Gtk.Mac/MacPlatformBackend.cs , two weeks ago in 53aa46fd by @slluis ,

commit 53aa46fd7a565e52dd6c4978aa44a7683e89b4ab
Author: Lluis Sanchez Gual <lluis@xamarin.com>
Date:   Tue May 31 18:11:53 2016 +0200

    Disable native mac file dialogs in GtkOnMac engine

    There are some Cocoa initialization issues.
HinTak commented 8 years ago

The one before that

commit c8b36a92ac67f9ebc32df25ae497733eb969401d
Author: Lluis Sanchez Gual <lluis@xamarin.com>
Date:   Tue May 31 11:19:16 2016 +0200

    Implement native backends for file dialogs in GtkOnMac engine

also played with NSApplication.Init a bit - in fact that one adds the NSApplication.Init ; but also put the one in Xwt.XamMac/Xwt.Mac/MacEngine.cs into a thread?

HinTak commented 8 years ago

I am on a64b65f922c3b88adf4e78345e012f253050a604 (current master head), btw.

sevoku commented 7 years ago

It works for me with current master. Maybe it has been fixed already?