LINUX.ORG.RU

изменение размеров GtkLabel

 


0

2

может кто сталкивался, и знает, как побороть.

код

#include <gtk/gtk.h>

#define TEXT "Lorem ipsum dolor sit amet, consectetur adipisicing elit, " \
             "sed do eiusmod tempor incididunt ut labore et dolore magna " \
             "aliqua. Ut enim ad minim veniam, quis nostrud exercitation " \
             "ullamco laboris nisi ut aliquip ex ea commodo consequat. " \
             "Duis aute irure dolor in reprehenderit in voluptate velit " \
             "esse cillum dolore eu fugiat nulla pariatur. Excepteur sint " \
             "occaecat cupidatat non proident, sunt in culpa qui officia " \
             "deserunt mollit anim id est laborum."

static void
cb_allocate (GtkWidget *l, GtkAllocation *al, gpointer data)
{
  gtk_widget_set_size_request (l, al->width, -1);
  gtk_widget_queue_draw (l);
}

int
main (int argc, char *argv[])
{
  GtkWidget *w, *l;

  gtk_init (&argc, &argv);

  w = gtk_window_new (GTK_WINDOW_TOPLEVEL);
  gtk_container_set_border_width (GTK_CONTAINER (w), 5);
  g_signal_connect (G_OBJECT (w), "delete-event", gtk_main_quit, NULL);

  l = gtk_label_new (TEXT);
  gtk_label_set_line_wrap (GTK_LABEL (l), TRUE);
  gtk_container_add (GTK_CONTAINER (w), l);
  g_signal_connect (G_OBJECT (l), "size-allocate", G_CALLBACK (cb_allocate), NULL);

  gtk_widget_show_all (w);

  gtk_main ();

  return 0;
}

окно по ширине можно только увеличить. уменьшить нельзя. существуют более-менее элегантные костыли для решения этой проблемы?

★★★★★

теоретически:
1) включить перенос слов wrap_mode = WRAP_WORD
2) использовать textview вместо label в режимер readonly

Такие «портянки» в label выводить - имхо, извращение.

Novator ★★★★★
()
Ответ на: комментарий от Novator

1. wrap включен, и умолчательное поведение как раз перенос по словам.

2. не канает. как вариант, запихать в GtkViewport - это еще можно попробовать.

я не знаю изначально, какого размера и каким образом отформатированный текст укажет пользователь

ananas ★★★★★
() автор топика
Ответ на: комментарий от ananas

как вариант, запихать в GtkViewport - это еще можно попробовать.

та же мерзость

ananas ★★★★★
() автор топика
Ответ на: комментарий от ananas

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

arturpub ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.