diff --git a/dlls/mshtml/editor.c b/dlls/mshtml/editor.c
index 4630cfb6f5c..d257c5f3a1f 100644
--- a/dlls/mshtml/editor.c
+++ b/dlls/mshtml/editor.c
@@ -42,6 +42,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(mshtml);
#define NSCMD_CHARNEXT "cmd_charNext"
#define NSCMD_CHARPREVIOUS "cmd_charPrevious"
#define NSCMD_COPY "cmd_copy"
+#define NSCMD_CUT "cmd_cut"
#define NSCMD_FONTCOLOR "cmd_fontColor"
#define NSCMD_FONTFACE "cmd_fontFace"
#define NSCMD_INDENT "cmd_indent"
@@ -946,6 +947,17 @@ HRESULT editor_exec_copy(HTMLDocument *This, DWORD cmdexecopt, VARIANT *in, VARI
return S_OK;
}
+HRESULT editor_exec_cut(HTMLDocument *This, DWORD cmdexecopt, VARIANT *in, VARIANT *out)
+{
+ update_doc(This, UPDATE_UI);
+
+ if(!This->nscontainer)
+ return E_FAIL;
+
+ do_ns_editor_command(This->nscontainer, NSCMD_CUT);
+ return S_OK;
+}
+
HRESULT editor_exec_paste(HTMLDocument *This, DWORD cmdexecopt, VARIANT *in, VARIANT *out)
{
update_doc(This, UPDATE_UI);
diff --git a/dlls/mshtml/mshtml_private.h b/dlls/mshtml/mshtml_private.h
index 4c4ee4ad8c4..74ee748bccb 100644
--- a/dlls/mshtml/mshtml_private.h
+++ b/dlls/mshtml/mshtml_private.h
@@ -399,6 +399,7 @@ void init_editor(HTMLDocument*);
void set_ns_editmode(NSContainer*);
void handle_edit_event(HTMLDocument*,nsIDOMEvent*);
HRESULT editor_exec_copy(HTMLDocument*,DWORD,VARIANT*,VARIANT*);
+HRESULT editor_exec_cut(HTMLDocument*,DWORD,VARIANT*,VARIANT*);
HRESULT editor_exec_paste(HTMLDocument*,DWORD,VARIANT*,VARIANT*);
extern DWORD mshtml_tls;
diff --git a/dlls/mshtml/olecmd.c b/dlls/mshtml/olecmd.c
index e2b749cfdfe..288a12b21d1 100644
--- a/dlls/mshtml/olecmd.c
+++ b/dlls/mshtml/olecmd.c
@@ -487,7 +487,12 @@ static HRESULT query_mshtml_cut(HTMLDocument *This, OLECMD *cmd)
static HRESULT exec_mshtml_cut(HTMLDocument *This, DWORD cmdexecopt, VARIANT *in, VARIANT *out)
{
- FIXME("(%p)->(%08x %p %p)\n", This, cmdexecopt, in, out);
+ TRACE("(%p)->(%08x %p %p)\n", This, cmdexecopt, in, out);
+
+ if(This->usermode == EDITMODE)
+ return editor_exec_cut(This, cmdexecopt, in, out);
+
+ FIXME("Unimplemented in browse mode\n");
return E_NOTIMPL;
}