void FrameLoaderClient::transitionToCommittedForNewPage() { WebKitWebView* containingWindow = getViewFromFrame(m_frame); IntSize size = IntSize(GTK_WIDGET(containingWindow)->allocation.width, GTK_WIDGET(containingWindow)->allocation.height); bool transparent = webkit_web_view_get_transparent(containingWindow); Color backgroundColor = transparent ? WebCore::Color::transparent : WebCore::Color::white; Frame* frame = core(m_frame); ASSERT(frame); frame->createView(size, backgroundColor, transparent, IntSize(), false); // We need to do further manipulation on the FrameView if it was the mainFrame if (frame != frame->page()->mainFrame()) return; WebKitWebViewPrivate* priv = WEBKIT_WEB_VIEW_GET_PRIVATE(containingWindow); frame->view()->setGtkAdjustments(priv->horizontalAdjustment, priv->verticalAdjustment); if (priv->currentMenu) { GtkMenu* menu = priv->currentMenu; priv->currentMenu = NULL; gtk_menu_popdown(menu); g_object_unref(menu); } }
void FrameLoaderClient::postProgressFinishedNotification() { WebKitWebView* webView = getViewFromFrame(m_frame); WebKitWebViewPrivate* privateData = WEBKIT_WEB_VIEW_GET_PRIVATE(webView); // We can get a stopLoad() from dispose when the object is being // destroyed, don't emit the signal in that case. if (!privateData->disposing) g_signal_emit_by_name(webView, "load-finished", m_frame); }
Frame* FrameLoaderClient::dispatchCreatePage() { WebKitWebView* webView = getViewFromFrame(m_frame); WebKitWebView* newWebView = 0; g_signal_emit_by_name(webView, "create-web-view", m_frame, &newWebView); if (!newWebView) return 0; WebKitWebViewPrivate* privateData = WEBKIT_WEB_VIEW_GET_PRIVATE(newWebView); return core(privateData->mainFrame); }
Page* ChromeClient::createWindow(Frame*, const FrameLoadRequest&, const WindowFeatures& features) { if (features.dialog) { notImplemented(); return 0; } else { /* TODO: FrameLoadRequest is not used */ WebKitWebView* webView = WEBKIT_WEB_VIEW_GET_CLASS(m_webView)->create_web_view(m_webView); if (!webView) return 0; WebKitWebViewPrivate* privateData = WEBKIT_WEB_VIEW_GET_PRIVATE(webView); return privateData->corePage; } }
static GtkWidget* inputMethodsMenuItem (WebKitWebView* webView) { if (gtk_major_version > 2 || (gtk_major_version == 2 && gtk_minor_version >= 10)) { GtkSettings* settings = webView ? gtk_widget_get_settings(GTK_WIDGET(webView)) : gtk_settings_get_default(); gboolean showMenu = TRUE; if (settings) g_object_get(settings, "gtk-show-input-method-menu", &showMenu, NULL); if (!showMenu) return 0; } GtkWidget* menuitem = gtk_image_menu_item_new_with_mnemonic( _("Input _Methods")); WebKitWebViewPrivate* priv = WEBKIT_WEB_VIEW_GET_PRIVATE(webView); GtkWidget* imContextMenu = gtk_menu_new(); gtk_im_multicontext_append_menuitems(GTK_IM_MULTICONTEXT(priv->imContext), GTK_MENU_SHELL(imContextMenu)); gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem), imContextMenu); return menuitem; }