Страница 1 из 1

GTK 1.2 проблемы с переустановкой GtkStyle для ячейки CList

Добавлено: 01 июл 2005, 09:27
lightport
Здравствуйте.

В GTK 1.2 пытаюсь переустановить стиль для ячейки. Цель: фон конкретной ячейки CList`а нужно сменить.

Делаю:

GtkWidget My_Clist; GtkStyle *old_style; GtkStyle *new_style; GdkColor red = "0, 0xFFFF, 0x0000, 0x0000";

My_Clist = gtk_clist_new_with_titles(3, titles);

old_style = gtk_clist_get_cell_style(GTK_CLIST(My_Clist), 1, 1);

new_style = gtk_style_copy(old_style); /*При вставке этой строки выползает ошибка времени выполнения программы: gtkstyle.c: line 371 style != NULL, и чтото типа родительский виджет -> виджет потомок

gtk_new_style->bg[0] = red;

gtk_clist_set_cell_style(GTK_CLIST(MyClist), 1, 1, new_style);

Пытался и использовать разные способы создания Clist`а, непомогло(двигал функцию его создания в разные части программы вплоть до main)

Вопрос: функция gtk_style_copy() нормально стиль ячейки Clist копирует?

В Clist нет функции копирования стиля ячейки.

Пробовал менть GtkStyle структуру ячейки на прямую, ошибка: segmentation fault.

Есть какие мысли?

Добавлено: 02 июл 2005, 00:23
sm
Для того, чтобы изменить фон ячейки, не надо ничего копировать. Только лишь использовать функцию gtk_clist_set_cell_style.
При этом будет изменен фон выделенной ячейки. Изменить фон конкретной невыделенной ячейки кажись (не уверен) нельзя, можно лишь
всю строку целиком - см. функцию gtk_clist_set_background.

Плюс сделай замены:

GtkWidget My_Clist;
на
GtkWidget *My_Clist;

GdkColor red = "0, 0xFFFF, 0x0000, 0x0000";
на
GdkColor red; red.red = 50000; red.green = red.blue = 0;

gtk_new_style->bg[0] = red;
на
new_style->bg[GTK_STATE_NORMAL] = red;