Может ли pixbuf, вставленный в текстовый буфер GTK +, быть установлен как «плавающий»? - PullRequest
2 голосов
/ 07 февраля 2011

Я пишу приложение [на самом деле плагин Pidgin], которое вставляет изображение, встроенное в GtkTextBuffer.В настоящее время я добавляю его, используя:

gtk_text_buffer_insert_pixbuf(textBuffer, &iter, pixbuf);

Однако это просто помещает изображение «в линию» с текстом.То, что я ищу, - это что-то похожее на HTML "float".Например, предполагая, что мое изображение примерно в два раза больше строки текста, я в настоящее время получаю это [где X - изображение]

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam gravida

XXXX
XXXX ante in massa dignissim aliquam. Nullam tempus quam luctus eros volutpat laoreet. 

XXXX
XXXX sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.
Mauris semper, nunc quis gravida molestie,

leo neque imperdiet nulla, vel consectetur nisi nisl non metus. Maecenas pharetra
magna nec magna mattis faucibus convallis nibh  

В идеале я хотел бы иметь:

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam gravida

XXXX ante in massa dignissim aliquam. Nullam tempus quam luctus eros volutpat laoreet.
XXXX

XXXX sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.
XXXX Mauris semper, nunc quis gravida molestie,

leo neque imperdiet nulla, vel consectetur nisi nisl non metus. Maecenas pharetra
magna nec magna mattis faucibus convallis nibh 

Обратите внимание, что есть четыре абзаца, где второй и третий имеют изображение в начале.

Возможно ли это?

1 Ответ

4 голосов
/ 07 февраля 2011

Краткий ответ - нет; изображения в TextView просто обрабатываются как символ (который может быть намного больше обычного символа). В смысле HTML нет никакого механизма разметки. (Макет ограничен тем, что может сделать PangoLayout.)

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

  • оставьте поле размера изображения в вашем абзаце
  • добавить обработчик события expose для рисования изображения в окне (см. Примеры с «рамочными окнами», которые, я думаю, где-то в gtk-demo или в документах, но рисуют в главном окне, а не в окнах границ)

Некоторое количество работы, но это, вероятно, сделало бы работу.

...