void WebEditorClient::registerUndoStep(PassRefPtr<UndoStep> step) { IWebUIDelegate* uiDelegate = 0; if (SUCCEEDED(m_webView->uiDelegate(&uiDelegate))) { String actionName = undoNameForEditAction(step->editingAction()); WebEditorUndoCommand* undoCommand = new WebEditorUndoCommand(step, true); if (!undoCommand) return; uiDelegate->registerUndoWithTarget(m_undoTarget, 0, undoCommand); undoCommand->Release(); // the undo manager owns the reference if (!actionName.isEmpty()) uiDelegate->setActionTitle(BString(actionName)); uiDelegate->Release(); } }
FloatRect WebChromeClient::windowRect() { IWebUIDelegate* uiDelegate = 0; if (SUCCEEDED(m_webView->uiDelegate(&uiDelegate))) { RECT rect; HRESULT retval = uiDelegate->webViewFrame(m_webView, &rect); uiDelegate->Release(); if (SUCCEEDED(retval)) return rect; } return FloatRect(); }
IntRect WebChromeClient::windowResizerRect() const { IntRect intRect; IWebUIDelegate* ui; if (SUCCEEDED(m_webView->uiDelegate(&ui)) && ui) { IWebUIDelegatePrivate* uiPrivate; if (SUCCEEDED(ui->QueryInterface(IID_IWebUIDelegatePrivate, (void**)&uiPrivate))) { RECT r; if (SUCCEEDED(uiPrivate->webViewResizerRect(m_webView, &r))) intRect = IntRect(r.left, r.top, r.right-r.left, r.bottom-r.top); uiPrivate->Release(); } ui->Release(); } return intRect; }
void WebEditorClient::registerCommandForUndo(PassRefPtr<EditCommand> command) { IWebUIDelegate* uiDelegate = 0; if (SUCCEEDED(m_webView->uiDelegate(&uiDelegate))) { LPCTSTR actionName = undoNameForEditAction(command->editingAction()); WebEditorUndoCommand* undoCommand = new WebEditorUndoCommand(command, true); if (!undoCommand) return; uiDelegate->registerUndoWithTarget(m_undoTarget, 0, undoCommand); undoCommand->Release(); // the undo manager owns the reference BSTR actionNameBSTR = SysAllocString(actionName); if (actionNameBSTR) { uiDelegate->setActionTitle(actionNameBSTR); SysFreeString(actionNameBSTR); } uiDelegate->Release(); } }