void ChromeClient::enterFullScreenForElement(WebCore::Element* element) { gboolean returnValue; GRefPtr<WebKitDOMHTMLElement> kitElement(adoptGRef(kit(reinterpret_cast<HTMLElement*>(element)))); g_signal_emit_by_name(m_webView, "entering-fullscreen", kitElement.get(), &returnValue); if (returnValue) return; #if ENABLE(VIDEO) && USE(NATIVE_FULLSCREEN_VIDEO) if (element && element->isMediaElement()) { HTMLMediaElement* mediaElement = toHTMLMediaElement(element); if (mediaElement->player() && mediaElement->player()->canEnterFullscreen()) { element->document()->webkitWillEnterFullScreenForElement(element); mediaElement->player()->enterFullscreen(); m_fullScreenElement = element; element->document()->webkitDidEnterFullScreenForElement(element); } return; } #endif GtkWidget* window = gtk_widget_get_toplevel(GTK_WIDGET(m_webView)); if (!widgetIsOnscreenToplevelWindow(window)) return; g_signal_connect(window, "key-press-event", G_CALLBACK(onFullscreenGtkKeyPressEvent), this); m_fullScreenElement = element; element->document()->webkitWillEnterFullScreenForElement(element); m_adjustmentWatcher.disableAllScrollbars(); gtk_window_fullscreen(GTK_WINDOW(window)); element->document()->webkitDidEnterFullScreenForElement(element); }
bool EditorClient::shouldShowDeleteInterface(HTMLElement* element) { gboolean accept = TRUE; GRefPtr<WebKitDOMHTMLElement> kitElement(adoptGRef(kit(element))); g_signal_emit_by_name(m_webView, "should-show-delete-interface-for-element", kitElement.get(), &accept); return accept; }
void ChromeClient::exitFullScreenForElement(WebCore::Element*) { // The element passed into this function is not reliable, i.e. it could // be null. In addition the parameter may be disappearing in the future. // So we use the reference to the element we saved above. ASSERT(m_fullScreenElement); gboolean returnValue; GRefPtr<WebKitDOMHTMLElement> kitElement(adoptGRef(kit(reinterpret_cast<HTMLElement*>(m_fullScreenElement.get())))); g_signal_emit_by_name(m_webView, "leaving-fullscreen", kitElement.get(), &returnValue); if (returnValue) return; #if ENABLE(VIDEO) && USE(NATIVE_FULLSCREEN_VIDEO) if (m_fullScreenElement && m_fullScreenElement->isMediaElement()) { m_fullScreenElement->document()->webkitWillExitFullScreenForElement(m_fullScreenElement.get()); HTMLMediaElement* mediaElement = toHTMLMediaElement(m_fullScreenElement.get()); if (mediaElement->player()) { mediaElement->player()->exitFullscreen(); m_fullScreenElement->document()->webkitDidExitFullScreenForElement(m_fullScreenElement.get()); m_fullScreenElement.clear(); } return; } #endif GtkWidget* window = gtk_widget_get_toplevel(GTK_WIDGET(m_webView)); ASSERT(widgetIsOnscreenToplevelWindow(window)); g_signal_handlers_disconnect_by_func(window, reinterpret_cast<void*>(onFullscreenGtkKeyPressEvent), this); m_fullScreenElement->document()->webkitWillExitFullScreenForElement(m_fullScreenElement.get()); gtk_window_unfullscreen(GTK_WINDOW(window)); m_adjustmentWatcher.enableAllScrollbars(); m_fullScreenElement->document()->webkitDidExitFullScreenForElement(m_fullScreenElement.get()); m_fullScreenElement.clear(); }