Re[15]: Или бага, или sort() от меня чего-то ждет
От: c-smile Канада http://terrainformatica.com
Дата: 04.10.16 03:42
Оценка: 3 (1)
Здравствуйте, Scorpion1105, Вы писали:

S>Здравствуйте, c-smile, Вы писали:


CS>>Вполне может быть. SciterSortElements как native API никому не нужен. Вообще первый раз слышу что его кто-то использует.

CS>>Поэтому и не тестировался по всей видимости ни разу, да и накладно. script DOM тестировать проще гораздо поэтому и работает.

S>У нас, получается, что это legacy от HTMLayout — grid'ы с различными кастомными сортировками.

S>Есть шанс, что найдется время пофиксить?

Я уже починил у себя.

S>P.S. behavior: column-resizer; работает теперь исключительно с <thead>?

S>Вообще, как я понимаю — использование <thead> и <tbody> это правильно и стоит делать только так? По всему проекту таблицы с fixedrows и своими специальными атрибутами, определяющими заголовки — ресайзер на них не работает, да и grid.tis ожидает наличие <tbody> — единственный выход всё переделать на <table><thead>...</thead><tbody>...</tbody></table>?

thead/tbody это way to go.

scrollable tbody это единственный натуральный способ делать scrollable tables.
Re[16]: Или бага, или sort() от меня чего-то ждет
От: Scorpion1105 Россия  
Дата: 10.10.16 18:49
Оценка:
Здравствуйте, c-smile, Вы писали:

CS>thead/tbody это way to go.

CS>scrollable tbody это единственный натуральный способ делать scrollable tables.

Атрибут fixedlayout еще актуален для таблиц? Если да, как он теперь работает? Если нет, чем можно (если нужно) "заменить"?
Относительно fixedrows более менее ясно — это теперь, как я понимаю, чисто behavior-атрибут?

--

Вот такой вопрос еще — ума не приложу, в какую сторону копать... Может по симптомам (см. гифку под катом) удастся хотя бы подсказать, что можно проверить?
  Гиф паразитного ресайза

Суть проблемы: открывается модальный диалог (внутри всё по науке — сообщения отдаются SciterProcND, свой цикл выборки и т.п.), рендерится содержимое, всё в порядке. Но стоит только изменить размер диалога, любое движение мыши "перерендеривает" содержимое с некой фиксированной шириной.
Для body задан стиль body { height:100%%; width:100%%; }
--
&nbsp;
Re[17]: Или бага, или sort() от меня чего-то ждет
От: c-smile Канада http://terrainformatica.com
Дата: 10.10.16 19:01
Оценка:
Здравствуйте, Scorpion1105, Вы писали:

S>Здравствуйте, c-smile, Вы писали:


CS>>thead/tbody это way to go.

CS>>scrollable tbody это единственный натуральный способ делать scrollable tables.

S>Атрибут fixedlayout еще актуален для таблиц? Если да, как он теперь работает? Если нет, чем можно (если нужно) "заменить"?

S>Относительно fixedrows более менее ясно — это теперь, как я понимаю, чисто behavior-атрибут?

<table fixedlayout> актуален.

В CSS :
table { flow:table-fixed; }


S>Суть проблемы: открывается модальный диалог (внутри всё по науке — сообщения отдаются SciterProcND, свой цикл выборки и т.п.), рендерится содержимое, всё в порядке. Но стоит только изменить размер диалога, любое движение мыши "перерендеривает" содержимое с некой фиксированной шириной.

S>Для body задан стиль body { height:100%%; width:100%%; }

А для html элемента какой стиль?
Re[18]: Или бага, или sort() от меня чего-то ждет
От: Scorpion1105 Россия  
Дата: 10.10.16 19:13
Оценка:
Здравствуйте, c-smile, Вы писали:

CS>А для html элемента какой стиль?


Явно габариты никакие не заданы. Инспектор показывает height: 1* и width: 1*
--
&nbsp;
Re[19]: Или бага, или sort() от меня чего-то ждет
От: c-smile Канада http://terrainformatica.com
Дата: 10.10.16 19:44
Оценка:
Здравствуйте, Scorpion1105, Вы писали:

