Re: TreeView/ListStore reordering by DND



On Sat, 2014-03-01 at 23:46 +0100, Nicola Fontana wrote:
First question:
When I exchange rows by drag and drop, I get

value = (null)

similar to my test from Ruby yesterday. Is this intended, or is my
code
wrong (I have not much practice with using GTK from plain C...)

Hi,

this is intended behavior. The problem is the insertion is done in two
steps: (1) an empty row is created (and your on_row_inserted()
callback
is called) and (2) that row is filled with data.

Thank you for that information -- now I know at least that I am doing it
not the wrong way.

I have just added a callback for the "row_changed" signal. That signal
is emitted straight after the "row_inserted" signal and in the
signal-handler for "row_changed" signal I get a correct value.

void on_row_changed(GtkTreeModel *tree_model, GtkTreePath *path,
GtkTreeIter *iter, gpointer user_data)
{
  char *value;
  printf("row_changed\n");
  gtk_tree_model_get(tree_model, iter, LIST_ITEM, &value, -1);
  g_printf("value = %s\n", value);
  gint *i = gtk_tree_path_get_indices(path);
  g_printf("row cha = %d\n", i[0]);
}
  g_signal_connect(store, "row_changed", 
      G_CALLBACK(on_row_changed), NULL);

Now I get output like

row_inserted
value = (null)
row ins = 4
row_changed
value = Capote
row cha = 4
row_deleted
row del = 1

which indicates a sequence insert-change-delete.
At least I am understanding now what is going on and I should be able to
use it in that way in my application.

Thanks,

Stefan Salewski





[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]