Jacek Caban : mshtml: Added HTMLTxtRange::Exec(IDM_INDENT) implementation.
Alexandre Julliard
julliard at winehq.org
Thu Dec 6 08:26:52 CST 2007
Module: wine
Branch: master
Commit: f5a8a450b2e0678770c35cbb42035a4d8bfe38e5
URL: http://source.winehq.org/git/wine.git/?a=commit;h=f5a8a450b2e0678770c35cbb42035a4d8bfe38e5
Author: Jacek Caban <jacek at codeweavers.com>
Date: Thu Dec 6 12:23:22 2007 +0100
mshtml: Added HTMLTxtRange::Exec(IDM_INDENT) implementation.
---
dlls/mshtml/txtrange.c | 49 +++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 48 insertions(+), 1 deletions(-)
diff --git a/dlls/mshtml/txtrange.c b/dlls/mshtml/txtrange.c
index 7d046bb..d5e65b8 100644
--- a/dlls/mshtml/txtrange.c
+++ b/dlls/mshtml/txtrange.c
@@ -28,6 +28,7 @@
#include "winuser.h"
#include "winnls.h"
#include "ole2.h"
+#include "mshtmcid.h"
#include "wine/debug.h"
#include "wine/unicode.h"
@@ -1729,15 +1730,61 @@ static HRESULT WINAPI RangeCommandTarget_QueryStatus(IOleCommandTarget *iface, c
return E_NOTIMPL;
}
+static HRESULT exec_indent(HTMLTxtRange *This, VARIANT *in, VARIANT *out)
+{
+ nsIDOMDocumentFragment *fragment;
+ nsIDOMElement *blockquote_elem, *p_elem;
+ nsIDOMDocument *nsdoc;
+ nsIDOMNode *tmp;
+ nsAString tag_str;
+
+ static const PRUnichar blockquoteW[] = {'B','L','O','C','K','Q','U','O','T','E',0};
+ static const PRUnichar pW[] = {'P',0};
+
+ TRACE("(%p)->(%p %p)\n", This, in, out);
+
+ nsIWebNavigation_GetDocument(This->doc->nscontainer->navigation, &nsdoc);
+
+ nsAString_Init(&tag_str, blockquoteW);
+ nsIDOMDocument_CreateElement(nsdoc, &tag_str, &blockquote_elem);
+ nsAString_Finish(&tag_str);
+
+ nsAString_Init(&tag_str, pW);
+ nsIDOMDocument_CreateElement(nsdoc, &tag_str, &p_elem);
+ nsAString_Finish(&tag_str);
+
+ nsIDOMDocument_Release(nsdoc);
+
+ nsIDOMRange_ExtractContents(This->nsrange, &fragment);
+ nsIDOMElement_AppendChild(p_elem, (nsIDOMNode*)fragment, &tmp);
+ nsIDOMDocumentFragment_Release(fragment);
+ nsIDOMNode_Release(tmp);
+
+ nsIDOMElement_AppendChild(blockquote_elem, (nsIDOMNode*)p_elem, &tmp);
+ nsIDOMElement_Release(p_elem);
+ nsIDOMNode_Release(tmp);
+
+ nsIDOMRange_InsertNode(This->nsrange, (nsIDOMNode*)blockquote_elem);
+ nsIDOMElement_Release(blockquote_elem);
+
+ return S_OK;
+}
+
static HRESULT WINAPI RangeCommandTarget_Exec(IOleCommandTarget *iface, const GUID *pguidCmdGroup,
DWORD nCmdID, DWORD nCmdexecopt, VARIANT *pvaIn, VARIANT *pvaOut)
{
HTMLTxtRange *This = OLECMDTRG_THIS(iface);
+
TRACE("(%p)->(%s %d %x %p %p)\n", This, debugstr_guid(pguidCmdGroup), nCmdID,
nCmdexecopt, pvaIn, pvaOut);
if(pguidCmdGroup && IsEqualGUID(&CGID_MSHTML, pguidCmdGroup)) {
- FIXME("Unsupported cmdid %d of CGID_MSHTML\n", nCmdID);
+ switch(nCmdID) {
+ case IDM_INDENT:
+ return exec_indent(This, pvaIn, pvaOut);
+ default:
+ FIXME("Unsupported cmdid %d of CGID_MSHTML\n", nCmdID);
+ }
}else {
FIXME("Unsupported cmd %d of group %s\n", nCmdID, debugstr_guid(pguidCmdGroup));
}
More information about the wine-cvs
mailing list