S>Здравствуйте, c-smile, Вы писали:


CS>>А для html элемента какой стиль?


S>Явно габариты никакие не заданы. Инспектор показывает height: 1* и width: 1*


Такое вечатление что где-то указан width:max-content или max-width: max-content. Что-то на эту тему короче.
Без CSS сказать сложно.
Re[20]: Или бага, или sort() от меня чего-то ждет
От: Scorpion1105 Россия  
Дата: 10.10.16 21:21
Оценка:
Здравствуйте, c-smile, Вы писали:

CS>Такое впечатление что где-то указан width:max-content или max-width: max-content. Что-то на эту тему короче.

CS>Без CSS сказать сложно.

Перелопатил все CSS-файлы, max-content оказался только у кнопок, убрал кнопки, эффект остался.
В итоге получился вот такой минимальный пример, на котором проблема воспроизводится у меня (см. гифку под катом):
<html>
  <head>
    <title>Выбор источника сигнала</title>
  </head>

  <body style="height:100%%; width:100%%;">
    <div style="width:100%%; height:100%%; border: solid 1dip red;">
      <p>line</p>
    </div>
    <widget type="checkbox" checked style="margin-top: 4dip;">Скрывать пассивные компоненты</widget>
  </body>
</html>

Пока размер диалога не меняется — всё нормально, как только поменялся получается вот такой эффект (при наведении курсора на виджет):
  Воспроизводимость
--
&nbsp;
Re[21]: Или бага, или sort() от меня чего-то ждет
От: c-smile Канада http://terrainformatica.com
Дата: 10.10.16 22:56
Оценка:
Здравствуйте, Scorpion1105, Вы писали:

На тесте ниже проблема не воспроизводится.

Такое впечатление что у тебя где-то вызов SciterGetMin/MaxWidth/Height() где-то воткнут не по делу.

test.htm:

<html>
  <head>
    <title></title>
    <style></style>
    <script type="text/tiscript">
    
      self.on("click","button", function(){
        view.dialog {
          url: self.url("dlg.htm")
        };
      });
    
    </script>
  </head>
<body>
  <button>dlg.htm</button>
</body>
</html>


dlg.htm:

<html resizeable>
  <head>
    <title>Выбор источника сигнала</title>
  </head>

  <body style="height:100%%; width:100%%;">
    <div style="width:100%%; height:100%%; border: solid 1dip red;">
      <p>line</p>
    </div>
    <widget type="checkbox" checked style="margin-top: 4dip;">Скрывать пассивные компоненты</widget>
  </body>
</html>
Re[22]: Или бага, или sort() от меня чего-то ждет
От: Scorpion1105 Россия  
Дата: 11.10.16 05:55
Оценка:
Здравствуйте, c-smile, Вы писали:

CS>Такое впечатление что у тебя где-то вызов SciterGetMin/MaxWidth/Height() где-то воткнут не по делу.


Воткнут, да. Но казалось бы, что по делу — реакция на WM_GETMINMAXINFO для ограничения минимального размера диалога:
INT_PTR scdialog::on_WM_GETMINMAXINFO(HWND hwndDlg, WPARAM wParam, LPARAM lParam)
{
   RECT rcScreen;
   ::GetWindowRect(hwndDlg, &rcScreen);

   RECT rcClient = rcScreen;
   ::ScreenToClient(hwndDlg, (LPPOINT)&rcClient);
   ::ScreenToClient(hwndDlg, (LPPOINT)&rcClient.right);

   SIZE szBorder = { rcScreen.right - rcScreen.left - rcClient.right,
                     rcScreen.bottom - rcScreen.top - rcClient.bottom };

   auto ctl = self(hwndDlg);

   MINMAXINFO *pInfo = (MINMAXINFO *)lParam;
   POINT Max = ctl->GetMaxDialogSize();
   POINT Min = ctl->GetMinDialogSize();
   Min.x += szBorder.cx;
   Min.y += szBorder.cy;

   pInfo->ptMinTrackSize = Min;
   pInfo->ptMaxTrackSize = Max;

   return 0;
}

