- Сообщения
- 93
- Реакции
- 1
Всем привет. Наткнулся на очень не приятную багу в IDS CS 6 (и IDS CС). По какому то стечению обстоятельств, я не всегда корректно могу определить находится ли текстовый блок в overflow. Возникает 2 ситуации:
1) Текстовый блок уходит в overflow, но у родительского блока это значение равно false. Так же если у дочернего блока проверить свойство isValid, то он валиден. Хотя это совершенно не так. На этот случай, я написал свою проверку на overflows, суть которой заключается в том, что мы проверяем geometricBounds[2] координаты. Если у дочернего блока она ниже, значит он ушел за пределы родительского. Код.
2) Текстовый блок уходит в overflow, у родительского блока это значение равно true. Также дочерний текстовый блок становится не валидным. Хотя, он умещается и более того, в родительском блоке есть еще место для в вставки еще одного такого блока. (см. прикрепленную картинку). Хотя такие ситуации и ранее возникали, но я их решал следующим образом. Я увеличивал высоту родительского блока на небольшое значение, а потом возвращал ее к первоначальному значению. И это работало(работает), но не всегда.
Самое что интересное. Перед тем как сделать проверку на overflows, я сохраняю документ, и о чудо, все отрабатывает нормально, баги нет. Шта? Вообще не понимаю почему так происходит. Скорее всего при сохранении документа, в IDS что то ресетится (или еще что то).
Вопрос, как можно добиться такого же результата, как и при сохранении документа, только не сохраняя его?
Ссылка с примером документа, бага на 5 странице. http://yadi.sk/d/SeXcl1iPMAGBp
Спасибо за внимание!
1) Текстовый блок уходит в overflow, но у родительского блока это значение равно false. Так же если у дочернего блока проверить свойство isValid, то он валиден. Хотя это совершенно не так. На этот случай, я написал свою проверку на overflows, суть которой заключается в том, что мы проверяем geometricBounds[2] координаты. Если у дочернего блока она ниже, значит он ушел за пределы родительского. Код.
Код:
function customOverflows(layout_, templ_){
var overflows = false;
try{
overflows = templ_.geometricBounds[2] > layout_.geometricBounds[2];
}catch(e){
overflows = true;
}
}
return overflows;
}
2) Текстовый блок уходит в overflow, у родительского блока это значение равно true. Также дочерний текстовый блок становится не валидным. Хотя, он умещается и более того, в родительском блоке есть еще место для в вставки еще одного такого блока. (см. прикрепленную картинку). Хотя такие ситуации и ранее возникали, но я их решал следующим образом. Я увеличивал высоту родительского блока на небольшое значение, а потом возвращал ее к первоначальному значению. И это работало(работает), но не всегда.
Самое что интересное. Перед тем как сделать проверку на overflows, я сохраняю документ, и о чудо, все отрабатывает нормально, баги нет. Шта? Вообще не понимаю почему так происходит. Скорее всего при сохранении документа, в IDS что то ресетится (или еще что то).
Вопрос, как можно добиться такого же результата, как и при сохранении документа, только не сохраняя его?
Ссылка с примером документа, бага на 5 странице. http://yadi.sk/d/SeXcl1iPMAGBp
Спасибо за внимание!