LINUX.ORG.RU

gtk_label_select_region

 ,


0

1

Как правильно использовать функцию gtk_label_select_region? Нужно выделить насколько символов (ну или снять выделение) в «выделяемой» GtkLabel. В моём случае при любых параметрах всегда выделяется весь текст. Пример кода:

//gcc -Wall -o gtk.run gtk.c `pkg-config --cflags --libs gtk+-3.0`

#include <gtk/gtk.h>

static void activate (GtkApplication *app, gpointer user_data)
{
  GtkWidget *window;
  GtkWidget *label;


  window = gtk_application_window_new (app);
  label = gtk_label_new("012345678901234567890123456789");
  gtk_label_set_selectable(GTK_LABEL(label), TRUE);
  gtk_container_add (GTK_CONTAINER (window), label);

  gtk_label_select_region(GTK_LABEL(label), 2, 4);

  gtk_widget_show_all (window);
}



int main (int argc, char **argv)
{
  GtkApplication *app;
  int status;

  app = gtk_application_new ("org.gtk.example", G_APPLICATION_FLAGS_NONE);
  g_signal_connect (app, "activate", G_CALLBACK (activate), NULL);
  status = g_application_run (G_APPLICATION (app), argc, argv);
  g_object_unref (app);

  return status;
}

Поменяйте местами последние два вызова gtk_widget_show_all и gtk_label_select_region в функции activate, чтобы получилось вот так:

  gtk_widget_show_all (window);
  gtk_label_select_region(GTK_LABEL(label), 2, 4);

То есть виджет сначала нужно отобразить, а потом выделить текст. У меня заработало - выделились два символа со второго по четвёртый.

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

И вправду, так работает. Ничего себе, какой умный анон пошёл.

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

по идее, достаточно будет gtk_widget_realize()

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