SIZE scdialog::GetMinDialogSize()
{
   SIZE sz = { 0, 0 };
   sz.x = ::SciterGetMinWidth(hwnd);
   sz.y = ::SciterGetMinHeight(hwnd, sz.x);
   return sz;
}

Так неправильно?
Как тогда? Сохранить результат и не запрашивать его на каждое сообщение?
И как так получается, что константная, по сути, функция влияет на рендер?

  P.S. Ну и в обработчике WM_INITDIALOG есть, но там-то должно быть точно по делу
   // ...

   SIZE sz;
   sz.cx = ::SciterGetMinWidth(hwndDlg);
   sz.cy = ::SciterGetMinHeight(hwndDlg, sz.cx);

   RECT rc; rc.left = ctl->position.x;
   rc.top = ctl->position.y;
   rc.right = rc.left + sz.cx;
   rc.bottom = rc.top + sz.cy;

   ::AdjustWindowRectEx(&rc,
                        static_cast<DWORD>(GetWindowLongPtr(hwndDlg, GWL_STYLE)), FALSE,
                        static_cast<DWORD>(GetWindowLongPtr(hwndDlg, GWL_EXSTYLE)));

   // ...

P.P.S. Вопрос по инспектору — он совсем не умеет показывать markup для контента, загруженного через SciterLoadHtml? Или можно как-то?
Так получается, что всё показывает — DOM, внешние css, картинки и пр., а саму страницу нет.
--
&nbsp;
Отредактировано 11.10.2016 6:27 Scorpion1105 . Предыдущая версия . Еще …
Отредактировано 11.10.2016 6:20 Scorpion1105 . Предыдущая версия .
Re[23]: Или бага, или sort() от меня чего-то ждет
От: c-smile Канада http://terrainformatica.com
Дата: 11.10.16 16:55
Оценка:
Здравствуйте, Scorpion1105, Вы писали:

S>Здравствуйте, c-smile, Вы писали:


CS>>Такое впечатление что у тебя где-то вызов SciterGetMin/MaxWidth/Height() где-то воткнут не по делу.


S>Воткнут, да. Но казалось бы, что по делу — реакция на WM_GETMINMAXINFO для ограничения минимального размера диалога:


А почему этот код у тебя вызывается по mouse move?
Re[24]: Или бага, или sort() от меня чего-то ждет
От: Scorpion1105 Россия  
Дата: 13.10.16 11:56
Оценка:
Здравствуйте, c-smile, Вы писали:

CS>>>Такое впечатление что у тебя где-то вызов SciterGetMin/MaxWidth/Height() где-то воткнут не по делу.


S>>Воткнут, да. Но казалось бы, что по делу — реакция на WM_GETMINMAXINFO для ограничения минимального размера диалога:


CS>А почему этот код у тебя вызывается по mouse move?


Так в том-то и дело, что не вызывается
Под отладчиком проверил — в SciterGetMinWidth попадаем только при инициализации диалога плюс пару раз в процессе из обработчика WM_GETMINMAXINFO (пока делаются MoveWindow и т.п.).
Дальше, ресайз диалога, опять попадаем в SciterGetMinWidth (через WM_GETMINMAXINFO), отключаю брейк-поинты, заврешается ресайз, включаю обратно.
Как только курсор попадает в область widget / table получается обсуждаемый эффект, но точки останова в SciterGetMinWidth ни разу не срабатывают при этом.
Вот как-то так.

--
Вырезал всякое лишнее из реализации (по факту — это доработка dilaog из HTMLayout SDK), добавил вот эти два файла в plain-win проект.
Вызов:
gui::scdialog dlg (hWnd, WS_SIZEBOX);
dlg.ShowModal(L"res:size_test.htm");


Проблема воспроизводится, можно проверить.

--
Есть workaroud, конечно — к SciterGetMinWidth/Height() единственное обращение делается в on_WM_INITDIALOG, значения запоминаются. В on_WM_GETMINMAXINFO используются сохраненные значения, без обращений к SciterGetMinWidth/Height(), тогда паразитных ресайзов не наблюдается. Тем не менее, не понятно, почему так...

