PR# 17127 Any container added to a main window will cause the application to hang when compiled and executed.

Problem Report Summary
Submitter: djenkins99
Category: EiffelBuild
Priority: Medium
Date: 2010/09/24
Class: Bug
Severity: Serious
Number: 17127
Release: 6.6
Confidential: No
Status: Open
Responsible: misterieking
Environment: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.10) Gecko/20100915 Ubuntu/10.04 (lucid) Firefox/3.6.10
Synopsis: Any container added to a main window will cause the application to hang when compiled and executed.

Description
Adding any container widget (fixed, horizontal, vertical, etc.) to a main window in EiffelBuild will cause the application to hang when it is compiled and executed in EiffelStudio. This problem is exclusive to the Vision2 library for gtk (Linux); it does not exist for Windows.
To Reproduce
1. Create a new project using EiffelBuild 6.6. Save and generate code.
2. Launch EiffelStudio 6.6, and add the project generated by
EiffelBuild. Compile and run. The window appears as expected.
3. Back in EiffelBuild, add a FIXED or other container to the window. Save and generate code.
4. In EiffelStudio, compile the changes and Run. The application hangs
in feature "set_c_object" of EV_FIXED_IMP, inside the call to
"{EV_GTK_EXTERNALS}.gtk_object_sink(l_c_object)".

One way to correct the problem might be to change the code that EiffelBuild produces. In the root class, replace the following:

class
	VISION2_APPLICATION

inherit
	EV_APPLICATION
		redefine
			create_interface_objects
		end

create
	make_and_launch
	
feature {NONE} -- Initialization

	make_and_launch
			-- Create `Current', build and display `main_window',
			-- then launch the application.
		do
			default_create
			main_window.show
			launch
		end

with this:

class
	VISION2_APPLICATION

create
	make_and_launch

feature {NONE} -- Initialization

	make_and_launch
			-- Create `Current', build and display `main_window',
			-- then launch the application.
		do
			create app
			create main_window
			main_window.show
			app.launch
		end

feature {NONE} -- Implementation

	app: EV_APPLICATION

In other words, do not inherit from EV_APPLICATION, instead instantiate an EV_APPLICATION object before making other calls involving gtk.

Please note that I have only checked this as far as launching the main window and resolving the hanging issue. I have not done a thorough test to determine whether this is a complete solution.
Problem Report Interactions