Re: main window not redrawing after dialog closes



Emilian Nowak wrote:
On 2006-01-25 (wed) Rob Benton wrote:


In my main window I open a filechooser dialog then close it, set the mouse cursor to Gdk::WATCH, call a function, then change back the cursor. The problem is after the dialog closes the main window does not immediately redraw and the cursor does not immediately change. It's not until my function is nearly finished that these things happen. What could be my problem here? Maybe I'm not understanding the way X events fit in with non-X operations.



I guess that probably this method causes gui-freezing.
        _member_widget->read_from_xml(_filename);
        // enable menu items


Every program should have different thread for non-gui operations especially
if it makes, a lot of computing/data processing.
Read about Glib::Thread
http://www.gtkmm.org/docs/glibmm-2.4/docs/reference/html/classGlib_1_1Thread.html
and all other resources available on Internet about multi-threaded
applications.

Well I gave it a shot and got the exact same results. Do I have this in the right? Now my code looks like this:

void MainWindow::menu_open()
{
	// change cursor while working
	get_window()->set_cursor(Gdk::Cursor(Gdk::WATCH));
	_filename = Glib::filename_to_utf8(dialog.get_filename());
	Glib::Thread * thread = Glib::Thread::create(
		sigc::mem_fun(*this,&MainWindow::thread_open), true);
	thread->join();
	get_window()->set_cursor();
}

void MainWindow::thread_open()
{
	_member_widget->read_from_xml(_filename);
}



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]