Hi
the graphical debian installer makes use uf GTKDFB 2.0.9: i noticed that
the gtk_tree_view_scroll_to_cell() fails to scroll to the desired cell
when run under with GTKDFB 2.0.9.
This same problem does not show up under GTKDFB 2.8.3 nor GTKX (any
version).
Above an example part of code from the debian-installer: if you test
this under GTKDFB 2.0.9 you'll see that the "Two" receives not focus.
Could this be a bug in GTKDFB 2.0.9 ?
ciao
attilio
/*
* Compile with:
* gcc -o gtktreeview3 gtktreeview3.c `pkg-config --cflags --libs
gtk+-2.0`
*
*/
#include <gtk/gtk.h>
GtkTreeModel *model;
GtkTreeStore *store;
GtkTreeIter iter, child;
GtkWidget *view;
GtkCellRenderer *renderer;
GtkTreeIter *iter_selected;
enum
{
COL_NAME = 0,
NUM_COLS
} ;
gboolean view_selection_func (GtkTreeSelection *selection, GtkTreeModel
*model, GtkTreePath *path, gboolean
path_currently_selected, gpointer userdata)
{
GtkTreeIter iter;
if (gtk_tree_model_get_iter(model, &iter, path))
{
gchar *name;
gtk_tree_model_get(model, &iter, COL_NAME, &name, -1);
if (!path_currently_selected)
{
g_print ("%s is going to be selected.\n", name);
}
else
{
g_print ("%s is going to be unselected.\n", name);
}
g_free(name);
}
return TRUE; /* allow selection state to change */
}
void set_window_properties(GtkWidget *window)
{
gtk_widget_set_size_request (window, 800, 200);
gtk_window_set_resizable (GTK_WINDOW (window), TRUE);
gtk_window_set_position (GTK_WINDOW (window), GTK_WIN_POS_CENTER);
gtk_window_set_decorated (GTK_WINDOW (window), TRUE);
}
int main (int argc, char **argv)
{
GtkWidget *window;
GtkWidget *view, *scroll;
GtkWidget *frame, *label;
GtkWidget *hbox, *vbox;
GtkTreeSelection *selection;
GtkTreePath *path_selected;
gtk_init (&argc, &argv);
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
set_window_properties( window);
g_signal_connect (window, "delete_event", gtk_main_quit, NULL); /* dirty */
view = gtk_tree_view_new ();
gtk_tree_view_set_headers_visible ( GTK_TREE_VIEW (view), FALSE);
vbox = gtk_vbox_new (FALSE, 10);
scroll = gtk_scrolled_window_new(NULL, NULL);
gtk_container_add(GTK_CONTAINER(scroll), view);
gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW (scroll),
GTK_POLICY_NEVER, GTK_POLICY_ALWAYS);
gtk_box_pack_start(GTK_BOX (vbox), scroll, TRUE, TRUE, 20);
hbox = gtk_hbox_new (FALSE, 10);
gtk_box_pack_start(GTK_BOX (hbox), vbox, TRUE, TRUE, 20);
gtk_container_add(GTK_CONTAINER(window), hbox);
renderer = gtk_cell_renderer_text_new ();
gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (view), -1,
NULL, renderer, "text", COL_NAME, NULL);
store = gtk_tree_store_new (NUM_COLS, G_TYPE_STRING, G_TYPE_UINT);
model = GTK_TREE_MODEL( store );
gtk_tree_view_set_model (GTK_TREE_VIEW (view), model);
selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(view));
gtk_tree_selection_set_select_function(selection, view_selection_func,
NULL, NULL);
/* Append a row and fill in some data */
gtk_tree_store_append (store, &iter, NULL);
gtk_tree_store_set (store, &iter,
COL_NAME, "Heinz El-Mann",
-1);
/* append another row and fill in some data */
gtk_tree_store_append (store, &iter, NULL);
gtk_tree_store_set (store, &iter,
COL_NAME, "Jane Doe",
-1);
/*
gtk_tree_store_append (store, &child, &iter);
gtk_tree_store_set (store, &child,
COL_NAME, "Joe Bungop",
-1);
*/
gtk_tree_store_append (store, &iter, NULL);
gtk_tree_store_set (store, &iter,
COL_NAME, "Myself",
-1);
gtk_tree_store_append (store, &iter, NULL);
gtk_tree_store_set (store, &iter,
COL_NAME, "Animals",
-1);
gtk_tree_store_append (store, &child, &iter);
gtk_tree_store_set (store, &child,
COL_NAME, "Dog",
-1);
gtk_tree_store_append (store, &child, &iter);
gtk_tree_store_set (store, &child,
COL_NAME, "Cat",
-1);
gtk_tree_store_append (store, &iter, NULL);
gtk_tree_store_set (store, &iter,
COL_NAME, "Things",
-1);
gtk_tree_store_append (store, &child, &iter);
gtk_tree_store_set (store, &child,
COL_NAME, "Rock",
-1);
gtk_tree_store_append (store, &child, &iter);
gtk_tree_store_set (store, &child,
COL_NAME, "Tree",
-1);
gtk_tree_store_append (store, &iter, NULL);
gtk_tree_store_set (store, &iter,
COL_NAME, "Numbers",
-1);
gtk_tree_store_append (store, &child, &iter);
gtk_tree_store_set (store, &child,
COL_NAME, "One",
-1);
gtk_tree_store_append (store, &child, &iter);
gtk_tree_store_set (store, &child,
COL_NAME, "Two",
-1);
gtk_tree_view_expand_row (GTK_TREE_VIEW(view),
gtk_tree_model_get_path(model,&iter), TRUE);
gtk_tree_view_scroll_to_cell (GTK_TREE_VIEW(view),
gtk_tree_model_get_path(model,&child), NULL, FALSE, 0, 0);
gtk_tree_selection_select_iter (selection, &child );
gtk_tree_store_append (store, &child, &iter);
gtk_tree_store_set (store, &child,
COL_NAME, "Three",
-1);
g_object_unref (model); /* destroy model automatically with view */
gtk_widget_show_all (window);
gtk_main ();
return 0;
}
_______________________________________________
directfb-dev mailing list
[email protected]
http://mail.directfb.org/cgi-bin/mailman/listinfo/directfb-dev