usar mensaje ejemplos como gtk modal-dialog vala

mensaje - A veces, los diálogos modales de GTK no son modales, ¿error o característica?



dialog linux ejemplos (1)

Definitivamente un error. Publique un informe de error y / o actualice su GTK + lib.

Cuando creo un diálogo personalizado en GTK ( ambos, GTK2 o GTK3 ) y lo configuro para que sea modal, todas las entradas a otras ventanas de mi aplicación se ignoran. Esto funciona casi siempre, pero falla bajo ciertas condiciones.

Cuando agrego un ScrolledWindow que contiene un TreeView a mi diálogo, todavía funciona como supuesto. Pero si llego a TreeView con las entradas hasta que ScrolledWindow comience a mostrar sus barras de desplazamiento, la modalidad se pierde de repente y puedo hacer clic en mis otras ventanas.

Este es el ejemplo más básico que pude configurar. Está escrito en Vala, pero tendrás la idea:

class MyDialog: Gtk.Dialog { public MyDialog() { this.modal = true; var data = new Gtk.ListStore(1, typeof(string)); // increase this number -- the dialog is not modal anymore! for (int i=0; i<2; ++i) { Gtk.TreeIter current; data.append(out current); data.set(current, 0, "Lorem Ipsum"); } var render = new Gtk.CellRendererText(); var column = new Gtk.TreeViewColumn(); column.pack_start(render, true); column.add_attribute(render, "text", 0); var treeview = new Gtk.TreeView.with_model(data); treeview.append_column(column); treeview.show(); var scroll = new Gtk.ScrolledWindow(null, null); scroll.set_size_request(100, 100); scroll.add(treeview); scroll.show(); (this.get_content_area() as Gtk.Box).add(scroll); } } int main (string[] args) { Gtk.init (ref args); var window = new Gtk.Window(); window.set_default_size(350, 170); window.destroy.connect(Gtk.main_quit); var button = new Gtk.Button.with_label("Click me!"); button.clicked.connect(() => { var dialog = new MyDialog(); dialog.set_transient_for(window); dialog.run(); dialog.destroy(); }); window.add(button); window.show_all(); Gtk.main(); return 0; }

Compilarlo con:

valac --pkg gtk+-3.0 main.vala

¿Me estoy perdiendo de algo? ¿Se quiere este comportamiento? O se trata de un error? Si es así, ¿hay alguna solución?

EDITAR: Investigué un poco más: el problema desaparece cuando se desinstalan las barras de desplazamiento superpuestas de Ubuntu. No está resuelto aún, pero sé dónde tengo que informar esto ...