void WebInspectorProxy::platformAttach() { GRefPtr<GtkWidget> inspectorView = m_inspectorView; if (m_inspectorWindow) { gtk_container_remove(GTK_CONTAINER(m_inspectorWindow), m_inspectorView); gtk_widget_destroy(m_inspectorWindow); m_inspectorWindow = 0; } // Set a default sizes based on InspectorFrontendClientLocal. static const unsigned defaultAttachedSize = 300; static const unsigned minimumAttachedWidth = 750; static const unsigned minimumAttachedHeight = 250; if (m_attachmentSide == AttachmentSideBottom) { unsigned maximumAttachedHeight = platformInspectedWindowHeight() * 3 / 4; platformSetAttachedWindowHeight(std::max(minimumAttachedHeight, std::min(defaultAttachedSize, maximumAttachedHeight))); } else { unsigned maximumAttachedWidth = platformInspectedWindowWidth() * 3 / 4; platformSetAttachedWindowWidth(std::max(minimumAttachedWidth, std::min(defaultAttachedSize, maximumAttachedWidth))); } if (m_client.attach(this)) return; webkitWebViewBaseAddWebInspector(WEBKIT_WEB_VIEW_BASE(m_page->viewWidget()), m_inspectorView, m_attachmentSide); gtk_widget_show(m_inspectorView); }
bool WebInspectorProxy::canAttach() { // Keep this in sync with InspectorFrontendClientLocal::canAttachWindow. There are two implementations // to make life easier in the multi-process world we have. WebInspectorProxy uses canAttach to decide if // we can attach on open (on the UI process side). And InspectorFrontendClientLocal::canAttachWindow is // used to decide if we can attach when the attach button is pressed (on the WebProcess side). // If we are already attached, allow attaching again to allow switching sides. if (m_isAttached) return true; // Don't allow attaching to another inspector -- two inspectors in one window is too much! if (m_level > 1) return false; // Don't allow the attach if the window would be too small to accommodate the minimum inspector height. unsigned inspectedPageHeight = platformInspectedWindowHeight(); unsigned inspectedPageWidth = platformInspectedWindowWidth(); unsigned maximumAttachedHeight = inspectedPageHeight * 3 / 4; return minimumAttachedHeight <= maximumAttachedHeight && minimumAttachedWidth <= inspectedPageWidth; }