Skip to content

Commit b66792a

Browse files
committed
[User32]
- Patch by Nikolay Sivov : Fix Edit margins calculation for empty client area case. - Patch by Akihiro Sagawa : Emit EM_SETSEL message when choosing "Select All" from context menu. Don' t emit WM_COMMAND on choosing an item in a context menu (Edit control). svn path=/trunk/; revision=62749
1 parent 90e1c4d commit b66792a

File tree

1 file changed

+13
-44
lines changed
  • reactos/win32ss/user/user32/controls

1 file changed

+13
-44
lines changed

reactos/win32ss/user/user32/controls/edit.c

Lines changed: 13 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -2918,7 +2918,7 @@ static void EDIT_EM_SetMargins(EDITSTATE *es, INT action,
29182918
default_right_margin = tm.tmAveCharWidth / 2;
29192919
min_size = calc_min_set_margin_size(dc, default_left_margin, default_right_margin);
29202920
GetClientRect(es->hwndSelf, &rc);
2921-
if(rc.right - rc.left < min_size) {
2921+
if (!IsRectEmpty(&rc) && (rc.right - rc.left < min_size)) {
29222922
default_left_margin = es->left_margin;
29232923
default_right_margin = es->right_margin;
29242924
}
@@ -3252,17 +3252,14 @@ static LRESULT EDIT_WM_Char(EDITSTATE *es, WCHAR c)
32523252
return 1;
32533253
}
32543254

3255-
#if 0 // Removed see Revision 43925 comments.
3255+
32563256
/*********************************************************************
32573257
*
3258-
* WM_COMMAND
3258+
* EDIT_ContextMenuCommand
32593259
*
32603260
*/
3261-
static void EDIT_WM_Command(EDITSTATE *es, INT code, INT id, HWND control)
3261+
static void EDIT_ContextMenuCommand(EDITSTATE *es, UINT id)
32623262
{
3263-
if (code || control)
3264-
return;
3265-
32663263
switch (id) {
32673264
case EM_UNDO:
32683265
SendMessageW(es->hwndSelf, WM_UNDO, 0, 0);
@@ -3280,15 +3277,13 @@ static void EDIT_WM_Command(EDITSTATE *es, INT code, INT id, HWND control)
32803277
SendMessageW(es->hwndSelf, WM_CLEAR, 0, 0);
32813278
break;
32823279
case EM_SETSEL:
3283-
EDIT_EM_SetSel(es, 0, (UINT)-1, FALSE);
3284-
EDIT_EM_ScrollCaret(es);
3280+
SendMessageW(es->hwndSelf, EM_SETSEL, 0, -1);
32853281
break;
32863282
default:
32873283
ERR("unknown menu item, please report\n");
32883284
break;
32893285
}
32903286
}
3291-
#endif
32923287

32933288

32943289
/*********************************************************************
@@ -3313,8 +3308,8 @@ static void EDIT_WM_ContextMenu(EDITSTATE *es, INT x, INT y)
33133308
HMENU popup = GetSubMenu(menu, 0);
33143309
UINT start = es->selection_start;
33153310
UINT end = es->selection_end;
3311+
UINT cmd;
33163312

3317-
BOOL selectedItem; // reactos r40667
33183313
ORDER_UINT(start, end);
33193314

33203315
/* undo */
@@ -3345,34 +3340,12 @@ static void EDIT_WM_ContextMenu(EDITSTATE *es, INT x, INT y)
33453340
if (!(es->flags & EF_FOCUSED))
33463341
SetFocus(es->hwndSelf);
33473342

3348-
#ifdef __REACTOS__ // r40667
3349-
selectedItem = TrackPopupMenu(popup, TPM_LEFTALIGN | TPM_RIGHTBUTTON | TPM_RETURNCMD, x, y, 0, es->hwndSelf, NULL);
3350-
// Added see Revision 43925 comments.
3351-
switch (selectedItem) {
3352-
case EM_UNDO:
3353-
SendMessageW(es->hwndSelf, WM_UNDO, 0, 0);
3354-
break;
3355-
case WM_CUT:
3356-
SendMessageW(es->hwndSelf, WM_CUT, 0, 0);
3357-
break;
3358-
case WM_COPY:
3359-
SendMessageW(es->hwndSelf, WM_COPY, 0, 0);
3360-
break;
3361-
case WM_PASTE:
3362-
SendMessageW(es->hwndSelf, WM_PASTE, 0, 0);
3363-
break;
3364-
case WM_CLEAR:
3365-
SendMessageW(es->hwndSelf, WM_CLEAR, 0, 0);
3366-
break;
3367-
case EM_SETSEL:
3368-
EDIT_EM_SetSel(es, 0, (UINT)-1, FALSE);
3369-
EDIT_EM_ScrollCaret(es);
3370-
break;
3371-
default:
3372-
ERR("unknown menu item, please report\n");
3373-
break;
3374-
}
3375-
#endif
3343+
cmd = TrackPopupMenu(popup, TPM_LEFTALIGN | TPM_RIGHTBUTTON | TPM_RETURNCMD | TPM_NONOTIFY,
3344+
x, y, 0, es->hwndSelf, NULL);
3345+
3346+
if (cmd)
3347+
EDIT_ContextMenuCommand(es, cmd);
3348+
33763349
DestroyMenu(menu);
33773350
}
33783351

@@ -5049,11 +5022,7 @@ LRESULT WINAPI EditWndProc_common( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lP
50495022
case WM_CLEAR:
50505023
EDIT_WM_Clear(es);
50515024
break;
5052-
#if 0 // Removed see Revision 43925 comments.
5053-
case WM_COMMAND:
5054-
EDIT_WM_Command(es, HIWORD(wParam), LOWORD(wParam), (HWND)lParam);
5055-
break;
5056-
#endif
5025+
50575026
case WM_CONTEXTMENU:
50585027
EDIT_WM_ContextMenu(es, (short)LOWORD(lParam), (short)HIWORD(lParam));
50595028
break;

0 commit comments

Comments
 (0)