--
S>>Вопрос по инспектору — он совсем не умеет показывать markup для контента, загруженного через SciterLoadHtml? Или можно как-то?
S>>Так получается, что всё показывает — DOM, внешние css, картинки и пр., а саму страницу нет.

И вот этот вот вопрос еще актуален, если не затруднит.
--
&nbsp;
Re[25]: Или бага, или sort() от меня чего-то ждет
От: c-smile Канада http://terrainformatica.com
Дата: 13.10.16 20:54
Оценка: 3 (1)
Здравствуйте, Scorpion1105, Вы писали:

S>Здравствуйте, c-smile, Вы писали:


S>Проблема воспроизводится, можно проверить.



Вот это

   SIZE sz;
   sz.cx = ::SciterGetMinWidth(hwndDlg);
   sz.cy = ::SciterGetMinHeight(hwndDlg, sz.cx);


достаточно тяжелая оперция. В частности этот вот вызов SciterGetMinHeight(hwndDlg, sz.cx);
Фактически делается set_width(new_width) -> relayout -> get_calculated_height(). Т.е. полный relayout содержимого.
Проблема еще в side effect — DOM остается в состоянии new_width layout.
Такое имеет смысл делать только олин раз — после начальной загрузки.

Если же контент динамический (высота зависит от ширины в runtime) то после SciterGetMinHeight нужно "возвращать всё в зад" чтобы восстановить текущий layout:

INT_PTR scdialog::on_WM_GETMINMAXINFO(HWND hwndDlg, WPARAM wParam, LPARAM lParam)
{
   RECT rcClient = rcScreen;

   ...

   auto fsctl = self(hwndDlg);      assert(fsctl);

   MINMAXINFO *pInfo = (MINMAXINFO *)lParam;
   POINT Max = fsctl->GetMaxDialogSize();
   POINT Min = fsctl->GetMinDialogSize();
   Min.x += szBorder.cx;
   Min.y += szBorder.cy;

   pInfo->ptMinTrackSize = Min; // УСТАНОВИЛИ МИНИМАЛЬНЫЙ РАЗМЕР
   pInfo->ptMaxTrackSize = Max; // УСТАНОВИЛИ МАКСИМАЛЬНЫЙ РАЗМЕР

   //!!!!!!!!! Restore current normal layout:

   GetClientRect(hwndDlg,&rcClient);
   BOOL dummy;
   SciterProcND(hwndDlg,WM_SIZE,SIZE_RESTORED,MAKELONG(rcClient.right-rcClient.left,rcClient.bottom-rcClient.top),&dummy);

   return 0;
}


Т.к. WM_GETMINMAXINFO вызывается на каждый чих то SciterGetMinHeight нужно избегать.


S>--

S>Есть workaroud, конечно — к SciterGetMinWidth/Height() единственное обращение делается в on_WM_INITDIALOG, значения запоминаются. В on_WM_GETMINMAXINFO используются сохраненные значения, без обращений к SciterGetMinWidth/Height(), тогда паразитных ресайзов не наблюдается. Тем не менее, не понятно, почему так...

S>--

S>>>Вопрос по инспектору — он совсем не умеет показывать markup для контента, загруженного через SciterLoadHtml? Или можно как-то?
S>>>Так получается, что всё показывает — DOM, внешние css, картинки и пр., а саму страницу нет.

S>И вот этот вот вопрос еще актуален, если не затруднит.


1. в WinMain
// enable debugger/inspector
SciterSetOption(NULL,SCITER_SET_DEBUG_MODE,TRUE);


2. В твоем коде исправить багу — dialog у тебя создается с parent = NULL. А нужно parent окно.

3. (C запущенным inspector) В окне dialog нажать CTRL+SHIFT+I — увидишь свое окно и markup:

Отредактировано 13.10.2016 21:02 c-smile . Предыдущая версия .
Re[26]: Или бага, или sort() от меня чего-то ждет
От: Scorpion1105 Россия  
Дата: 14.10.16 15:57
Оценка:
Здравствуйте, c-smile, Вы писали:

CS>...

CS>Т.к. WM_GETMINMAXINFO вызывается на каждый чих то SciterGetMinHeight нужно избегать.

