GtkScrolledWindow + WebkitWebView Scrolling - PullRequest
       6

GtkScrolledWindow + WebkitWebView Scrolling

1 голос
/ 21 августа 2010

Привет, я пытаюсь создать GTK IRC-клиент, который использует webkit для отображения своих сообщений.

Веб-просмотр находится в ScrolledWindow, и я хочу, чтобы окно прокрутки прокручивалось до самого дна каждый раз, когда оно становится слишком большим.

Я пытался изменить значение настройки окна прокрутки, когда сообщениедобавил, но это, похоже, не работает вообще.По какой-то причине он продолжает сбрасывать его до 0.

Кто-нибудь знает, как я могу решить эту проблему?

Приветствия!

1 Ответ

2 голосов
/ 25 февраля 2011

У меня была такая же проблема. Я полагаю, что проблема вызвана тем, что сигналы adjustment-changed и adjustment-value-changed не всегда отправляются после того, как окно полностью перерисовалось. Это приводит к тому, что значение корректировки становится равным нулю, поскольку на этой странице нет содержимого. Решение состоит в том, чтобы вместо этого подключиться к сигналу size-allocate . Он вызывается только тогда, когда окно полностью завершило изменение размера, и имеет дополнительное преимущество - он не вызывается, когда пользователь прокручивает окно вручную.

Вот пример использования привязок Python:

def autoscroll_view(view, allocation):
    #parent is the gtk.ScrolledWindow that needs updating
    parent = view.get_parent()
    adj = parent.get_vadjustment()
    adj.value = adj.upper - adj.page_size
    parent.set_vadjustment(adj)


view = webkit.WebView()

window = gtk.ScrolledWindow()
window.add(view)

view.connect('size-allocate', autoscroll_view)
...