A veces los diálogos modales GTK no son modal-bug o feature?
Cuando creo un diálogo personalizado en GTK (ambos, GTK2 o GTK3) y lo establezco como modal, toda la entrada a otras ventanas de mi aplicación se ignora. Esto funciona casi siempre, pero falla bajo ciertas condiciones.
Cuando agrego una ventana de desplazamiento que contiene una vista de árbol a mi diálogo, todavía funciona como se supone. Pero si lleno la vista del árbol con entradas hasta que la ventana de desplazamiento comience a mostrar sus barras de desplazamiento - - - la modalidad se pierde repentinamente y puedo hacer clic en mi otro windows!
Aquí está el ejemplo más básico que pude configurar. Está escrito en Vala, pero usted conseguirá 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;
}
Compilar con:
valac --pkg gtk+-3.0 main.vala
¿Me estoy perdiendo algo? ¿Se quiere este comportamiento? ¿O es un insecto? Si es así, ¿hay alguna solución?
EDIT: Investigué un poco más: El problema desaparece cuando se desinstalan las barras de desplazamiento superpuestas de Ubuntu. Así que no está resuelto todavía, pero sé dónde tengo que informar de esto...
1 answers
Definitivamente un error. Publique un informe de error y / o actualice su GTK + lib.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-04-10 21:56:57