Большое спасибо за разъяснение!
В подавляющем большинстве случаев контент действительно не динамический (в плане зависимости высоты от ширины), так что от лишней нагрузки избавился. А единичные случаи динамичности можно и отдельно обработать.

--
CS>1. в WinMain
Инспектор активирую для каждого экземпляра отдельно, а не в WinMain — это ведь по сути одно и тоже?
   ctl->setup_callback(hwndDlg);
   sciter::attach_dom_event_handler(hwndDlg, ctl);

   ::SciterSetOption(hwndDlg, SCITER_SET_DEBUG_MODE, TRUE);


CS>2. В твоем коде исправить багу — dialog у тебя создается с parent = NULL. А нужно parent окно.

Перепроверил, вроде в этом плане всё в порядке — parent задается в конструкторе диалога

CS>3. (C запущенным inspector) В окне dialog нажать CTRL+SHIFT+I — увидишь свое окно и markup:

Да, так-то всё работает — инспектор запускается.

Вопрос был немного в другом. Не работает именно вкладка Sources->markup (см. картинку под катом, обведено). И ссылки на стили, объявленные в разделе <style></style> самой html'ки. Все ресурсы (которые через url() заданы), при этом отображаются полностью.
У меня все страницы отдаются в Sciter через SciterLoadHtml(HWINDOW hWndSciter, LPCBYTE html, UINT htmlSize, LPCWSTR baseUrl), а в plain-win, например, через SciterLoadFile(HWINDOW hWndSciter, LPCWSTR filename) — и там вкладка markup показывает саму страницу.
Собственно, вопрос — можно ли добиться отображения исходного кода страницы в инспекторе при её загрузке через SciterLoadHtml?
  вопрос вот про что — Sources->markup
--
&nbsp;
Re[27]: Или бага, или sort() от меня чего-то ждет
От: c-smile Канада http://terrainformatica.com
Дата: 14.10.16 18:07
Оценка: 2 (1)
Здравствуйте, Scorpion1105, Вы писали:

S>Здравствуйте, c-smile, Вы писали:


CS>>1. в WinMain

S>Инспектор активирую для каждого экземпляра отдельно, а не в WinMain — это ведь по сути одно и тоже?

Да.

CS>>2. В твоем коде исправить багу — dialog у тебя создается с parent = NULL. А нужно parent окно.

S>Перепроверил, вроде в этом плане всё в порядке — parent задается в конструкторе диалога

А да, не увидел parent(hWndParent)

CS>>3. (C запущенным inspector) В окне dialog нажать CTRL+SHIFT+I — увидишь свое окно и markup:

S>Да, так-то всё работает — инспектор запускается.

S>Вопрос был немного в другом. Не работает именно вкладка Sources->markup (см. картинку под катом, обведено). И ссылки на стили, объявленные в разделе <style></style> самой html'ки. Все ресурсы (которые через url() заданы), при этом отображаются полностью.

S>У меня все страницы отдаются в Sciter через SciterLoadHtml(HWINDOW hWndSciter, LPCBYTE html, UINT htmlSize, LPCWSTR baseUrl), а в plain-win, например, через SciterLoadFile(HWINDOW hWndSciter, LPCWSTR filename) — и там вкладка markup показывает саму страницу.
S>Собственно, вопрос — можно ли добиться отображения исходного кода страницы в инспекторе при её загрузке через SciterLoadHtml?

Гляну что можно сделать ...

На пока используй SciterLoadFile(hwnd,"res:main.htm",...) и отдавай "res:main.htm" в SC_LOAD_DATA
Re[4]: Не обновляется содержимое тэга <a> без update()
От: Scorpion1105 Россия  
Дата: 09.11.16 16:44
Оценка:
Здравствуйте, c-smile, Вы писали:

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


Обнаружился пример, когда не удается обойтись без явного вызова sciter::dom::element::update() в native коде — подробности с версткой и визуальным эффектом ниже.
Интересно то, что никак не удается его воспроизвести, кроме как в одном месте — переносил и верстку и обработку в plain-win — там всё нормально работает.

