Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: NOX86 от Февраля 26, 2010, 18:05



Название: Bug в QWebView::setPage()? [РЕШЕНО]
Отправлено: NOX86 от Февраля 26, 2010, 18:05
Баг ли это и как с ним бороться?
В аттаче маленькая программа воспроизводящая непонятное поведение.

Компилируем, запускаем
Кликаем на "Page 1" кнопку,
 затем на "Page 2" кнопку
 затем на "Page 1" кнопку
пробуем что либо сделать (нп. проскролить вниз, кликнуть) - страница обновиться только лишь в случае потери фокуса или переключения между "Page 1" <-> "Page 2"

Windows XP SP3, qt 4.6.1 (2), MS compiller (with QtCreator 1.31)


Название: Re: Bug в QWebView::setPage()?
Отправлено: sendevent от Февраля 26, 2010, 18:41
...страница обновиться только лишь в случае потери фокуса или переключения между "Page 1" <-> "Page 2"

Windows XP SP3, qt 4.6.1 (2), MS compiller (with QtCreator 1.31)
в примере перерисовка происходит сразу по нажатию юбатонов, но и после "обновления" нету нормального взаимодействия с пользователем (не меняется курсор, не актуализируются скроллы, не меняется текст селекшн и т.п.).
http://www.prog.org.ru/topic_11500_0.html
видимо, баг.


Название: Re: Bug в QWebView::setPage()?
Отправлено: NOX86 от Февраля 26, 2010, 18:55
разберись с парентами. Имхо должно работать, если обе веб пейдж будут без парента (тк в доке написано что QWebView::setPage не меняет парента - для чего-то это сделано...)
К сожалению мне такое поведение не подходит.
 А сделано это потому что если для QWebPage родителем установлен текущий QWebView, то при очередном вызове QWebView::setPage() старая страница удалиться см. исходники (http://gitorious.org/qtwebkit/qtwebkit-starlight-integration/blobs/d4bf8ec64d7863deb8f1b274b698f0ff82786260/WebKit/qt/Api/qwebview.cpp#line198).
 С родителями порядок - пробывал временно устанавливать QWebPage::setParent() на QWebView - эффект тот же.
Пытался курить исходники Qt - вроде всё пучком. Есть у кого какие идеи как исправить эту фигню.


Название: Re: Bug в QWebView::setPage()?
Отправлено: sendevent от Февраля 26, 2010, 19:30
да-да-да. после ковыряний там же получил тот же результат: вроде, все ок, но как решить проблему без костылей - не понятно :)
приемлемым поведение было бы, если б после возврата страницы из "view предпросмотра" в "оригинальое view" возвращалось бы нормальное взаимодействие с пользователем, но т.к. этого нету - поведение нифига не приемлемое.
(мне пришлось использовать не отдельную вьюшку для предпросмотра, а передавать "оригинальную" и вручную управлять ее доступностью и пр.)


Название: Re: Bug в QWebView::setPage()?
Отправлено: NOX86 от Марта 06, 2010, 04:07
Проблема (https://bugs.webkit.org/show_bug.cgi?id=35106) принята к рассмотрению.
"I can reproduce it with trunk. This is a low priority bug." Benjamin Poulain