0

I tried capturing the event like this...

class ExposedWebView : WebKit.WebView {
    public event EventHandler Create
    {
        add
        {
            Signal signal = Signal.Lookup (this, "create");
            signal.AddDelegate (value);
        }
        remove
        {
            Signal signal = Signal.Lookup (this, "create");
            signal.RemoveDelegate (value);
        }
    }
}

But I get an error when I try to create a handler...

GLib-GObject-WARNING **: gsignal.c:2375: signal create' is invalid for instance0x20e8020' of type `__gtksharp_1_ExposedWebView'

Anyone know why this doesn't work? Is there another way to get popup dialogs to work in WebView?

David Mulder
  • 7,595
  • 11
  • 45
  • 61

1 Answers1

0

I had to enlist create-web-view, not 'create'...

ExposedWebView webView = new ExposedWebView();
webView.CreateWebView += HandleCreateWebView;

    void HandleCreateWebView (object o, CreateWebViewArgs args)
    {
        Window info = new Window("");
        info.DefaultWidth = 1000;
        info.DefaultHeight = 700;
        VBox vbox2 = new VBox();
        WebView child = new WebView();
        child.NavigationRequested += HandleNavigationRequested1;
        vbox2.PackStart(child);
        info.Add (vbox2);
        info.ShowAll();
        args.RetVal = child;
    }


class ExposedWebView : WebKit.WebView {
    public event CreateWebViewHandler CreateWebView
    {
        add
        {
            Signal signal = Signal.Lookup (this, "create-web-view", typeof(CreateWebViewArgs));
            signal.AddDelegate (value);
        }
        remove
        {
            Signal signal = Signal.Lookup (this, "create-web-view", typeof(CreateWebViewArgs));
            signal.RemoveDelegate (value);
        }
    }

    [DefaultSignalHandler (Type = typeof(WebView), ConnectionMethod = "OverrideCreateWebView")]
    protected virtual WebView OnCreateWebView (WebFrame frame)
    {
        ExposedWebView webView = new ExposedWebView();
        Value empty = Value.Empty;
        ValueArray valueArray = new ValueArray (2u);
        Value[] array = new Value[2];
        array [0] = new Value (this);
        valueArray.Append (array [0]);
        array [1] = new Value (frame);
        valueArray.Append (array [1]);
        GLib.Object.g_signal_chain_from_overridden (valueArray.ArrayPtr, ref empty);
        Value[] array2 = array;
        for (int i = 0; i < array2.Length; i++)
        {
            Value value = array2 [i];
            value.Dispose ();
        }
        return webView;
    }
}

public delegate void CreateWebViewHandler (object o, CreateWebViewArgs args);

public class CreateWebViewArgs : SignalArgs
{
    //
    // Properties
    //

    public WebFrame Frame
    {
        get
        {
            return (WebFrame)base.Args [0];
        }
    }
}
David Mulder
  • 7,595
  • 11
  • 45
  • 61