Суть: при клике на ссылку (<a name="file_src" href="" title="">Выберите файл</a>) вызывается диалог выбора файла, и имя выбранного файла подставляется в содержимое тэга вместо "Выберите файл".
При инициализации диалога (OnInitDialog()) и при клике по ссылке (handle_event() и событие HYPERLINK_CLICK) отрабатывает один и тот же код, но при инициализации текст ссылки обновляется после выбора, а при клике — нет. Помогает только вызов update() для sciter::dom::element, соответствующего этой ссылке.
Текст менять пробовал всякими способами — set_text(), set_value() и даже set_html() с SIH_REPLACE_CONTENT (в этом случае после клика ссылка вообще пропадает).
Инспектор показывает правильное содержимое, а на странице диалога остается старое (см. гифку ниже).
Замечу, что для заголовков таблиц, например, set_text() отрабатывает нормально без update() элемента (всё рядом, в одном и том же обработчике события).

Вроде бы понимаю, что какой-то side effect к такому поведению приводит (т.к., повторюсь, воспроизвести отдельно нигде не удается), но какой, откуда и на что еще может повлиять — определить не удается.
Вопрос: в какую сторону копать и что можно сделать, чтобы выявить источник "помех"? Может уже были подобные случаи?

  Верстка только заголовка, где локализована проблема
<html>
   <head>
      <style type="text/css">
         a popup
         {
            text-decoration:none;
         }

         .header1
         {
            font-size: 16dip;
         }
         .header_block
         {
            height: 52dip;
            padding-left: 70dip;
            margin: -6dip -10dip 0 -10dip;
            background-color: white white InactiveCaption InactiveCaption;
            foreground: no-repeat top left url('sync_pic_48.png');
            foreground-position-left: 12dip;
         }
      </style>

      <title id="title">Синхронизация</title>
   </head>
   <body style="min-height:600dip; min-width:900dip;">
      <div name="page1" style="height:100%%; width:100%%;">
         <div .header_block/>
         <span .header1><span name="file_choose_help" /><a name="file_src" href="">Выберите файл</a></span><br/>
         <span .header1>Установление соответствий</span>
      </div>
   </body>
</html>

  Визуальный эффект (инициализация -> выбор файла, клик -> выбор файла)

  Код, меняющий текст
sciter::dom::element file_path = root.find_first("[name='%S']", L"file_src");
file_path.set_text(fname.c_str());   // file_path.set_value(fname.c_str());
file_path.set_attribute("title", path);
// file_path.update();
--
&nbsp;
Re[5]: Не обновляется содержимое тэга <a> без update()
От: c-smile Канада http://terrainformatica.com
Дата: 10.11.16 00:52
Оценка:
Здравствуйте, Scorpion1105, Вы писали:

S>Вопрос: в какую сторону копать и что можно сделать, чтобы выявить источник "помех"? Может уже были подобные случаи?


Попробуй исправить html (незакрытый <span>) здесь

    <span .header1><span name="file_choose_help" /><a name="file_src" href="">Выберите файл</a></span><br/>
    <span .header1>Установление соответствий</span>


свисти что получится.

А вообще там все эти spanы лишние. Попробуй упростить.
Re[12]: Первый запуск после компиляции со Sciter
От: Scorpion1105 Россия  
Дата: 05.12.16 17:44
Оценка:
Здравствуйте, c-smile, Вы писали:

CS>Здравствуйте, Scorpion1105, Вы писали:


CS>bgcolor поддержку добавлю в <td>/<th>


CS>

CS>... по стандарту закрывающий тэг необязателен, но Sciter ругается


CS>Sciter тебе warning говорит, но markup отрабатывает по стандарту. Используй <td />.


Андрей, спасибо за добавленную поддержку bgcolor в 3.3.2.12, к слову!

И, видимо, именно с этим связана вот такая штука:


Нашлась просто еще одна копия выбирателя цветов, тэги <td> в нем остались не закрытыми. Sciter на них больше warning'и не выдает, но ведет себя при этом интересно
А что самое печальное, при получении WM_DESTROY SciterProcND виснет на верстке с такими тэгами намертво — долго искал причину, она именно в этом. Инспектор показывает там бесконечность вложенных друг в друга таблиц.

