Перемещение каретки в webkit-gtk

С параметром «enable-caret-browsing», установленным в WebkitWebView, возможно ли программно перемещать курсор относительно строк текста, когда они появляются на экране? Например, переместитесь в конец визуальной строки, а не в конец узла DOM.

Это поведение доступно через навигацию с клавиатуры (например, клавиша End переходит в конец визуальной строки), но в API ничего для этого найти не удалось.


person Nicholas Bishop    schedule 18.10.2012    source источник


Ответы (1)


Возможно, попробуйте испустить сигнал move-cursor?

gboolean result;
g_signal_emit_by_name(view, "move-cursor", GTK_MOVEMENT_DISPLAY_LINE_ENDS, +1, &result);

Мне любопытно, работает ли это.

person ptomato    schedule 18.10.2012
comment
Это дает утверждение: CRITICAL *: gboolean webkit_web_view_real_move_cursor (WebKitWebView, GtkMovementStep, gint): assertion `step == GTK_MOVEMENT_VISUAL_POSITIONS || step == GTK_MOVEMENT_DISPLAY_LINES || step == GTK_MOVEMENT_PAGES || step == GTK_MOVEMENT_BUFFER_ENDS 'не удалось. Интересно, что изменение его на использование GTK_MOVEMENT_DISPLAY_LINES прокручивает страницу вниз, а не перемещает курсор. - person Nicholas Bishop; 20.10.2012
comment
Хм, похоже, они еще не реализовали GTK_MOVEMENT_DISPLAY_LINE_ENDS. Возможно, загляните в исходники Webkit-GTK, чтобы узнать, что происходит? - person ptomato; 20.10.2012
comment
Я сделал это, и функция, связанная с перемещением курсора, действительно, похоже, выполняет только прокрутку. То, что я еще не смог найти, - это то, где нажатие клавиш движения (клавиши со стрелками, начало / конец и т. Д.) Перемещает курсор, когда включен enable-caret-browsing. - person Nicholas Bishop; 20.10.2012
comment
Согласен, сложно узнать где это. Я дошел до WebCore/platform/gtk/GtkInputMethodFilter.cpp, но не стал мудрее. Может быть, спросите в списке рассылки разработчиков WebKit? - person ptomato; 20.10.2012