blob: 9ae103fdf7f1fcca792c5a2f49413ac5b3ccc8f8 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2018 Red Hat and others. All rights reserved.
* The contents of this file are made available under the terms
* of the GNU Lesser General Public License (LGPL) Version 2.1 that
* accompanies this distribution (lgpl-v21.txt). The LGPL is also
* available at http://www.gnu.org/licenses/lgpl.html. If the version
* of the LGPL at http://www.gnu.org is different to the version of
* the LGPL accompanying this distribution and there is any conflict
* between the two license versions, the terms of the LGPL accompanying
* this distribution shall govern.
*
* Contributors:
* Red Hat - initial API and implementation
*******************************************************************************/
/*
* Compile with:
* gcc -o out Bug_534179_Tree_Column_Warning.c `pkg-config --cflags --libs gtk+-3.0`
*
*/
#include <gtk/gtk.h>
enum {
COL_NAME = 0, COL_AGE, NUM_COLS
};
static GtkTreeModel *
create_and_fill_model(void) {
GtkListStore *store;
GtkTreeIter iter;
store = gtk_list_store_new(NUM_COLS, G_TYPE_STRING, G_TYPE_UINT);
/* Append a row and fill in some data */
gtk_list_store_append(store, &iter);
gtk_list_store_set(store, &iter, COL_NAME, "Heinz El-Mann", COL_AGE, 51,
-1);
/* append another row and fill in some data */
gtk_list_store_append(store, &iter);
gtk_list_store_set(store, &iter, COL_NAME, "Jane Doe", COL_AGE, 23, -1);
/* ... and a third row */
gtk_list_store_append(store, &iter);
gtk_list_store_set(store, &iter, COL_NAME, "Joe Bungop", COL_AGE, 91, -1);
return GTK_TREE_MODEL(store);
}
static GtkWidget *
create_view_and_model(void) {
GtkCellRenderer *renderer;
GtkTreeModel *model;
GtkWidget *view;
GtkTreeViewColumn *column;
view = gtk_tree_view_new();
/* --- Column #1 --- */
renderer = gtk_cell_renderer_text_new();
gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(view), -1,
"Column 1", renderer, "text", COL_NAME, NULL);
column = gtk_tree_view_column_new_with_attributes("Column 2", renderer,
NULL);
gtk_tree_view_insert_column(GTK_TREE_VIEW(view), column, 1);
gtk_tree_view_column_set_resizable(column, 1);
/* --- Column #2 --- */
renderer = gtk_cell_renderer_text_new();
gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(view), -1,
"Column 3", renderer, "text", COL_AGE, NULL);
model = create_and_fill_model();
gtk_tree_view_set_model(GTK_TREE_VIEW(view), model);
/* The tree view has acquired its own reference to the
* model, so we can drop ours. That way the model will
* be freed automatically when the tree view is destroyed */
g_object_unref(model);
return view;
}
int main(int argc, char **argv) {
GtkWidget *window;
GtkWidget *view;
gtk_init(&argc, &argv);
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
g_signal_connect(window, "delete_event", gtk_main_quit, NULL); /* dirty */
view = create_view_and_model();
gtk_container_add(GTK_CONTAINER(window), view);
gtk_widget_show_all(window);
gtk_main();
return 0;
}