<tagezi>
я думаю что это везде будет переводиться одинаково
<tagezi>
другой вопрос, как это унифицировать
<bormant>
tagezi, повторить свою заунывную песню в N+1-ый раз?
<bormant>
tagezi, краткое содержание: мы ввели msgctx, чтобы каждое вхождение было униальным
<bormant>
*уникальным
<tagezi>
а зачем?
<bormant>
а чтобы можно было Slandard -> Обычный / Обычная / Обычное / Обычно в зависимости от контекста употребления :-)
<bormant>
в английском этой проблемы нет
<bormant>
или Insert в Menubar это Вставка, а на кнопке -- Вставить :-)
<tagezi>
но меню Файл, везде должно быть файл
<bormant>
так вот, когда по уму -- msgctx добавляют в нестандартное употребление по запросу от команды локализации
<kompi>
а меню Инсерт везде Инсерт
<tagezi>
Или ты гденибудь хочешь Документ? :)
<kompi>
tagezi: мне есть что делать
<bormant>
с комментарием, почему оно удостоено такой чести
<kompi>
mikekaganski: а это и есть очередной РЕАЛЬНЫЙ косяк Итало
<kompi>
а когда ему говоришь, что он брешет, как заводной, он обижается и говорит, что мы ничего не понимаем в маркетинге
<tagezi>
kompi: да оставь ты его в покое.. или иди в маркетинг и рули вместе с ним
<kompi>
вместо него //фикс
<mikekaganski>
kompi: ну, мне так не кажется. Если бы от умолчания МС что-то зависело... А так ты предлагаешь некое "полное" отображение, в масштабе которого абсолютно теряется та информация, которую хотят показать
<bormant>
tagezi, про меню File -- ответишь за все 52 языка?
<kompi>
mikekaganski: а какую информацию они хотят показать? Что среди маргинальщины, Либра вперде всей планеты?
<tagezi>
да, меню везде должно быть унифицировано
<mikekaganski>
это не "хитрость". Хитрость была бы, если бы он, например, опустил ОнлиОфис или АОО
<kompi>
это не "хитрость" согласен
<mikekaganski>
kompi: да, что из альтернатив, мы более востребованы
<tagezi>
kompi: ты цель вообще понимаешь этого?
<mikekaganski>
это же именно маркетинг. А у нас маркетинг - когда мы продаём себя тем, кто *уже юзает МСОфис*
<bormant>
tagezi, это очень странное утверждение. Вероятно, понедельничное сужение круглозора :)
<mikekaganski>
так что им не надо рассказывать, какой МСОфис классный - они и так знают
<tagezi>
он не хочет показать что ЛО впереди планеты всей, он хочет привлечь тех кто готов уже на ОпенСоурс
<mikekaganski>
а вот из альтернатив нужно выбирать
<tagezi>
чтобы объединить этих разрозненых
<bormant>
tagezi, Например, MenuBar - File и MenuBar - Insert - File
<bormant>
tagezi, Есть уверенность, что все языки локализации допускают одинаковое слово вместо File в обоих случаях?
<tagezi>
так, ты говоришь про разные случаи
<mikekaganski>
bormant: +100500
<bormant>
tagezi, вот чтобы они стали разными, и был введен msgctx ;)
<tagezi>
да, но у нас куча мест повторов, где это реально одно и тоже
<bormant>
автоматический msgctx сделат все File разными автоматически
<bormant>
*сделал
<tagezi>
так значит можно не стараться сокращать переменные?
<bormant>
то есть, нет ручной работы по отделению уникальных msgctx, есть ручная работа по переводу одного и того же
<tagezi>
я вчера там выпендривался, старался убрать лишнюю строку, а можно было просто воткнуть дубликат и забить?
<bormant>
забей, я переведу. И еще 51 команда переведет
<bormant>
а потом вдруг решат, что регистр нужно было сделать иначе, и мы снова переведем :-)
<bormant>
tagezi, масштаб проблемы на самом деле мог быть много меньше
<bormant>
если для максимального количества одинаковых вхождений сделать одинаковый перевод, то переезды для этих вхождений станут мягше
<bormant>
но это не касается проблемы "косметических" изменений
<mikekaganski>
ой-ё... новый boost... полный ребилд
<tagezi>
а в боковой панели это выглядит вообще по другому
<tagezi>
и получается охренеть как не юзабельно, и на уровне кода, и на уровне интерфейса.. и кроме того, вот 100%, Heading везде переведено одинаково, во всех модулях, где он есть
<bormant>
выделение -- это if (rMark.IsMarked() || rMark.IsMultiMarked())
<bormant>
а интересующая ветка -- эьл удыу Х
<mikekaganski>
да
<tagezi>
да, нечто подобное уже реализовано :)
<bormant>
это else {
<bormant>
и перемещение произойдет. когда if ( nMoveY != 0 && !nMoveX )
<bormant>
кстати, проверку на не-ноль стоило сделать единообразно
<bormant>
if ( nMoveY != 0 && nMoveX !=0 ) или if ( !nMoveY && !nMoveX )
<bormant>
ха, а это условие не всегда ли ложно?
<mikekaganski>
нет, там не такое условие
<bormant>
mikekaganski, eue? db;e
<bormant>
угу, вижу, что-то задумался ;)
<bormant>
if ( nMoveY != 0 && nMoveX ==0 )
<bormant>
либо if ( nMoveY && !nMoveX )
<bormant>
а то глаз спотыкается ;)
<mikekaganski>
можно поглядеть, чего так. Может, какая-нибудь замена после кланговского плагина...
<bormant>
левая часть условия в одном стиле. правая в другом ;)
<bormant>
возвращаясь к энхансменту, вот внутри этого if он и должен попасть в начало, т.е. aViewData.GetTabStartCol() должен вернуть не SC_TABSTART_NONE
<tagezi>
если ячейки для перемешения нет
<tagezi>
да
<bormant>
и вот тут оно и не работает. На простом листе ухожу в конец Ctrl+Right Ctrl+Down Up Enter (есть перемещение в последнюю ячейку) Enter (нет перемещения в начало листа)
<tagezi>
если ты перейдёшь просто в конец столбца, даже первого
<tagezi>
то у тебя тоже не будет перемещаться на соседний столбец в начало
<tagezi>
при нажимании ентера
<bormant>
tagezi, проще всего под отладчиком понять, кто виноват
<tagezi>
так, это ты у нас умеешь всё очень быстро читать, а я очень медленный человек.. я ещё читаю :)
<tagezi>
щас дочту, и включу отладчик :)
<bormant>
tagezi, осталось понять -- это так было задумано, или по ходу дела поломалось :-)
<tagezi>
бесмысленно уже понимать это
<tagezi>
слишком старый баг, это место могло быть переписано десяток раз
<bormant>
он и вправо/влево не перескакивает (если поменяю поведение по Enter на Вправо)
<bormant>
хотя это я на пустом листе пробовал. надо на данных посмотреть
<tagezi>
я вот этого не понимаю.. nMoveY != 0 && !nMoveX
<tagezi>
оно всегда тру
<bormant>
нет
<tagezi>
почему?
<tagezi>
там короткий инт
<bormant>
когда nMoveX не 0, все выражение false
<bormant>
все условие: если (nMoveY не 0 И nMoveX есть 0 )
<bormant>
т.е. -- когда перемещение по вертикали, то
<bormant>
но логика там чуть больная, вероятно, стала такой после каких-то правок:
<bormant>
1356-1370: nMoveX, nMoveY меняются тут, только одна из них не равна 0
<bormant>
1383: это положительная ветка if -- другая ветка
<bormant>
1394: выходит здесь только одна из nMoveX, nMoveY может быть не 0, проверять обе нет смысла
<bormant>
tagezi, зачем сказано про короткий инт? тут размер их не имеет значения && -- логический оператор
<tagezi>
я свич не правильно прочитал
<tagezi>
мне показалось что там не может быть 0 вообще после него
<bormant>
mikekaganski, вероятно, резало только левый глаз ;)
<bormant>
mikekaganski, что там в стайлгайде про сравнения на 0/не 0 сказано, короткие или длинные?
<tagezi>
а при отрицании минус единица это фалс или тру? :)
<bormant>
tagezi, условие выполняетсяя? if (nTabCol != SC_TABSTART_NONE)
<bormant>
а вот ВОПРОС: поведение по End сломали или его тут и не было никогда?
<tagezi>
сломали
<bormant>
я про End, Right; End, Up; End, Left, End, Down
<tagezi>
а не, пашет
<tagezi>
End — Перейти к концу документа. — Выделяет ячейку в текущем листе на пересечении этой строки и последнего столбца, в котором есть заполненные ячейки (сам в шоке).
<bormant>
должно быть эквивалентно: Ctrl+Right; Ctrl+Up; Cnhl+Left; Cnhl+Down
<bormant>
вот только она не знает инициатора перемещения (Tab/Enter или стрелки)
<bormant>
стало быть. не ее это дело, делать wrap через лист
<tagezi>
а туда уже передана следующая позиция, какая ей разница?
<bormant>
не, туда передано на сколько сметиться по горизонтали и вертикали
<bormant>
а куда она придет, будет дальше вычисляться с учетом bSkipPronected, bSkipUnprotected
<bormant>
поэтому, строго говоря, попытки внутри 1394-1405 вычислить относительное смещение без учета поведения MoveCursorRel() заранее обречены на провал ;)
<mikekaganski>
а причём тут идея? это давнишная придумка МС, в софтмейкере её просто реализовали и написали как новшество - в общем-то да, для них новшество, а для нас вообще только идея
* mikekaganski
пришёл-таки в конце к согласию, что таки да, идея
<bormant>
как по мне -- никчемная затея
<mikekaganski>
а это уже вопрос совместимости
<mikekaganski>
мы не умеем читать такие файлы, а значит, ай-яй-яй
<bormant>
ну, то технический аспект, а идея -- аспект эмоциональный ;)
<mikekaganski>
:) а как только реализован технический аспект, ...
<bormant>
так вот сама идея -- никчемная
<bormant>
на мой скромный взгляд
<kompi>
а вы про которую идею?
<bormant>
"Таблицы" внутри Электронных таблиц, ссылка выше
<kompi>
не уловил фишку
<mikekaganski>
чего уж там, идея тупая. Но кто-то продавил её в МС (какой-то очень большой клиент), кому показалось, что оно круто. И теперь есть новый эмнадцатый способ почесать левой пяткой правое ухо.
<tagezi>
а это не способ работы аля со скрытыми названными диапазонами
<tagezi>
?
<bormant>
tagezi, мне тоже показалось именно это
<bormant>
по прочтении статейки
<tagezi>
мне влом вычитывать... это очень похоже на названый диаппазон с элементом вшитого автофильтра и прикрученой сводной таблицы в конец
<tagezi>
очень богатая домохозяйка была
<tagezi>
с защищенными ячейками там очень интересно получается... если выделить диапазон в котором будут включены защищенные ячейки
<tagezi>
то перемещение по диапазонубудет происходить, только очень странно :)
<tagezi>
bormant: короче ты прав, нужно дебажить функцию по всем возможным вариантам с вызовами других функций.. и можно будет востановить, что они там хотели сделать
<tagezi>
и да, спасибо за нахождения места
<bormant>
tagezi, взаимно спасибо за сеанс пошаговой отладки по IRC
<bormant>
;)
<tagezi>
ну, для меня реально нахождения места для старта до сих пор проблема...
<tagezi>
я иногда понимаю даже в чем может быть заморочка, но не могу нати места откуда начать искать
<tagezi>
я уже пару багов таких оставил после пару дней исканий
<bormant>
один способ я сегодня показал -- если есть управляющий интересующим поведением параметр, частелько за него можно вытянуть логику
<tagezi>
да.. а чаще всего его нет :)
<tagezi>
что-то было с таблицами райтера, с выделением кажется
<tagezi>
ладно, порешаю этот баг, он вроде не сложный, и поразбираться мне есть где
<bormant>
tagezi, он СЛОЖНЫЙ, потому как архитектура в том месте кривая. Выбор невелик: переделать правильно или подкинуть костылей :)
<kompi>
tagezi: была трабла, что при выделении таблицы невозможно было форматировать все ячейки, причем выделение только определенным образом и должны быть совмещенные ячейки
<tagezi>
ну.. с деревом был вроде сложенее, там нужно было всё переписывать с нуля и сращивать 5 мест в одно.. тут уже все реализовано, нужно только логику дотянуть до ума
<bormant>
а кривость архитектуры в следующем:
<bormant>
1) про источник перемещения (Tab или Enter) знает только ScTabView::MoveCursorEnter()
<bormant>
2) само относительное перемещение выполняет ScTabView::MoveCursorRel()
<bormant>
3) ScTabView::MoveCursorRel() при перемещении учитывает свойства перемещения по защищенным ячейкам
<bormant>
4) (1) пытается вычислить, на сколько нужно переместиться, чтобы попасть в начало без учета (3)
<bormant>
5) (1) пытается сдеелать wrap только при вертикальном перемещении
<bormant>
отдельный вопрос -- wrap надо сделать на границе листа или на границе, достижимой по End, или на границе области?
<tagezi>
вот самое правивное, что патч примут, если он будет реазделён по этим конкретным штукам :)
<bormant>
(1) и (3) должны работать рука об руку, поэтому, скорее всего, и тут придется кусочек переписать со сращиванием нескольких мест в одно
<kompi>
tagezi: давай, расти уже
<kompi>
статус миддла так просто не дается
<kompi>
bormant: а ты программист по основному роду деятельности?
<tagezi>
я думаю, насамом деле всё тут pDoc->GetNextPos( nNewX,nNewY, nTab, nMoveX,nMoveY, true, false, rMark );
<tagezi>
оно отвечает за новую позицию
kompi has quit [Quit: Page closed]
<tagezi>
а при отсутствии выделения, она не вызывается
<tagezi>
mikekaganski: а как посмотреть историю всех строк в файле включающих выражение?
<tagezi>
log слишком много левого выводит, blame только последнее изменение
<mikekaganski>
да, по последнему изменению, и шагаешь вглубь
<tagezi>
там всего 2 места где есть эта переменная
<mikekaganski>
каждый вызов SetTabStartCol
<tagezi>
эм
<mikekaganski>
причём не только в этом файле
<tagezi>
в каком случае она будет равна не SC_TABSTART_NONE
<mikekaganski>
ScTabView::FindNextUnprot
<mikekaganski>
вот смотри: если вызвать эту функцию для ситуации, когда nTabStartCol равен SC_TABSTART_NONE, то в строке 1503 это значение будет получено, в 1504 проверено, и в 1505 изменено на другое, а потом в 1510 записано в объект
<mikekaganski>
так что после этого значение в объекте уже не будет SC_TABSTART_NONE
<tagezi>
странно.. да, я вижу где по идее оно должно меняться при движении
<tagezi>
ладно, я погоняю разные ситуации, посмотрю значения
JohnDoe_71Rus has quit [Ping timeout: 260 seconds]
JohnDoe_71Rus has joined #libreoffice-ru
bormant has quit [Quit: Leaving]
<tagezi>
чото какие-то варнинги сыпятся workdir/LexTarget/l10ntools/source/cfglex.cxx:3043:17: warning: ‘void yyunput(int, char*)’ defined but not used [-Wunused-function]
<mikekaganski>
ну и ладно :)
<mikekaganski>
это внешние библиотеки, их код мы не всегда можем почистить