WebContextMenuProxyGtk::~WebContextMenuProxyGtk()
{
    for (auto iter = m_signalHandlers.begin(); iter != m_signalHandlers.end(); ++iter)
        g_signal_handler_disconnect(iter->value, iter->key);

    webkitWebViewBaseSetActiveContextMenuProxy(WEBKIT_WEB_VIEW_BASE(m_webView), 0);
}
WebContextMenuProxyGtk::WebContextMenuProxyGtk(GtkWidget* webView, WebPageProxy& page, const ContextMenuContextData& context, const UserData& userData)
    : WebContextMenuProxy(context, userData)
    , m_webView(webView)
    , m_page(&page)
{
    webkitWebViewBaseSetActiveContextMenuProxy(WEBKIT_WEB_VIEW_BASE(m_webView), this);
}
void WebContextMenuProxyGtk::cancelTracking()
{
    for (auto iter = m_signalHandlers.begin(); iter != m_signalHandlers.end(); ++iter)
        g_signal_handler_disconnect(iter->value, iter->key);
    m_signalHandlers.clear();

    webkitWebViewBaseSetActiveContextMenuProxy(WEBKIT_WEB_VIEW_BASE(m_webView), nullptr);
    m_menu.setPlatformDescription(nullptr);
}
WebContextMenuProxyGtk::WebContextMenuProxyGtk(GtkWidget* webView, WebPageProxy* page)
    : m_webView(webView)
    , m_page(page)
{
    webkitWebViewBaseSetActiveContextMenuProxy(WEBKIT_WEB_VIEW_BASE(m_webView), this);
}