View Issue Details

IDProjectCategoryView StatusLast Update
0000867Far ManagerEditorpublic2010-05-02 20:40
Reporterlort Assigned Tolort  
PrioritynormalSeverityfeatureReproducibilityhave not tried
Status closedResolutionfixed 
Fixed in Version2.0 
Summary0000867: Поддержка redo в редакторе
DescriptionДобавил в редактор поддержку redo, повесил на CtrlShiftZ. Сейчас не работает ограничение на размер undo, может его вообще убрать стоит?
Заодно убрал поле UndoNext в EditorUndoData, группа операций, которые должны откатываться за один раз, теперь заключается между записями с типом UNDO_STARTBLOCK и UNDO_ENDBLOCK, предлагаю добавить в API/макросы возможность создания таких записей - тогда можно будет самому создавать атомарно откатываемые операции.
Additional Informationдля информации
http://forum.farmanager.com/viewtopic.php?f=6&t=2725&p=38003&hilit=MultiEdit#p38003
TagsNo tags attached.
Build1010

Relationships

related to 0000033 closed Wishes UndoContext для редактора. 
related to 0000353 closed Wishes Заменить Editor::UndoData на двусвязанный список 

Activities

2009-05-16 12:09

 

redo.zip (7,620 bytes)

vskirdin

2009-05-18 07:07

administrator   bugnote:0003156

> Сейчас не работает ограничение на размер undo, может его вообще убрать стоит?
Я таки думаю, что стоит оставить верхний предел, но выставить его по умолчанию в 0, т.е. без ограничения (и вывести опцию в настройки). Возможно имеет смысл как-то в статусной строке индицировать о достижении предела (если задан).

2009-05-18 20:17

 

redo2.zip (8,105 bytes)

lort

2009-05-18 20:18

developer   bugnote:0003158

Ограничение вернул. А как насчёт апи с макросами? Предлагаю что-нибудь вроде:
EditorControl(ECTL_UNDOBLOCK, 0) - пометить начало блока операций
EditorControl(ECTL_UNDOBLOCK, (void*)1) - пометить конец блока операций
и в макросах соответственно: Editor.UndoBlock(0) и Editor.UndoBlock(1)

vskirdin

2009-05-19 08:22

administrator   bugnote:0003160

ECTL_UNDOBLOCK - как то коробит и... в памяти сразу возникает мысль про выделенные в редакторе блоки (если я правильно понял, то UNDO_STARTBLOCK и UNDO_ENDBLOCK - это некие маркеры начала и конца атомарной операции).
Переименовать бы, например, просто UNDO_START и UNDO_END :-)

На счет АПИ: аналогично. Я бы обозвал это как ECTL_UNDOREDO, а в качестве Param для EditorControl - некую структуру, аля

struct EditorUndoRedo
{
  int Command; // EUR_GETINFO,EUR_BEGIN,EUR_END,EUR_UNDO,EUR_REDO
  DWORD_PTR Reserved[3]; // ХЗ, надо подумать...
};

("структуру" - чтобы на будущее заложить возможность расширения работы с undo/redo)

На счет макросов - без проблем, но потом, когда сабж заработает (ибо находу править и то и то - накладно с точки зрения пользователя) :-)

vskirdin

2009-05-19 08:48

administrator   bugnote:0003161

...кстати, увидел в дифе dlist.*
а чем не устроил TList.hpp?

2009-05-19 20:53

 

redo3.zip (8,642 bytes)

lort

2009-05-19 20:58

developer   bugnote:0003182

Сдалал ECTL_UNDOREDO. Насчёт TList - здесь, думаю, можно и его приделать, но вообще он мне не понравился тем, что там всего один итератор, который жестко к классу привязан. Например такая задача: есть некий список, надо построить из него меню, и когда ползователь жмёт Delete на каком-нибудь элементе, надо соответствующий элемент из списка удалять. С моим списком можно просто в UserData сохранять указатель на элемент и потом удалять его с помощью MyList.Delete(указатель), а если через TList делать то придётся номер элемента в списке сохранять и потом по всему списку этот элемент искать

alexy

2009-05-19 21:03

administrator   bugnote:0003183

Ну плодить одинаковые классы не надо, можно:
1. улучшить tlist
2. сделать новый класс который наследует tlist и добавляет нужный функционал (как например сделано в истории).

lort

2009-05-20 18:57

