Not sure why you need the sleep() statement (i'm always somewhat suspicious about sleep()), but try this:
fcd1->hide(); while (Gtk::Main::pending()) Gtk::Main::iteration(); I suspect that after hiding and before the sleep there is no time for Gtk+ to actually perform the hiding. On Mon, Nov 17, 2008 at 10:00 PM, argnu <[EMAIL PROTECTED]> wrote: > > In my program a file gets chosen and then a routine taking this file as > parameter starts which takes some time. > My problem is: the FileChooserDialog closes only _after_ the routine has > finished. > I want the Dialog to be closed _before_ the routine starts. > > I have tried it with FileChooserButton and with a separate Button which > calls a FileChooserDialog. For the last version I posted a Code Snippet. in > void on_button3_clicked() I would expect (and like to have) that > > fcd1->hide(); //should close the dialog > > works before the > > sleep(3)-statement in switch(res), > > however the hide() statement which should close the dialog comes into > effect > after the sleep(3); > sleep(3); stands for the routine which takes some time. > > do you have any suggestions? > > With best argnu > > // ------------------------------------------ > > Gtk::Window *win=NULL; > Gtk::Label *resultlabel=NULL; > Gtk::Toolbar *toolbar1=NULL; > > std::string gladefile="/home/binder/tmp/bla/bla.glade"; > Glib::RefPtr<Gnome::Glade::Xml> refXml; > > void on_button3_clicked() > { > toolbar1->freeze_child_notify(); > > Gtk::FileChooserDialog *fcd1=NULL; > refXml->get_widget("filechooserdialog1", fcd1); > > fcd1->show(); > int res=fcd1->run(); > std::string filename = fcd1->get_filename(); > > > fcd1->hide(); > std::cout << "after hide "<<std::endl; > > fcd1=NULL; > > switch(res) > { > case(Gtk::RESPONSE_OK): > { > std::cout << "Open clicked." << std::endl; > std::cout << "File selected: " << filename << std::endl; > > std::cout << "sleeping 3"<<std::endl; > > sleep(3); > > std::cout << "FINISHED sleeping 3"<<std::endl; > > break; > } > case(Gtk::RESPONSE_CANCEL): > case(Gtk::RESPONSE_DELETE_EVENT): > { > std::cout << "Cancel or X clicked." << std::endl; > break; > } > default: > { > std::cout << "Unexpected button clicked." << std::endl; > break; > } > } > > toolbar1->thaw_child_notify(); > } > > > int main(int argc, char **argv) > { > > Gtk::Main kit(argc, argv); > refXml = Gnome::Glade::Xml::create(gladefile); > > //toolbar1 and resultlabel is init'ed here,too, its not a leak > ... > > > Gtk::Button* pButton = NULL; > refXml->get_widget("button3", pButton); > > pButton->signal_clicked().connect( sigc::ptr_fun(on_button3_clicked) ); > > refXml->get_widget("window1", win); > kit.run(*win); > > } > -- > View this message in context: > http://www.nabble.com/How-to-close-FileChooserDialog-immediately-after-selection-of-file--tp20548033p20548033.html > Sent from the Gtkmm mailing list archive at Nabble.com. > > _______________________________________________ > gtkmm-list mailing list > gtkmm-list@gnome.org > http://mail.gnome.org/mailman/listinfo/gtkmm-list > -- Please note that according to the German law on data retention, information on every electronic information exchange with me is retained for a period of six months. [Bitte beachten Sie, dass dem Gesetz zur Vorratsdatenspeicherung zufolge jeder elektronische Kontakt mit mir sechs Monate lang gespeichert wird.]
_______________________________________________ gtkmm-list mailing list gtkmm-list@gnome.org http://mail.gnome.org/mailman/listinfo/gtkmm-list