рисунок выше gtkentry с использованием Каира - PullRequest
1 голос
/ 23 мая 2010

Я хочу использовать cairo для улучшения внешнего вида gtkentry. Для этого я подключил обратный вызов к «expose-event». В обратном вызове я вызываю оригинальный обработчик событий expose-gtkentry. После этого я создаю каирский контекст, рисую несколько линий и уничтожаю каирский. Я возвращаю «TRUE» в качестве возвращаемого значения функции обратного вызова, чтобы expose-event не распространялся.

Теперь моя проблема в том, что я рисую линию от (0,0) до (100,100). Но линия появляется только через границы областей gtkentry. Место, где находится текст, не появляется.

Пожалуйста, помогите.

С уважением -Дургеш О Мишра

1 Ответ

1 голос
/ 23 мая 2010

GtkEntry использует дополнительный GdkWindow для текстовой области. Это своего рода приват, но вы можете получить к нему доступ, используя следующий код:

GDK_WINDOW (gdk_window_peek_children (GTK_WIDGET (entry)->window)->data);

Итак, вы можете передать это окно gdk_cairo_create().

Если у вас есть проблемы с применением этого к вашему коду, вставьте код - трудно догадаться, что делать, не имея никакого способа тестирования.

...