Если в карточке контрагента (Торговля) значение в поле не впечатывать, а вставить (через контекстное меню), то при нажатии Записать записывается предыдущее значение поля.
В Бухгалтерии тоже самое.
Если пользоваться горячими клавишами, то работает т.е. Ctrl + Ins и Shift + Ins
Проблема возникает только при использовании контекстного меню для копирования. Нормально работает и Ctrl-C, Ctrl-V
Подтверждаю для 1.0.5 Причём эта проблема проявляется во всех полях, в которые возможен ввод текста (например, все пункты во вкладке меню "Справочники")
Вот лог при вставке: trace:edit:EDIT_WM_SetFocus notification EN_SETFOCUS sent to hwnd=0x101f6 trace:edit:EDIT_PaintLine line=0 trace:edit:EDIT_EM_ReplaceSel L"0000000014", can_undo 1, send_update 1 trace:edit:EDIT_EM_ReplaceSel inserting stuff (tl 0, strl 10, selstart 0 ('L""'), text 'L""') trace:edit:EDIT_UpdateText notification EN_UPDATE sent to hwnd=0x101f6 trace:edit:EDIT_SetCaretPos 10 - 73x0 trace:edit:EDIT_EM_ReplaceSel notification EN_CHANGE sent to hwnd=0x101f6
Нужно решить к релизу
Исправлено хаком. Для пункта меню paste отпрваляем не WM_COMMAND,WM_PASTE, а просто WM_PASTE (тем же макаром реализована вставка через среднюю кнопку мыши и через горячие клавиши).
Нужно тест написать
Ясно. Со временем напишу (эта проблема отмечена в моём вики).
Вайновцы переписали edit, патч, решающий багу, пришлось убрать. Надо проверить, что проблема не вернулась. Было такое решение: commit 438a49b656f40acaa0effb011528b189e0b8e811 Author: Anatoly Lyutin <vostok@etersoft.ru> Date: Mon Apr 28 12:55:18 2008 +0400 Fix eterbug #80 diff --git a/dlls/user32/edit.c b/dlls/user32/edit.c index 4c0342b..acf1645 100644 --- a/dlls/user32/edit.c +++ b/dlls/user32/edit.c @@ -4134,6 +4134,7 @@ static void EDIT_WM_ContextMenu(EDITSTATE *es, INT x, INT y) HMENU popup = GetSubMenu(menu, 0); UINT start = es->selection_start; UINT end = es->selection_end; + int ret; ORDER_UINT(start, end); @@ -4159,8 +4160,14 @@ static void EDIT_WM_ContextMenu(EDITSTATE *es, INT x, INT y) x = rc.left + (rc.right - rc.left) / 2; y = rc.top + (rc.bottom - rc.top) / 2; } + + ret = TrackPopupMenu(popup, TPM_LEFTALIGN | TPM_RIGHTBUTTON | TPM_RETURNCMD, x, y, 0, es->hwndSelf, NULL); + + if( ret == WM_PASTE) + SendMessageW(es->hwndSelf, WM_PASTE, 0, 0); + else + SendMessageW(es->hwndSelf, WM_COMMAND, ret, 0); - TrackPopupMenu(popup, TPM_LEFTALIGN | TPM_RIGHTBUTTON, x, y, 0, es->hwndSelf, NULL); DestroyMenu(menu); }
На сборке eter41\eter17 все хорошо. Вставляется и сохраняется.
На 1.0.10 надо проверить.
(In reply to comment #12) > На 1.0.10 надо проверить. > Проверил на 1.0.10 eter9\eter3. Ошибка не воспоризвелась.