developer   bugnote:0003187

Тогда предагаю DList за основу взять, TList пока всё равно мало где используется, history и namelist я переделаю.

vskirdin

2009-05-21 07:25

administrator   bugnote:0003188

Вопрос.
Если что-то или кто-то сделал ECTL_UNDOREDO(EUR_BEGIN), потом что-то сделал и... не поставил в конце ECTL_UNDOREDO(EUR_END).
Как себя поведет ФАР в этом случае?

По поводу DList.
Разумнее разделить: сначала сделать этот патч, а потом, отдельным патчем курочить хистори и намелист.

alexy

2009-05-21 07:55

administrator   bugnote:0003189

Ну против DList тогда ничего не имею, класс хитрый :)
Но тогда будем ждать отдельного патча для его заюзывания везде (наверно можно и за место tstack тоже).

vskirdin

2009-05-21 08:12

administrator   bugnote:0003190

а зачем tstack убирать? он почти узкоспециализированный, свою работу делает отлично...
моя твоя непонимайт

alexy

2009-05-21 08:16

administrator   bugnote:0003191

Ну понесло меня немного :)

lort

2009-05-21 21:07

developer   bugnote:0003206

>Если что-то или кто-то сделал ECTL_UNDOREDO(EUR_BEGIN), потом что-то сделал и... не поставил в конце ECTL_UNDOREDO(EUR_END).
>Как себя поведет ФАР в этом случае?

Фар будет считать что всё, что дальше - это одна большая атомарная операция, если размер буфера ограничен то через некоторое время undo вообще работать перестанет, и не заработает пока фар UNDO_END не получит.
Патч для history и namelist в выходные, наверно, сделаю.

alexy

2009-05-21 21:47

administrator   bugnote:0003207

И в новых файлах поставь копирайт как надо.
dlist я надеюсь это твой личный код?

2009-05-23 18:37

 

DList.zip (7,883 bytes)

lort

2009-05-23 18:38

developer   bugnote:0003228

Да, код мой, патч для замены TList на DList сделал - DList.zip, там же новые DList.* с копирайтами, в DList.hpp я ещё описание методов добавил.

alexy

2009-05-23 20:30

administrator   bugnote:0003229

937 + 938.
Надо видимо ещё хэлп обновить упоминанием про реду.

vskirdin

2009-05-24 06:14

administrator   bugnote:0003232

кроме хелпа - добавить клавишу на AltShiftBS (для единообразия, в дополнение к CtrlShiftZ)

vskirdin

2009-05-25 10:38

administrator   bugnote:0003244

Про макросы.
Как мальчика назовем?
Предлагается вариант V=Editor.Undo(N)
здесь N:
  0 - BEGIN - начало блочной операции
  1 - END - конец блочной операции
  2 - UNDO - сделать таки Undo
  3 - REDO - сделать Redo

Хотя... А что будет вот в таком варианте (и вариации)
BEGIN UNDO END
Здесь Undo применится к... чему? к предыдущему блоку или к нынешнему?

Кстати, lort, а нет желания поработать над темой Undo/Redo в строках ввода? (комстрока, строки ввода в диалогах... - все, что юзает класс Edit, кроме редактора, т.к. здесь уже есть)

vskirdin

2009-05-25 11:09

administrator   bugnote:0003249

ну это ты наверняка значешь (код смотрел, анализировал), или просто "по идеи так"?

vskirdin

2009-05-25 12:11

administrator   bugnote:0003253

а как потом себя ундатор поведет, когда достигнет END?

vskirdin

2009-05-25 12:34

administrator   bugnote:0003255

Я правильно понял, что UNDO/REDO в середине должен разделить блок на 2?

JohnDoe

2009-05-25 20:29

updater   bugnote:0003270

Last edited: 2009-05-25 20:42

Подумав, поудалял свои старые заметки.

>Хотя... А что будет вот в таком варианте (и вариации)
>BEGIN UNDO END
>Здесь Undo применится к... чему? к предыдущему блоку или к нынешнему?

Более гибким будет вариант "Undo применится к предыдущему действию" (не блоку)

Соответственно при этом никакого разделения не возникает.

