Написал простую программу в главном окне которой расположена кнопка и статусбар. Фон главного окна устанавливаю в красный цвет при помощи функции gtk_widget_override_background_color, вместе с фоном статусбар становится тоже красный, а кнопка имеет свой стандартный вид. Почему статусбар закрашивается в цвет фона окна, а кнопка нет?
Если посмотреть описание по функции gtk_widget_override_background_color с сайта разработчиков, то там написана что данная функция не затрагивает стили других виджетов. Вот ссылка на описание:
#include <gtk/gtk.h>
void set_status(GtkWidget *widget, gpointer window)
{
gchar *str = "OK...";
gtk_statusbar_push(GTK_STATUSBAR(window), gtk_statusbar_get_context_id(GTK_STATUSBAR(window), str), str);
}
int main(int argc, char **argv) {
GtkWidget *window = NULL;
GtkWidget *vbox = NULL;
GtkWidget *statusbar = NULL;
gchar *str = "Ready...";
GtkWidget *button = NULL;
gtk_init(&argc, &argv);
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
gtk_window_set_default_size(GTK_WINDOW(window), 200, 200);
gtk_window_set_title(GTK_WINDOW(window), "MyProject");
g_signal_connect(window, "destroy", G_CALLBACK(gtk_main_quit), NULL);
GdkRGBA color = {1.0, .0, .0, 1.0};
vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);
gtk_container_add(GTK_CONTAINER(window), vbox);
button = gtk_button_new_with_label("OK...");
gtk_box_pack_start(GTK_BOX(vbox), button, FALSE, TRUE, 1);
statusbar = gtk_statusbar_new();
gtk_box_pack_end(GTK_BOX(vbox), statusbar, FALSE, TRUE, 1);
gtk_statusbar_push(GTK_STATUSBAR(statusbar), gtk_statusbar_get_context_id(GTK_STATUSBAR(statusbar), str), str);
gtk_widget_override_background_color(window, GTK_STATE_FLAG_NORMAL, &color);
g_signal_connect(button, "clicked", G_CALLBACK(set_status), statusbar);
gtk_widget_show_all(window);
gtk_main();
return 0;
}