View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0003061 | Wishes | _Common | public | 2015-08-14 16:29 | 2016-04-20 07:36 |
Reporter | JohnDoe | Assigned To | vskirdin | ||
Priority | normal | Severity | feature | Reproducibility | N/A |
Status | closed | Resolution | fixed | ||
Product Version | 3.0 | ||||
Summary | 0003061: FSF.CopyToClipboard + FCT_COLUMN: вертикальные блоки, совместимые со сторонними приложениями | ||||
Description | Сейчас вертикальные блоки в буфере обмена реализованы в виде специального формата "FAR_VerticalBlock_Unicode", содержимое которого дублирует "CF_UNICODETEXT", и распознаётся только Far Manager. Предлагаю вместо этого поддержать общепринятые форматы: "Borland IDE Block Type" "MSDEVColumnSelect" Собственный формат в этом случае будет не нужен. | ||||
Additional Information | http://api.farmanager.com/ru/fsf/copytoclipboard.html http://forum.farmanager.com/viewtopic.php?p=131082#p131082 | ||||
Tags | No tags attached. | ||||
Build | 4627 | ||||
|
Категория выбрана неверно, т.к. пожелание относится не только к API. Прошу исправить на "_Common", и соответственно заменить заголовок на "вертикальные блоки, совместимые со сторонними приложениями" |
|
"MSDEVColumnSelect" - какая структура данных в клипборд отсаживается? Данные бинарные. Как дополнение к CF_UNICODETEXT? |
|
Насколько я помню, там пустой блок. У борланда 1 байт с выставленным 0x02. ScintillaWin.cxx гуглится, там всё достаточно просто. |
|
Про борланд ничего не могу сказать, но у MSDEV... явно не 1 байт. 0000000000: 96 A7 9E FD 13 3B 70 43 │ A6 79 56 10 6B B2 88 FB 0000000010: 00 01 00 00 00 FF FF FF │ FF 01 00 00 00 00 00 00 0000000020: 00 04 01 00 00 00 0E 53 │ 79 73 74 65 6D 2E 42 6F 0000000030: 6F 6C 65 61 6E 01 00 00 │ 00 07 6D 5F 76 61 6C 75 0000000040: 65 00 01 01 0B │ |
|
Что туда студия пишет X3. Но вполне может быть, что в фар будет достаточно просто проверять наличие этого формата и записывать пустой блок этого формата. |
|
Если для операции "оттуда в Far", то в принципе применимо - достаточно проверить наличие MSDEVColumnSelect (или борманд), а данные брать из CF_UNICODETEXT и вставлять как будто это FAR_VerticalBlock_Unicode. Но как я понял из описания - должно работать в оба направления. |
|
Проверил вставку в студию блока с пустым MSDEVColumnSelect. Отличий от вставки вертикального блока помеченного в самой студии не заметил. |
|
Разжуй. UPD: правильно я понимаю, что для того, чтобы И борманд заработал, достаточно все же не нулевой блок, а, скажем, блок размером в 1 байт (который содержит 0x02)? |
|
В тесте положил в клипборд CF_UNICODETEXT и пустой блок MSDEVColumnSelect: SetClipboardData((CLIPFORMAT)RegisterClipboardFormat(L"MSDEVColumnSelect"),0); В студии Ctrl-V --- вставляется вертикальный блок. |
|
UPD: да |
|
Так, по ходу надо добавлять оба блока или достаточно "MSDEVColumnSelect" размером в 1 байт и = 0x02? |
|
Два. У них разные типы. Регистрируешь 2 типа. "MSDEVColumnSelect" выставляешь пустым а "Borland IDE Block Type", с одним байтом 0x02. |
|
build 4436. Тип "Borland IDE Block Type" испытать не на чем. С "MSDEVColumnSelect" вроде проблем не выявлено. |
|
> Предлагаю вместо этого поддержать общепринятые форматы: "Borland IDE Block Type" "MSDEVColumnSelect" Пара вопросов: - а где написано, что форматы некоторых проприетарных IDE являются общепринятыми? - Нельзя ли класть опционально? У меня, например, "Borland IDE" нет, а лишние блоки жрут память и время. - Нельзя ли вообще класть плагином? |
|
ХЗ. Память - ну я бы не сказал, что много - они только идентификаторы, основная инфа в CF_UNICODETEXT. По ходу аналогично надо сделать и для "FAR_VerticalBlock_Unicode" (хмм... хотя в Far 2 такой тип уже был) Плагином? АПИ для копипаста? |
|
> В клипборде: > "FAR_VerticalBlock_Unicode" "родной" фаровский блок А нафига он теперь? >а лишние блоки жрут память и время. Ощутимо? |
|
> А нафига он теперь? Отвечу цитатой: "а где написано, что форматы некоторых проприетарных IDE являются общепринятыми?" |
|
При чём тут общепринятые или нет? Для внутренних функций достаточно одного единственного формата, и пофиг как его назвать, хоть и MSDEVColumnSelect. |
|
> а где написано, что форматы некоторых проприетарных IDE являются общепринятыми? Нигде. Давайте будем исходить не из "общепринятости", а исключительно из практических соображений. 1. Использование собственного проприетарного формата ничем не лучше. 2. Поддержка сторонних даёт возможность прозрачно использовать вертикальные блоки между этими приложениями. 3. Плагином можно было бы, но пока формата 2 а не 20 - не очень оправданно. |
|
JohnDoe, ну как бы вертикальный блок в фаре был дааавно, эти два (кстати то же, "собственные проприетарные") появились позже. Почему они так поступили (ввели собственные форматы, вместо использования нашего) - не к нам. По п.2 - после 4436 так же можно прозрачно использовать вертикальные блоки между этими приложениями. Так в чем вопрос? |
|
Обсуждаемые 2 формата были предложены, т.к. используются в более чем одном приложении. А вопрос в том, что при их наличии держать ещё один "собственный", имхо, излишне. |
|
> Память - ну я бы не сказал, что много - они только идентификаторы А. Ну это меняет дело. Я ваше "по ходу надо добавлять оба блока" понял так, что там скопированное натурально лежит два раза. >> "FAR_VerticalBlock_Unicode" "родной" фаровский блок > А нафига он теперь? В 1.75/2 вставлять, если ими ещё кто-то пользуется. |
|
>В 1.75/2 вставлять, если ими ещё кто-то пользуется. Трогательно ) |
|
Сейчас вертикальный блок дублируется в CF_UNICODETEXT и FAR_VerticalBlock_Unicode. Так и задумано, или так получилось? |
|
Дублируется, насколько я понимаю, чтобы потом можно было вставить в блокнот или ещё куда. |
|
А точнее, чтобы можно было вставлять в 1.75/2, т.к. они ожидают в FAR_VerticalBlock_Unicode данные, а не только маркер. Впрочем, думаю, мы без этой совместимости проживём. |
|
Вынужден переоткрыть, так как обнаружилось, что данное изменение сломало вставку поточного блока из редактора Borland C++ 5 в редактор Far. Поставим в редакторе Borland курсор на начало строки и нажмём ShiftEnd CtrlC. Затем в редакторе Far поставим курсор в начало пустой строки и нажмём CtrlV. 1. В билдах 4434 и ранее после вставки курсор был в конце строки. При нажатии Enter блок не расширялся на следующую строку. То-есть поведение было такое же, как если мы и копируем, и вставляем внутри редактора Far. 2. В билдах 4436 и позднее после вставки курсор находится в начале строки. И если мы нажмём End Enter, выделение появится и в следующей строке, причём блок - вертикальный. Вывод: данное изменение принимает борландовский поточный блок за вертикальный. |
|
4627 |
Date Modified | Username | Field | Change |
---|---|---|---|
2015-08-14 16:29 | JohnDoe | New Issue | |
2015-08-14 16:36 | JohnDoe | Note Added: 0013766 | |
2015-10-14 15:09 | vskirdin | Category | Plugins API => _Common |
2015-10-14 19:08 | vskirdin | Note Added: 0013968 | |
2015-10-14 21:21 | 2useven10 | Note Added: 0013969 | |
2015-10-15 06:48 | vskirdin | Note Added: 0013970 | |
2015-10-15 11:16 | 2useven10 | Note Added: 0013972 | |
2015-10-15 11:59 | vskirdin | Note Added: 0013973 | |
2015-10-15 12:16 | 2useven10 | Note Added: 0013974 | |
2015-10-15 12:25 | vskirdin | Note Added: 0013975 | |
2015-10-15 12:54 | vskirdin | Note Edited: 0013975 | |
2015-10-15 13:01 | vskirdin | Note Edited: 0013975 | |
2015-10-15 13:08 | 2useven10 | Note Added: 0013976 | |
2015-10-15 13:09 | 2useven10 | Note Added: 0013977 | |
2015-10-15 13:23 | vskirdin | Note Added: 0013978 | |
2015-10-15 13:40 | 2useven10 | Note Added: 0013979 | |
2015-10-15 13:49 | vskirdin | Note Added: 0013980 | |
2015-10-15 13:49 | vskirdin | Assigned To | => vskirdin |
2015-10-15 13:49 | vskirdin | Status | new => feedback |
2015-10-15 16:40 | DrKnS | Note Added: 0013984 | |
2015-10-16 09:31 | vskirdin | Note Added: 0013985 | |
2015-10-16 10:12 | JohnDoe | Note Added: 0013987 | |
2015-10-16 10:12 | JohnDoe | Status | feedback => assigned |
2015-10-16 10:20 | vskirdin | Note Added: 0013988 | |
2015-10-16 10:27 | JohnDoe | Note Added: 0013989 | |
2015-10-16 10:39 | JohnDoe | Note Added: 0013990 | |
2015-10-16 10:52 | vskirdin | Note Added: 0013991 | |
2015-10-16 11:10 | JohnDoe | Note Added: 0013992 | |
2015-10-16 17:10 | DrKnS | Note Added: 0013993 | |
2015-10-16 19:07 | JohnDoe | Note Added: 0013994 | |
2015-12-22 06:58 | shmuel | Relationship added | related to 0003142 |
2015-12-28 15:33 | 2useven10 | Note Added: 0014180 | |
2015-12-28 16:48 | DrKnS | Note Added: 0014181 | |
2016-01-01 13:15 | DrKnS | Note Added: 0014185 | |
2016-03-23 12:06 | 2useven10 | Build | => 4492 |
2016-03-23 12:06 | 2useven10 | Status | assigned => closed |
2016-03-23 12:06 | 2useven10 | Resolution | open => fixed |
2016-04-19 20:14 | shmuel | Note Added: 0014469 | |
2016-04-19 20:14 | shmuel | Status | closed => feedback |
2016-04-19 20:14 | shmuel | Resolution | fixed => reopened |
2016-04-19 22:52 | 2useven10 | Note Added: 0014472 | |
2016-04-20 05:38 | shmuel | Status | feedback => resolved |
2016-04-20 07:36 | 2useven10 | Build | 4492 => 4627 |
2016-04-20 07:36 | 2useven10 | Status | resolved => closed |
2016-04-20 07:36 | 2useven10 | Resolution | reopened => fixed |