Остаётся вопрос что делать с непарными бегинами и эндами.
(Непарный BEGIN - второй BEGIN при незакрытом первом
Непарный END - END без предшествующего BEGIN'а)

Предлагаю бегины замещать а энды игнорировать.

lort

2009-05-25 23:10

developer   bugnote:0003271

>Предлагается вариант V=Editor.Undo(N)
Нормально вроде

>Хотя... А что будет вот в таком варианте (и вариации)
>BEGIN UNDO END
Сейчас UNDO просто удалит BEGIN и в результате один END останется, стоит, наверно, вообще UNDO в таких случаях отключать, то есть при такой последовательноси:
действие1 BEGIN действие2 UNDO1 UNDO2 END UNDO3
UNDO1 откатывает действие2, UNDO2 ничего не делает, UNDO3 откатывает действие1

Вложенные блоки, вроде
BEGIN1 действие1 BEGIN2 действие2 действие3 END2 END1
это вполне нормальная ситуация, если сделать здесь в конце UNDO то откатится всё до BEGIN1

Вот одиночный END может быть проблеммой - сейчас если для него UNDO сделать то откатится вообще всё, я добавлю проверку для такого случая

Насчёт Undo/Redo в строках ввода - может потом как-нибудь, сейчас в редакторе работу с не OEM кодировками для старых плагинов сделать хочу, а то S&R текст портит, потом ещё хотел что-нибудь вроде плагина Multi-panel к фару приделать, но с поддержкой плагиновых панелей

JohnDoe

2009-05-26 07:39

updater   bugnote:0003272

Last edited: 2009-05-26 15:31

>действие1 BEGIN действие2 UNDO1 UNDO2 END UNDO3
>UNDO1 откатывает действие2, UNDO2 ничего не делает, UNDO3 откатывает действие1

а)А как насчёт того чтобы UNDO2 откатывало действие1 и перемещало туда BEGIN?

б)И раз допустимы вложенные блоки то нужна возможность как-то получать информацию о том что мы находимся в блоке такой-то вложенности (для того чтобы корректно закрывать END'ы)

в)И ещё неплохо иметь функцию просто отменяющую последний BEGIN

lort

2009-05-26 14:39

developer   bugnote:0003274

А зачем всё это может понадобиться? Я себе использование так вижу - плагин или макрос как-то изменяет текст в редакторе и хочет чтобы эти изменения откатывались за один раз, тогда просто в начале последовательности действий ставится BEGIN, а в конце - END, и неважно какая там сейчас вложенность и какие именно действия между BEGIN и END находятся.

JohnDoe

2009-05-26 15:50

updater   bugnote:0003276

Last edited: 2009-05-26 15:53

Хочется более полного контроля контроля над процессом.
В частности:

а)
"стоит, наверно, вообще UNDO в таких случаях отключать" - лучше не отключать
"UNDO2 ничего не делает" - это для пользователя не очень понятно, поскольку никак не визуализируется.
То что при этом удаляется BEGIN - тоже не всегда хорошо: можно случайно удалить, и потом напрасно на него рассчитывать

б) в) Нет контроля над вложенностью блоков, поэтому случайный лишний END может нам напакостить.

Пока это всё используется плагином - всё в принципе контролируемо, а вот если будут макросы, которые пользователь станет вручную вызывать... Может получится как-то неаккуратненько.

В целом, мелочи конечно... можно и обойтись

alexy

2009-05-26 16:36

administrator   bugnote:0003278

Пользователь, макросы - эти слова в месте не живут поэтому не надо воротить тут разного.

JohnDoe

2009-05-26 16:43

updater   bugnote:0003280

Не понял почему пользователи не живут с макросами

alexy

2009-05-26 16:45

administrator   bugnote:0003281

Потому что тот человек который пишет макросы используя макро-язык он уже ну ни как не простой тупой пользователь. И поэтому то что верно для плагинов, также верно и для макросов.

JohnDoe

2009-05-26 17:19

updater   bugnote:0003282

1)Ну у продвинутого пользователя запросто может "дрогнуть рука", не хуже чем у тупого.

2)Плагин устанавливающий блоки, к примеру, сам может учесть где он сделал вложенные блоки, и вложенные во вложенные, и т. д. - это ж программа.

В случае же макросов, вызываемых горячей клавишей...
Пользователь вряд ли сознательно сможет пользоваться вложенными блоками - не станет же он считать в уме до какого уровня вложенности он там уже дошёл, а никакой индикации нет.

Другое дело, что можно написать умный макрос, но для этого должны быть доступны средства контроля над вложенностью.

