On Viernes, 25 de Diciembre de 2009 10:20:05 Maciej Pilichowski escribió:
> Neither Hide or passing null changes anything. The result is -7.
> 
> Maybe I rephrase my wish to be more precise -- when I call modal
> dialog I would like the events in main dialog won't be run in
> parallel. Because some events in main dialog cause the modal dialog
> to show up, and if they are run in parallel I end up with several
> error dialog boxes informing user that (for example) loading of data
> were not successful.
> 
> Cheers,

I'm a big noob in Gtk#, but i'll try to help.

Are you sure the error is there? I say it becouse your code example works in 
my workstation. See the next code:

using System;
using Gtk;

namespace deleteme
{
        public class EmptyWindow : Gtk.Window
        {
                public EmptyWindow() : base(WindowType.Toplevel) {
                        Button b = new Button("Do something");
                        b.Clicked += HandleBClicked;
                        
                        Button b2 = new Button("Do other thing");
                        b2.Clicked += HandleB2Clicked;
                        
                        HButtonBox box = new HButtonBox();
                        box.PackStart(b, false, false, 0);
                        box.PackStart(b2, false, false, 0);
                        this.Add(box);
                        this.Title = "Lame example";
                        this.ShowAll();
                }

                void HandleBClicked (object sender, EventArgs e) {
                        MessageDialog md = new MessageDialog(this, 
DialogFlags.Modal, 
MessageType.Error, ButtonsType.Close, "Some error");
                        md.Response += delegate(object o, ResponseArgs args) {
                                if (args.ResponseId == ResponseType.Close)
                                        Console.WriteLine("Response: Closed");
                                else
                                        Console.WriteLine("Other response 
happened.");
                        };
                        md.Run();
                        md.Destroy();
                }
                
                void HandleB2Clicked (object sender, EventArgs e) {
                        MessageDialog md = new MessageDialog(this, 
DialogFlags.Modal, 
MessageType.Error, ButtonsType.Close, "some error");
        
                        md.Run ();
                        // <-- here, I would like to stop and wait for dialog 
to be closed 
                        md.Destroy();
                }

        }
}

There you have the example I was writing to ilustrate the technique and your 
code example. Both works for me. In fact they are actually pretty much the 
same, but using a delegate to receive the response event and destroying the 
dialog just after run().

Maybe you are hitting some bug?
_______________________________________________
Gtk-sharp-list maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/gtk-sharp-list

Reply via email to