---
В 3.3.3.2 поведение сохраняется (верстку, понятное дело, у себя поправил, но мало ли)
--
&nbsp;
Re[6]: Не обновляется содержимое тэга <a> без update()
От: Scorpion1105 Россия  
Дата: 05.12.16 17:52
Оценка:
Здравствуйте, c-smile, Вы писали:

CS>Попробуй исправить html (незакрытый <span>) здесь


CS>
CS>    <span .header1><span name="file_choose_help" /><a name="file_src" href="">Выберите файл</a></span><br/>
CS>    <span .header1>Установление соответствий</span>
CS>


CS>свисти что получится.


Поправил — нет эффекта, но он в рантайме через get_html() и так с закрытыми тэгами возвращается.
  Вот такой код в рантайме, с подставленными везде строками:
<html>
<head>
  <title>sync header</title>
  <style type="text/css">
    a popup
    {
      text-decoration:none;
    }

    .header1
    {
      font-size: 16dip;
    }
    .header_block
    {
      height: 52dip;
      padding-left: 70dip;
      background-color: white white InactiveCaption InactiveCaption;
      margin: -6dip -10dip 0 -10dip;
      foreground: no-repeat top left url(sciter:copy.png);
      foreground-position-left: 12dip;
    }
  </style>
</head>

<body>
  <div name="page1" style="height:100%%; width:100%%;">
    <div .header_block>
      <div name="frw_headerbar_page1">
        <span .header1>Выбор файла-источника и установление соответствий</span>
        <div style="padding-left:20dip;">
          Выберите дизайн для синхронизации и задайте соответствия компонентов и цепей.
        </div>
      </div>
    </div>
    <span .header1><span name="file_choose_help">Синхронизировать открытый дизайн с </span><a name="file_src" href="" title="link title">Выберите файл</a></span><br/>
    <span .header1>Установление соответствий</span>
  </div>

  <!-- Там дальше еще много кода, не имеющего отношения к проблеме -->
</body>

</html>


CS>А вообще там все эти spanы лишние. Попробуй упростить.

Спаны, по мимо того, что для стилей, еще и для локализации нужны. Ну а вся проблема сконцентрирована, похоже, только тут:
<span .header1><span name="file_choose_help">Синхронизировать открытый дизайн с </span><a name="file_src" href="" title="link title">Выберите файл</a></span>


Поэкспериментировал, выяснилось вот что. set_text() не обновляет контент ссылки при любом родительском элементе со стилем display: inline; (заданным явно или по умолчанию) на месте <span .header1>
Это, кстати, наводит на мысли о сходстве с багой про visible (ну это я так, просто вспомнил).
Заменяю этот span на p, div или пишу <span.header1 style="display: inline-block;"> — визуальное обновление содержимого ссылки происходит в штатном режиме.

И вот еще какой момент — в 3.3.2.13 что-то с инспектором случилось. Для приведенного выше html получается вот такая картинка (в сравнении с 3.3.2.12) — не отображается стиль для <div .header_block>:

P.S. А инспектор span'ы не подсвечивает by design? И про получение markup
Автор: c-smile
Дата: 14.10.16
, случаем, ничего еще не придумалось?


---
В 3.3.3.2 ситуация с set_text() и update() осталась как описано выше.

С инспектором исправилось, но пропало указание на свойство background-gradient:
--
&nbsp;
Re[7]: Не обновляется содержимое тэга <a> без update()
От: c-smile Канада http://terrainformatica.com
Дата: 06.12.16 02:31
Оценка:
Здравствуйте, Scorpion1105, Вы писали:

S>Поправил — нет эффекта, но он в рантайме через get_html() и так с закрытыми тэгами возвращается.


S>Поэкспериментировал, выяснилось вот что. set_text() не обновляет контент ссылки при любом родительском элементе со стилем display: inline; (заданным явно или по умолчанию) на месте <span .header1>

S>Это, кстати, наводит на мысли о сходстве с багой про visible (ну это я так, просто вспомнил).
S>Заменяю этот span на p, div или пишу <span.header1 style="display: inline-block;"> — визуальное обновление содержимого ссылки происходит в штатном режиме.