(Просто пояснил написанное выше)

Kildor

2009-05-26 18:07

reporter   bugnote:0003284

А поясните, как им пользоваться в макросах? Или я бегу впереди паровоза, и это ещё не реализовано?

PS: Заодно хотелка — иметь параметр для макроса — «Single undo block», и соответственно ставить его при записи. Чтоб не возиться вручную с этими editor.undo(0) … editor.undo(1)

JohnDoe

2009-05-26 18:31

updater   bugnote:0003285

Макросы ещё не реализованы.
Если вручную не возится, то editor.undo(3) просто отменит последнее действие.

Что вы имели ввиду под «Single undo block» и при записи чего его надо ставить?

lort

2009-05-26 20:44

developer   bugnote:0003287

Я подразумевал, что между BEGIN и END никаких пользовательских действий вообще быть не должно - тогда никаких проблем со вложенностью и не будет.
Вообще вложенность там нужна из-за того, что действия, которые макрос/плагин вызывает, могут сами из нескольких действий состоять, например удаление блока строк в фаре реализовано как блок BEGIN - END внутри которого отдельные строки удаляются.

Kildor

2009-05-27 02:08

reporter   bugnote:0003288

> Что вы имели ввиду под «Single undo block» и при записи чего его надо ставить?
Я имел в виду опцию, аналогичную «Разрешить во время выполнения вывод на экран», и при записи — макроса, естественно.

> Если вручную не возится, то editor.undo(3) просто отменит последнее действие.
Нет, не то. Это отменит последний атом, а мне хочется, чтоб при записи макроса была возможность поставить ему (макросу) флаг, который бы позволил отменить весь макрос за одно действие. Вручную. Без того, чтоб редактировать макрос отдельно.

lort, а что будет, если между editor.undo(0) и editor.undo(1) пользователь прервёт макрос? Откат будет именно до editor.undo(0)?

JohnDoe

2009-05-27 14:32

updater   bugnote:0003300

2lort
>Я подразумевал, что между BEGIN и END никаких пользовательских действий вообще
>быть не должно - тогда никаких проблем со вложенностью и не будет.

vskirdin намерен довавить в макроязык функции для управления блоками undo
Таким образом они станут доступны пользователю, который сможет использовать их для своих целей. Отсюда потенциально возникают проблемы с вложенностью.

Впрочем, "умные" макросы способны избавить от этих потенциальных проблем, но для этого нужно реализовать дополнительно то о чём я говорил выше.

Если интересно, то могу привести примеры таких макросов.
Если неинтересно - тоже ничего страшного: в худшем случае пользователь просто потеряет Undo, а это можно пережить.

vskirdin

2009-05-27 14:35

administrator   bugnote:0003301

>>Я подразумевал, что между BEGIN и END никаких пользовательских действий вообще
>>быть не должно - тогда никаких проблем со вложенностью и не будет.
>vskirdin намерен довавить в макроязык функции для управления блоками undo
ну как бы макросы макросами, но АПИ уже есть, так что фраза "между BEGIN и END никаких пользовательских действий" - звучит оптимистично :-)

JohnDoe

2009-05-27 14:44

updater   bugnote:0003302

2Kildor
Не думаю что такая опция будет шибко полезна.
Разве трудно будет добавить в свой макрос editor.undo(0) ... editor.undo(1)?

А выше в обсуждении речь идёт о том случае, когда editor.undo(0) и editor.undo(1) будут находится вообще в РАЗНЫХ макросах (назначены на разные сочетания).

На вопрос который вы задаёте lort'у он уже отвечал выше
>действие1 BEGIN действие2 UNDO1 UNDO2 END UNDO3
>UNDO1 откатывает действие2, UNDO2 ничего не делает, UNDO3 откатывает действие1

lort

2009-05-27 23:02

developer   bugnote:0003308

Под "пользовательскими действиями" я имел в виду интерактивную работу с редактором - поставил BEGIN, набрал какой-то текст, поставил END. Нужны примеры зачем такое может понадобиться.

При прерывании макроса в середине получится незакрытый BEGIN, и тут действитально пользователь удивится если на нём UNDO работать прекратит. Так что пусть лучше всё остаётся как есть - UNDO удаляет BEGIN.

JohnDoe

2009-05-28 07:27

updater   bugnote:0003320

