PR# 19644 Routines {EV_FIXED}.extend_with_position_and_size, and {EV_FIXED}.set_item_position_and_size fail
Problem Report Summary
Submitter: HowardThomsonSurrey
Category: EiffelVision
Priority: Low
Date: 2020/05/29
Class: Bug
Severity: Non-critical
Number: 19644
Release: 19.12
Confidential: No
Status: Open
Responsible:
Environment: linux
Synopsis: Routines {EV_FIXED}.extend_with_position_and_size, and {EV_FIXED}.set_item_position_and_size fail
Description
See the class text in the 'To Reproduce' section. The routine in EV_FIXED extend_with_position_and_size fails to display the EV_WIDGET, which cased me some confusion initially, and also fails to set the widget's position: After {EV_FIXED}.extend_with_position_and_size (widget, argument_x, argument_y, w, h) widget.is_displayed /= True widget.x_position /= argument_x widget.y_position /= argument_y After {EV_FIXED}.set_item_position_and_size (widget, x, y, w, h) widget.x_position /= x widget.y_position /= y {EV_FIXED}.extend (widget) -- OK {EV_FIXED}.set_item_position (widget, x, y) -- OK
To Reproduce
Create an instance of the class below, and call show_modal_to_window(...) on the instance: note description: "Summary description for {DEMO_DIALOG}." author: "Howard Thomson" date: "25-May-2020" faults_to_fix: "[ The EV_DIALOG routines set_item_position_and_size and extend_with_position_and_size fail, according to the subsequent 'check' assertions. ]" class DEMO_DIALOG inherit EV_DIALOG redefine create_interface_objects, initialize end create default_create feature {NONE} create_interface_objects do Precursor create box create label create label_2 create label_3 create ok_button create cancel_button ok_button.set_text ("Connect") cancel_button.set_text ("Cancel") end initialize local x, y, w, h: INTEGER dx, dy: INTEGER do Precursor set_title ("EV_FIXED -- Test") extend (box) dy := 30 label.set_text ("Test label ...") label_2.set_text ("Test label 2 ...") label_3.set_text ("Test label 3 ...") x := 10 y := 10 -- This does not work, the item 'label' is not displayed! -- box.extend_with_position_and_size (label, x, y, 79, 17) box.extend (label) box.set_item_position (label, x, y) check label.x_position = x end -- OK check label.y_position = y end -- OK y := y + dy box.extend (label_2) w := label_2.width h := label_2.height box.set_item_position_and_size (label_2, x, y, w, h) check label_2.x_position = x end -- FAIL check label_2.y_position = y end -- FAIL check label_2.width = w end check label_2.height = h end -- Set actual desired position of label_2 box.set_item_position (label_2, x, y) y := y + dy w := label_3.width h := label_3.height box.extend_with_position_and_size (label_3, x, y, w, h) check label_3.is_displayed end -- FAIL check label_3.x_position = x end -- FAIL check label_3.y_position = y end -- FAIL check label_3.width = w end check label_3.height = h end y := y + dy box.extend (ok_button) box.set_item_position (ok_button, x, y) y := y + dy box.extend (cancel_button) box.set_item_position (cancel_button, x, y) key_press_actions.extend (agent cancel) box.key_press_actions.extend (agent cancel) cancel_button.key_press_actions.extend (agent cancel) end box: EV_FIXED label: EV_LABEL label_2: EV_LABEL label_3: EV_LABEL ok_button: EV_BUTTON cancel_button: EV_BUTTON cancel (a_key: EV_KEY) do if a_key.code.is_equal (a_key.key_escape) then current.destroy end end end
Problem Report Interactions