On 07-07-2018 11:00, Eduardo M KALINOWSKI wrote:
> On 05-07-2018 11:02, Eduardo M KALINOWSKI wrote:
>> Consider the sample attached: it builds a tree model with an item that
>> has child items, and uses that model in a ComboBox.
>>
>> When compiled with Gtk2, when the item with children is selected and
>> its children displayed, and extra item representing the parent is
>> added to the top, allowing the parent to be selected. The attached
>> image should make that clearer.
>>
>> However, compiled with Gtk3, that item that allows selection of the
>> parent is missing, as the other image shows.
>>
>> So how does one select "Item with children", using the mouse, under
>> Gtk3? The item can be selected using the keyboard, but apparently with
>> the mouse. Is there a way to get the Gtk2 behaviour back with Gtk3?
> The attachments didn't make it, so here's the code:
>
> ----
> #include <gtk/gtk.h>
>
> GtkTreeModel *create_model()
> {
>   GtkTreeStore *model;
>   GtkTreeIter iter, child;
>
>   model = gtk_tree_store_new(1, G_TYPE_STRING);
>
>   gtk_tree_store_append(model, &iter, NULL);
>   gtk_tree_store_set(model, &iter, 0, "Item with no children", -1);
>
>   gtk_tree_store_append(model, &iter, NULL);
>   gtk_tree_store_set(model, &iter, 0, "Item with children", -1);
>
>   gtk_tree_store_append(model, &child, &iter);
>   gtk_tree_store_set(model, &child, 0, "Child 1", -1);
>
>   gtk_tree_store_append(model, &child, &iter);
>   gtk_tree_store_set(model, &child, 0, "Child 2", -1);
>
>   return GTK_TREE_MODEL(model);
> }
>
>
> void on_changed(GtkComboBox *widget, gpointer data)
> {
>   GtkComboBox *combo = widget;
>   GtkTreeIter iter;
>   gchar *selected_text;
>
>   if (gtk_combo_box_get_active_iter(combo, &iter)) {
>     gtk_tree_model_get(gtk_combo_box_get_model(combo), &iter,
>                        0, &selected_text, -1);
>     printf("Selected: %s\n", selected_text);
>   }
> }
>
>
> GtkWidget *create_combo(GtkTreeModel *model)
> {
>   GtkWidget *combo;
>   GtkCellRenderer *column;
>
>   combo = gtk_combo_box_new_with_model(model);
>   g_object_unref(model);
>
>   column = gtk_cell_renderer_text_new();
>   gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(combo), column, TRUE);
>   gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(combo), column,
>                                  "text", 0, NULL);
>
>   g_signal_connect(combo, "changed", G_CALLBACK(on_changed), NULL);
>
>   return combo;
> }
>
>
> int main(int argc, char **argv)
> {
>   GtkWidget *window, *combo;
>   GtkTreeModel *model;
>
>   gtk_init(&argc, &argv);
>
>   window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
>   g_signal_connect(window, "delete_event", G_CALLBACK(gtk_main_quit), NULL);
>
>   model = create_model();
>   combo = create_combo(model);
>
>   gtk_container_add(GTK_CONTAINER(window), combo);
>
>   gtk_widget_show_all(window);
>   gtk_main();
>
>   return 0;
> }
> ---
>
> And the screenshots:
> - Gtk2: https://imgur.com/a/kcYx1Wt
> - Gtk3: https://imgur.com/a/VsuSz73

Anyone?

It does seem like a missing functionality in Gtk3, since there's no way
to select the parent element. Perhaps a bug should be filed?

-- 
Eduardo M KALINOWSKI
edua...@kalinowski.com.br

_______________________________________________
gtk-app-devel-list mailing list
gtk-app-devel-list@gnome.org
https://mail.gnome.org/mailman/listinfo/gtk-app-devel-list

Reply via email to