Добавил вот такой код:

 <script type="text/tiscript">
      
     $(#test) << event click {
       $(a[name="file_src"]).text = "Woo-hoo!";
     }
 </script>


проблемы не вижу. Скорее всего там в update queue что-то еще наличествует. Попробуй оставить только операцию установки этого текста.

S>P.S. А инспектор span'ы не подсвечивает by design?


Да. span не имеет box.

S>И про получение markup
Автор: c-smile
Дата: 14.10.16
, случаем, ничего еще не придумалось?


SciterLoadHtml просит url, что даете?
Re[8]: Не обновляется содержимое тэга <a> без update()
От: Scorpion1105 Россия  
Дата: 07.12.16 22:13
Оценка:
Здравствуйте, c-smile, Вы писали:

CS>проблемы не вижу. Скорее всего там в update queue что-то еще наличествует. Попробуй оставить только операцию установки этого текста.


Такс, действительно, если все операции убрать, обновление происходит нормально.
Выискал конкретные 2 операции, которые заставляют его поломаться, ниже дополненный html
  Html c локализацией причин
<html>
<head>
  <title>sync header</title>
</head>

<body>
  <div name="page1" style="height:100%%; width:100%%;">
    <div .header_block>
      <div name="frw_headerbar_page1">
        <span .header1>Выбор файла-источника и установление соответствий</span>
        <div style="padding-left:20dip;">
          Выберите дизайн для синхронизации и задайте соответствия компонентов и цепей.
        </div>
      </div>
    </div>
    <span .header1><span name="file_choose_help">Синхронизировать открытый дизайн с </span><a name="file_src" href="" title="link title">Выберите файл</a></span><br/>
    <span .header1>Установление соответствий</span>

    <!-- ДОБАВЛЕННЫЙ КУСОК -->
    <div style="margin-left:5dip;">
       <table>
          <tr .info_cong type="none">
             <td>Соответствия компонентов:</td>
             <td><span name="count_comp" /> из <span name="count_max_comp" />&nbsp;<span warning="">(требуется контроль, возможно наличие ошибок)</span></td>
          </tr>
          <tr .info_cong type="none">
             <td>Соответствия цепей:</td>
             <td><span name="count_net" /> из <span name="count_max_net" />&nbsp;<span warning="">(требуется контроль, возможно наличие ошибок)</span></td>
          </tr>
       </table>
    </div>
    <!-- ДОБАВЛЕННЫЙ КУСОК -->

  </div>

  <!-- ... -->
</body>
</html>

И вот эти самые операции (помимо этих еще куча всего — заполнение таблиц, заполнение аналогичного блока "count_net", но влияют исключительно они (если убрать — текст ссылки обновляется):
sciter::dom::element count = root.find_first("[name='%S']", L"count_comp");
count.set_text( /* LPCWSTR строка */ );

sciter::dom::element tr = count.find_nearest_parent("tr");
tr.set_attribute("type", /* LPCWSTR строка */ );


S>>И про получение markup
Автор: c-smile
Дата: 14.10.16
, случаем, ничего еще не придумалось?

CS>SciterLoadHtml просит url, что даете?
Например (с использованием sciter::host), вот так (или как в диалоге, код которого я приводил целиком):
   // ЗАГРУЗИТЬ ВСТРАИВАЕМЫЙ HTML ФАЙЛ (ИЗ РЕСУРСОВ) В ПАНЕЛЬ
   LPCBYTE pb = nullptr; UINT cb = 0;
   if ( !load_resource_data(html_resource(), pb, cb) )    // СТРОКОВЫЙ РЕСУРС
   {
      if ( !html_resource_id() ||                         // ИЛИ ЧИСЛОВОЙ
           !sciter::load_html_resource(get_resource_instance(),
                                       html_resource_id(), pb, cb) )
         return -1;
   }

   static const LPCWSTR sBaseUri = L"res:";
   std::wstring uriBase = sBaseUri;
   if ( html_resource() ) uriBase += html_resource();

   if ( !load_html(pb, cb, uriBase.c_str()) )   // <== зовёт SciterLoadHtml
      return -1;
--
&nbsp;
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.