Re[3]: Миграция с HTMLayout на Sciter 3
От: c-smile Канада http://terrainformatica.com
Дата: 29.07.16 19:05
Оценка: 2 (1)
Здравствуйте, Scorpion1105, Вы писали:

CS>>Ничего этого не требуется. Даже если используется несколько GUI потоков.


S>Не требуется — в смысле, что не нужно адаптировать? Или же, что gui_task'и можно теперь выполнять, не дожидаясь попадания в цикл выборки сообщений?

S>P.S. А вообще, то ли я совсем сам себя запутал, то ли старый queue и новый gui_thread_ctx — суть абслоютно разные вещи и для разных целей, а аналога queue теперь просто нет.

htmlayout::queue это сугубо multithreading feature. Нужно было например когда из рабочих потоков (worker threads) нужно было что-то сделать в UI.

Если код исполняется нормальным образом из GUI потока то этого всего не нужно было и в HTMLayout.

В Sciter это вообще всё не нужно — весь API thread safe.

В принциае sciter-x-threads.h header можно из SDK убрать — это уже legacy.

S>---

S>Появился еще один вопрос. Будет уже, получается, пунктом 5.

S>5. Есть ли полные аналоги (или полный охват хотя бы) для флагов UPDATE_ELEMENT_FLAGS. С REDRAW_NOW понятно — использовать update(true), но по коду активно используются еще, например, RESET_STYLE_THIS. А без варианта el.update(MEASURE_DEEP | REDRAW_NOW) в одном месте так вообще ничего сделать не могли, код переписывался раз с десяток и в итоге пришли к варианту вот с таким комментарием:

S>
S>         /* При изменении содержимого секции с большой долей вероятности
S>            меняется её размер. В некоторых случаях (после работы
S>            автопроцедур, например) при отсутствии активности мыши обычный
S>            update с параметром типа bool не давал должного результата.
S>            Поэтому теперь используется update с принудительной моментальной
S>            перерисовкой и пересчетом размера элемента. */
S>         el.update(MEASURE_DEEP | REDRAW_NOW);
S>

S>SciterUpdateElement(el, TRUE), насколько я понимаю, не будет ничем отличаться от el.update(true) (если в реализации, конечно, ничего нового не появилось) — для каких флагов тогда имеет смысл дергать напрямую SciterUpdateWindow(), чтобы сохранить поведение? Для всех кроме REDRAW_NOW?

На самом деле SciterUpdateElement и Element.update() это уже анахронизм — не используется в общем случае — просто вызывай методы API и Element — engine разберется. В HTMLayout с этим были проблемы поэтому эти подпорки нужны были.

SciterUpdateWindow() и view.update() используются редко но бывают нужны в определенных случаях.

Например когда после изменений DOM нужно сразу узнать позицию и размещение элемента. Но всё равно лучше исполнять код требующий знания позиции в обработчике Element.onSize.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.