Прокрутка окна WebKit2.Webkit в GTK+3

Как прокрутить webkit2gtk виджет?

В webkitgtk (Ака. webkit1) вы заверните WebView в ScrolledWindow, так что можете использовать его vadjustment имущество.

За wekit2gtk этот призыв на WebView просто возвращается None и я не вижу другого метода для вызова.

В качестве объяснения я хочу добавить сенсорную поддержку webkit2, Я взломал мой путь в этом, добавив прозрачный слой поверх WebView Виджет ¹, но теперь я обнаруживаю прикосновения, я не могу их использовать.

Release Релиз, который вышел сегодня, устранил необходимость слоя сверху. Тем не менее, у меня есть штрихи, и я ничего не могу с ними сделать.

2 ответа

Решение

Разделение процессов в WebKit2 имеет некоторые преимущества, но также делает многие вещи более сложными. Я полагаю, что прокрутка - одна из тех вещей: это происходит в веб-процессе, потому что полосы прокрутки теперь обрабатываются webkit, а не виджетом Gtk. То же самое относится и к сенсорной обработке: это частично делается в веб-процессе. Карлос Гарсия Кампос написал пост в блоге об использовании WebKitWebExtension, чтобы помочь в этом. Обратите внимание, что дизайн имеет много последствий и для вашего кода: часть кода будет работать в совершенно другом процессе.

Остальная часть ответа не проверена, пожалуйста, рассмотрите это скорее как обоснованное предположение:

Я считаю, что управлять прокруткой можно с помощью DOM API, а точнее DOMDOMWindow.scroll* функции. Сложная часть получает ссылку на DOMDOMWindow - Вам нужно будет реализовать WebExtension который будет работать в веб-процессе и позволит вам получать уведомления, когда WebPage создано. WebPage.get_dom_document() звонок дает вам DOMDocument а также DOMDocument.get_default_view() должен дать вам DOMDOMWindow тебе нужно.

Что касается документации по DOM API, Mozilla, вероятно, является лучшим справочным материалом, чем спартанская документация WebKit-GTK-DOM.

Если бы я делал то, что вы пытаетесь сделать, моей первой остановкой был бы канал #webkitgtk+ IRC на Freenode, чтобы проверить, действительно ли вышеприведенное действительно разумный способ сделать то, что вы хотите...

Вы можете запустить Javascript для прокрутки страницы. C API имеет функцию webkit_web_view_run_javascript() так что вы могли бы кормить его как JavaScript

window.scrollTo(500,0);

и страница должна прокрутиться.

Другие вопросы по тегам