Bug 80

Summary: 1Cv77: Пропадают скопированные значения
Product: WINE@Etersoft Reporter: Vitaly Lipatov <lav>
Component: ОбщееAssignee: Денис Баранов <baraka>
Status: CLOSED FIXED QA Contact: Vitaly Lipatov <lav>
Severity: major    
Priority: P2 CC: baraka, kondratyuk, vostok
Version: unspecified   
Target Milestone: release 1.0.10   
Hardware: PC   
OS: Linux   
Whiteboard:
Заявки RT: Связано с:
Дата напоминания:
Bug Depends on:    
Bug Blocks: 287, 1217    

Description Vitaly Lipatov 2006-04-10 20:52:29 MSD
Если в карточке контрагента (Торговля) значение в поле не впечатывать, а 
вставить (через контекстное меню), то при нажатии Записать записывается 
предыдущее значение поля.
Comment 1 Vitaly Lipatov 2006-07-23 15:27:05 MSD
В Бухгалтерии тоже самое.
Comment 2 Николай Оберемко 2006-10-03 13:38:04 MSD
Если пользоваться горячими клавишами, то работает т.е. Ctrl + Ins и Shift + Ins
Comment 3 Vitaly Lipatov 2006-10-04 21:11:55 MSD
Проблема возникает только при использовании контекстного меню для копирования. 
Нормально работает и  Ctrl-C, Ctrl-V 
Comment 4 Константин Кондратюк 2006-12-13 14:11:52 MSK
Подтверждаю для 1.0.5
Причём эта проблема проявляется во всех полях, в которые возможен ввод текста (например, все пункты во вкладке меню "Справочники")
Comment 5 Vitaly Lipatov 2006-12-13 15:01:33 MSK
Вот лог при вставке:
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
Comment 6 Vitaly Lipatov 2007-02-23 11:48:01 MSK
Нужно решить к релизу
Comment 7 Анатолий Лютин 2007-02-23 17:03:49 MSK
Исправлено хаком. Для пункта меню paste отпрваляем не WM_COMMAND,WM_PASTE, а просто WM_PASTE (тем же макаром реализована вставка через среднюю кнопку мыши и через горячие клавиши).
Comment 8 Vitaly Lipatov 2007-07-07 14:29:57 MSD
Нужно тест написать
Comment 9 Анатолий Лютин 2007-07-09 12:00:17 MSD
Ясно. Со временем напишу (эта проблема отмечена в моём вики).
Comment 10 Vitaly Lipatov 2009-02-13 18:23:33 MSK
Вайновцы переписали 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);
 }
Comment 11 Денис Баранов 2009-02-13 19:12:44 MSK
На сборке eter41\eter17 все хорошо.
Вставляется и сохраняется.
Comment 12 Vitaly Lipatov 2009-02-13 20:23:36 MSK
На 1.0.10 надо проверить.
Comment 13 Денис Баранов 2009-02-14 17:17:26 MSK
(In reply to comment #12)
> На 1.0.10 надо проверить.
> 

Проверил на 1.0.10 eter9\eter3. Ошибка не воспоризвелась.