Rob Shearman : mshtml: Handle Ctrl-Home and Ctrl-End in edit mode.
Alexandre Julliard
julliard at wine.codeweavers.com
Thu Jul 26 06:37:15 CDT 2007
Module: wine
Branch: master
Commit: 4dfdec2ef57f4cd8f36f53e086d50a76aaa224b5
URL: http://source.winehq.org/git/wine.git/?a=commit;h=4dfdec2ef57f4cd8f36f53e086d50a76aaa224b5
Author: Rob Shearman <rob at codeweavers.com>
Date: Wed Jul 25 19:15:22 2007 -0500
mshtml: Handle Ctrl-Home and Ctrl-End in edit mode.
---
dlls/mshtml/editor.c | 36 +++++++++++++++++++++++++++++++++++-
1 files changed, 35 insertions(+), 1 deletions(-)
diff --git a/dlls/mshtml/editor.c b/dlls/mshtml/editor.c
index f9005b6..5bf160e 100644
--- a/dlls/mshtml/editor.c
+++ b/dlls/mshtml/editor.c
@@ -39,6 +39,7 @@
WINE_DEFAULT_DEBUG_CHANNEL(mshtml);
#define NSCMD_ALIGN "cmd_align"
+#define NSCMD_BEGINLINE "cmd_beginLine"
#define NSCMD_BOLD "cmd_bold"
#define NSCMD_CHARNEXT "cmd_charNext"
#define NSCMD_CHARPREVIOUS "cmd_charPrevious"
@@ -46,6 +47,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(mshtml);
#define NSCMD_CUT "cmd_cut"
#define NSCMD_DELETECHARFORWARD "cmd_deleteCharForward"
#define NSCMD_DELETEWORDFORWARD "cmd_deleteWordForward"
+#define NSCMD_ENDLINE "cmd_endLine"
#define NSCMD_FONTCOLOR "cmd_fontColor"
#define NSCMD_FONTFACE "cmd_fontFace"
#define NSCMD_INDENT "cmd_indent"
@@ -53,17 +55,23 @@ WINE_DEFAULT_DEBUG_CHANNEL(mshtml);
#define NSCMD_ITALIC "cmd_italic"
#define NSCMD_LINENEXT "cmd_lineNext"
#define NSCMD_LINEPREVIOUS "cmd_linePrevious"
+#define NSCMD_MOVEBOTTOM "cmd_moveBottom"
#define NSCMD_MOVEPAGEDOWN "cmd_movePageDown"
#define NSCMD_MOVEPAGEUP "cmd_movePageUp"
+#define NSCMD_MOVETOP "cmd_moveTop"
#define NSCMD_OL "cmd_ol"
#define NSCMD_OUTDENT "cmd_outdent"
#define NSCMD_PASTE "cmd_paste"
+#define NSCMD_SELECTBEGINLINE "cmd_selectBeginLine"
+#define NSCMD_SELECTBOTTOM "cmd_selectBottom"
#define NSCMD_SELECTCHARNEXT "cmd_selectCharNext"
#define NSCMD_SELECTCHARPREVIOUS "cmd_selectCharPrevious"
+#define NSCMD_SELECTENDLINE "cmd_selectEndLine"
#define NSCMD_SELECTLINENEXT "cmd_selectLineNext"
#define NSCMD_SELECTLINEPREVIOUS "cmd_selectLinePrevious"
#define NSCMD_SELECTPAGEDOWN "cmd_selectPageDown"
#define NSCMD_SELECTPAGEUP "cmd_selectPageUp"
+#define NSCMD_SELECTTOP "cmd_selectTop"
#define NSCMD_SELECTWORDNEXT "cmd_selectWordNext"
#define NSCMD_SELECTWORDPREVIOUS "cmd_selectWordPrevious"
#define NSCMD_UL "cmd_ul"
@@ -83,6 +91,8 @@ WINE_DEFAULT_DEBUG_CHANNEL(mshtml);
#define DOM_VK_RIGHT VK_RIGHT
#define DOM_VK_DOWN VK_DOWN
#define DOM_VK_DELETE VK_DELETE
+#define DOM_VK_HOME VK_HOME
+#define DOM_VK_END VK_END
static const WCHAR wszFont[] = {'f','o','n','t',0};
static const WCHAR wszSize[] = {'s','i','z','e',0};
@@ -478,7 +488,7 @@ static nsIDOMNode *get_child_text_node(nsIDOMNode *node, BOOL first)
return NULL;
}
-static void handle_arrow_key(HTMLDocument *This, nsIDOMKeyEvent *event, const char **cmds)
+static void handle_arrow_key(HTMLDocument *This, nsIDOMKeyEvent *event, const char *cmds[4])
{
int i=0;
PRBool b;
@@ -566,6 +576,30 @@ void handle_edit_event(HTMLDocument *This, nsIDOMEvent *event)
handle_arrow_key(This, key_event, cmds);
break;
}
+ case DOM_VK_HOME: {
+ static const char *cmds[] = {
+ NSCMD_BEGINLINE,
+ NSCMD_MOVETOP,
+ NSCMD_SELECTBEGINLINE,
+ NSCMD_SELECTTOP
+ };
+
+ TRACE("home\n");
+ handle_arrow_key(This, key_event, cmds);
+ break;
+ }
+ case DOM_VK_END: {
+ static const char *cmds[] = {
+ NSCMD_ENDLINE,
+ NSCMD_MOVEBOTTOM,
+ NSCMD_SELECTENDLINE,
+ NSCMD_SELECTBOTTOM
+ };
+
+ TRACE("end\n");
+ handle_arrow_key(This, key_event, cmds);
+ break;
+ }
}
nsIDOMKeyEvent_Release(key_event);
More information about the wine-cvs
mailing list