>Нужны примеры зачем такое может понадобиться.
Например: перед использованием какого-либо старого плагина ставим (вручную) BEGIN, а после - END.
Не всегда можно намакростить сразу "BEGIN <вызов плагина> END" - ведь многие плагины работают интерактивно.

lort

2009-05-29 00:49

developer   bugnote:0003352

А если что-то вроде такого попробовать?
Editor.Undo(0) вызов плагина $while(условие) %key=waitkey(); eval(%key) $end Editor.Undo(1)

JohnDoe

2009-05-29 07:28

updater   bugnote:0003356

А что именно предполагается в качестве условия?
В случае интерактивного использования плагинов придётся довольно хитрые условия придумывать (и отлаживать)
И не надо забывать что макрос может прерваться по Ctrl-Break...

В общем выкрутится можно и без того что я предлагал, но это сильно сужает возможности

lort

2009-05-30 01:33

developer   bugnote:0003372

>А что именно предполагается в качестве условия?
$while(!Editor) например

>В случае интерактивного использования плагинов придётся довольно хитрые условия придумывать (и отлаживать)
А про какие плагины речь?

>И не надо забывать что макрос может прерваться по Ctrl-Break...
А зачем его прерывать? Я в реальной работе, по моему, ни разу не прерывал, только при отладке. Тут к тому же макрос будет интерактивный, если с waitkey и eval делать

JohnDoe

2009-05-30 08:23

updater   bugnote:0003374

>$while(!Editor) например
Ага, теперь понял ваш интерактивный макрос. Надо попробовать в реальных условиях.

2vskirdin
> 2 - UNDO - сделать таки Undo
> 3 - REDO - сделать Redo

А это надо? Ведь есть CtrlZ и т.д.

vskirdin

2009-05-30 11:07

administrator   bugnote:0003377

