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

Reply via email to