Nikolay Sivov : comctl32/edit: Handle Ctrl-A shortcut as select all command.

Alexandre Julliard julliard at winehq.org
Mon Feb 5 16:48:26 CST 2018


Module: wine
Branch: master
Commit: f7062d1d03c374bf8ba872f97e15261ee61ebaeb
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=f7062d1d03c374bf8ba872f97e15261ee61ebaeb

Author: Nikolay Sivov <nsivov at codeweavers.com>
Date:   Mon Feb  5 00:30:11 2018 +0300

comctl32/edit: Handle Ctrl-A shortcut as select all command.

Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/comctl32/edit.c | 17 ++++++++++++++++-
 1 file changed, 16 insertions(+), 1 deletion(-)

diff --git a/dlls/comctl32/edit.c b/dlls/comctl32/edit.c
index 9f065f6..86a0a58 100644
--- a/dlls/comctl32/edit.c
+++ b/dlls/comctl32/edit.c
@@ -1477,12 +1477,15 @@ static void EDIT_InvalidateText(EDITSTATE *es, INT start, INT end)
  *		In other words: this handler is OK
  *
  */
-static void EDIT_EM_SetSel(EDITSTATE *es, UINT start, UINT end, BOOL after_wrap)
+static BOOL EDIT_EM_SetSel(EDITSTATE *es, UINT start, UINT end, BOOL after_wrap)
 {
 	UINT old_start = es->selection_start;
 	UINT old_end = es->selection_end;
 	UINT len = get_text_length(es);
 
+        if (start == old_start && end == old_end)
+            return FALSE;
+
 	if (start == (UINT)-1) {
 		start = es->selection_end;
 		end = es->selection_end;
@@ -1535,6 +1538,8 @@ static void EDIT_EM_SetSel(EDITSTATE *es, UINT start, UINT end, BOOL after_wrap)
             }
 	}
         else EDIT_InvalidateText(es, start, old_end);
+
+        return TRUE;
 }
 
 
@@ -3365,6 +3370,16 @@ static LRESULT EDIT_WM_KeyDown(EDITSTATE *es, INT key)
             if ((es->style & ES_MULTILINE) && EDIT_IsInsideDialog(es))
                 SendMessageW(es->hwndParent, WM_NEXTDLGCTL, shift, 0);
             break;
+        case 'A':
+            if (control)
+            {
+                if (EDIT_EM_SetSel(es, 0, get_text_length(es), FALSE))
+                {
+                    EDIT_NOTIFY_PARENT(es, EN_UPDATE);
+                    EDIT_NOTIFY_PARENT(es, EN_CHANGE);
+                }
+            }
+            break;
 	}
         return TRUE;
 }




More information about the wine-cvs mailing list