> А это надо? Ведь есть CtrlZ и т.д.
в середине макроса встречается CtrlZ - ты на 100 процентов уверен, что это не про Diz`ы?

NightRoman

2009-06-18 10:32

reporter   bugnote:0003616

привет, вот на это кто-нибудь взглянет или новый тикет открыть?
http://forum.farmanager.com/viewtopic.php?p=46391#p46391
(там и фикс, собственно, предлагается)

суть - когда плагин зовет undo\redo происходит перерисовка - это нехорошо, так как undo\redo у плагина может быть только частью изменений и в результате имеем лишние мелькания экрана и прочие эффекты, которые глаз еще как успевает заметить.

NightRoman

2009-06-22 11:46

reporter   bugnote:0003632

С лишней перерисовкой при вызове undo из плагина -

lort на пляже в отпустке или есть сложности и помощь какая нужна? Если на пляже, нет проблем, подожду. Если сложности, я готов помочь. Раз undo теперь есть, то хочется его задействовать в уже существующем у меня сценарии, но по уму пока не получается из-за дефекта с отрисовкой..

lort

2009-06-22 19:02

developer   bugnote:0003634

Я не в отпуске, просто времени сейчас свободного мало, перерисовку убрал в 1010 билде

NightRoman

2009-06-23 09:03

reporter   bugnote:0003638

lort, спасибо большое за фикс с перерисовкой, извини за мою нетерпеливось. Эту часть фикса проверил, все работает отлично, если оно и могло что-то закосить, я этого пока найти не могу.

NightRoman

2009-06-23 16:12

reporter   bugnote:0003639

Хоть я теперь уже вполне счастлив с новыми возможностями, есть один вопрос вам на подумать. Хотелкой я даже это не называю. В некоторых сценариях было бы таки неплохо вырубить внутренний механизм Undo\Redo либо временно определенными командами, либо для некоторого редактора вообще на всю сессию. Просто действительно есть случаи, когда Undo\Redo не нужен, а работа в редакторе идет будь здоров при этом, тогдаа производительность и ресурсы страдают ни за что.

alexy

2009-06-23 16:15

administrator   bugnote:0003640

Ну и команда, чтоб очисть буффер анду для текущего редактора.

vskirdin

2009-07-22 06:57

administrator   bugnote:0003776

lort, а посмотри ка тикет 0000185

Issue History

Date Modified Username Field Change
2009-05-16 12:09 lort New Issue
2009-05-16 12:09 lort File Added: redo.zip
2009-05-18 07:07 vskirdin Note Added: 0003156
2009-05-18 20:17 lort File Added: redo2.zip
2009-05-18 20:18 lort Note Added: 0003158
2009-05-19 08:22 vskirdin Note Added: 0003160
2009-05-19 08:48 vskirdin Note Added: 0003161
2009-05-19 09:29 alexy Status new => assigned
2009-05-19 09:29 alexy Assigned To => vskirdin
2009-05-19 20:53 lort File Added: redo3.zip
2009-05-19 20:58 lort Note Added: 0003182
2009-05-19 21:03 alexy Note Added: 0003183
2009-05-20 18:57 lort Note Added: 0003187
2009-05-21 07:25 vskirdin Note Added: 0003188
2009-05-21 07:55 alexy Note Added: 0003189
2009-05-21 08:12 vskirdin Note Added: 0003190
2009-05-21 08:16 alexy Note Added: 0003191
2009-05-21 21:07 lort Note Added: 0003206
2009-05-21 21:47 alexy Note Added: 0003207
2009-05-23 18:37 lort File Added: DList.zip
2009-05-23 18:38 lort Note Added: 0003228
2009-05-23 20:06 alexy Assigned To vskirdin => alexy
2009-05-23 20:30 alexy Note Added: 0003229
2009-05-23 20:30 alexy Status assigned => feedback
2009-05-24 06:14 vskirdin Note Added: 0003232
2009-05-24 10:20 alexy Relationship added related to 0000033
2009-05-24 10:20 alexy Relationship added related to 0000353
2009-05-25 10:38 vskirdin Note Added: 0003244
2009-05-25 11:09 vskirdin Note Added: 0003249
2009-05-25 11:11 alexy Assigned To alexy => vskirdin
2009-05-25 12:11 vskirdin Note Added: 0003253
2009-05-25 12:34 vskirdin Note Added: 0003255
2009-05-25 20:29 JohnDoe Note Added: 0003270
2009-05-25 20:42 JohnDoe Note Edited: 0003270
2009-05-25 23:10 lort Note Added: 0003271
2009-05-26 07:39 JohnDoe Note Added: 0003272
2009-05-26 08:35 vskirdin Additional Information Updated
2009-05-26 08:52 JohnDoe Note Edited: 0003272
2009-05-26 14:39 lort Note Added: 0003274
2009-05-26 15:31 JohnDoe Note Edited: 0003272
2009-05-26 15:50 JohnDoe Note Added: 0003276
2009-05-26 15:53 JohnDoe Note Edited: 0003276
2009-05-26 16:36 alexy Note Added: 0003278
2009-05-26 16:43 JohnDoe Note Added: 0003280
2009-05-26 16:45 alexy Note Added: 0003281
2009-05-26 17:19 JohnDoe Note Added: 0003282
2009-05-26 18:07 Kildor Note Added: 0003284
2009-05-26 18:31 JohnDoe Note Added: 0003285
2009-05-26 20:44 lort Note Added: 0003287
2009-05-27 02:08 Kildor Note Added: 0003288
2009-05-27 14:32 JohnDoe Note Added: 0003300
2009-05-27 14:35 vskirdin Note Added: 0003301
2009-05-27 14:44 JohnDoe Note Added: 0003302
2009-05-27 23:02 lort Note Added: 0003308
2009-05-28 07:27 JohnDoe Note Added: 0003320
2009-05-29 00:49 lort Note Added: 0003352
2009-05-29 07:28 JohnDoe Note Added: 0003356
2009-05-30 01:33 lort Note Added: 0003372
2009-05-30 08:23 JohnDoe Note Added: 0003374
2009-05-30 11:07 vskirdin Note Added: 0003377
2009-06-18 10:32 NightRoman Note Added: 0003616
2009-06-18 10:40 alexy Status feedback => assigned
2009-06-18 10:40 alexy Assigned To vskirdin => lort
2009-06-22 11:46 NightRoman Note Added: 0003632
2009-06-22 19:02 lort Note Added: 0003634
2009-06-23 09:03 NightRoman Note Added: 0003638
2009-06-23 16:12 NightRoman Note Added: 0003639
2009-06-23 16:15 alexy Note Added: 0003640
2009-07-22 06:57 vskirdin Note Added: 0003776
2010-05-02 20:40 alexy Build => 1010
2010-05-02 20:40 alexy Status assigned => closed
2010-05-02 20:40 alexy Resolution open => fixed
2010-05-02 20:40 alexy Fixed in Version => 2.0