Revisions and bug fixes
This document contains details of modifications and bug fixes to the vision2
library listed by the release version of EiffelStudio. All bug fixes and
modifications are relative to the previously released version.
Eiffel Studio 5.5
Interface modifications
-
EV_APPLICATION - Added `captured_widget' which returns the EV_WIDGET currently captured in the system, or `Void' if none.
- EV_SPLIT_AREA - Added `splitter_width' which returns the width of the splitter in pixels.
Bug fixes
-
Platform independent
-
Windows
-
Gtk
Eiffel Studio 5.4
Interface modifications
-
EV_ITEM_PIXMAP_SCALER
- New class added which provides no new functionality, but is a clean
abstraction of `pixmaps_width', `pixmaps_height' and `set_pixmaps_size' which
were all defined independently in EV_TREE, EV_LIST, EV_MULTI_COLUMN_LIST and
EV_COMBO_BOX. Your code will not be affected by this change.
-
EV_TOOL_BAR
- Added three new features `has_vertical_button_style',
`enable_vertical_button_style' and `disable_vertical_button_style'. The default
style for buttons is vertical and was the only style previously available, in
which the `pixmap' is displayed above `text'. When vertical style is disabled,
the `pixmap' of a button will be displayed to the left of its `text'.
-
EV_TREE
- No longer inherits EV_TREE_NODE_CONTAINER which is now obsolete. Made
`selected' obsolete, use selected_item /= Void instead.
-
EV_TREE_NODE
- Now inherits EV_TREE_NODE_LIST instead of EV_TREE_NODE_CONTAINER. This
provides more functionality at the level of the node, but does not change the
features available in non deferred descendents, as they all previously
inherited EV_TREE_NODE_LIST. Changed type of `parent' to EV_TREE_NODE_LIST from
EV_TREE_NODE_CONTAINER. Removed three obsolete features - `align_text_left',
align_text_center' and `align_text_right'.
-
EV_TREE_ITEM
- Strengthened `is_expandable' so that it checks `parent_tree' is not Void,
this brings it into line with the preconditions of `expand'.
-
EV_DYNAMIC_TREE_ITEM
- Strengthened `is_expandable' to check `parent_tree', in line with
preconditions of `expand'. Added "valid_operands" precondition to
`set_subtree_function' which ensures that you only pass a function with valid
operands.
-
EV_TREE_NODE_CONTAINER
- Now obsolete, you should use EV_TREE_NODE_LIST instead.
-
EV_MULTI_COLUMN_LIST
- Added missing postconditions to `align_text_left', `align_text_right',
`align_text_center' and other miscellaneous features that were missing relevent
postconditions.
-
EV_MENU
- Tightened preconditions of `show' and `show_at' to ensure that the menu is
not parented.
-
EV_TEXT
Added `has_word_wrapping', `enable_word_wrapping' and `disable_word_wrapping'.
These features allow you to switch between horizontal word wrapping, in which
lines too long to be displayed will be wrapped, and no word wrapping, in which
horizontal scroll bars will be displayed, allowing you to view the complete
contents of each line. Previously EV_TEXT would always wrap lines, and the
default beaviour is `has_word_wrapping' as it was before these changes.
-
EV_TEXT_COMPONENT
- Added `has_selection' precondition to `selected_text' which requires that
`has_selection' must be True for you to call `selected_text'.
-
EV_FILE_DIALOG
- Added `valid_file_title' for validation of a file name excluding the path.
-
EV_STANDARD_DIALOG
- Corrected postcondition of `make_with_text' which was checking that `text'
was the same object as the STRING pased as an argument. This was incorrect, as
`text' is cloned during the creation.
-
EV_WIDGET
- Added `remove_real_target' which ensures that `real_target' is Void.
-
EV_WIDGET_ACTION_SEQUENCES
- Added `mouse_wheel_actions', fired each time that the mouse wheel is
scrolled.
-
EV_NOTEBOOK
- Now inherits EV_FONTABLE permitting a font to be applied to the item texts.
-
EV_ENVIRONMENT
-
Added `mouse_wheel_scroll_lines' which returns an INTEGER corresponding to the
number of lines that should be scrolled in response to each mouse wheel scroll
event received.
-
Added `has_printer' which returns `True' if at least one printer is installed.
-
EV_PRINT_CONTEXT
- Added `horizontal_resolution' and `vertical_resolution' which return the page
size in pixels of the page type selected from an EV_PRINT_DIALOG. This permits
you to adjust the figure world you are printing to an EV_PRINT_PROJECTOR based
on the limits of the page, as determined by `horizontal_resolution' and
`vertical_resolution' in pixels.
-
EV_APPLICATION
- Added `process_events_until_stopped' and `stop_processing', similar to
`process_events', except the processing is executed until `stop_processing' is
called.
-
EV_PRINT_PROJECTOR
- Added `has_printer' check to `make_with_context', ensuring that if you are to
print to a printer, at least one printer is available.
-
EV_PRINT_CONTEXT
- `default_create' now initializes a set of standard values, permitting the
printing to the default printer, using US letter size.
-
EV_RELATIVE_POINT
- The features `set_x_abs', `set_y_abs', `set_angle_abs', `set_scale_x_abs' and
`set_scale_y_abs' now all have a precondition ensuring that you may only call
them while `being_positioned' is True, which is only the case during execution
of a custom positioning agent. Previously, if they were called at other times,
the values set would be overridden.
-
EV_FIGURE
- `accept_cursor' and `deny_cursor' are now available as queries.
-
EV_ABSTRACT_PICK_AND_DROPABLE
- `set_accept_cursor' and `set_deny_cursor' no longer accept `Void' arguments.
-
EV_FIGURE_MATH
- 'line_angle' now correctly returns the angle in radians relative to world.
-
EV_ARROWED_FIGURE
- 'start_angle' and 'end_angle' now work in all circumstances
-
EV_FIGURE_STAR
- First line generated is now created from 'point_b'
-
EV_FIGURE_EQUILATERAL - First point generated is now based
upon 'point_b'
Breaking changes
-
EV_TREE_NODE_CONTAINER - This class is no longer used in EiffelVision2,
and if you were relying on it, you should use EV_TREE_NODE_LIST instead. The
type of `parent' for tree nodes has been changed from EV_TREE_NODE_CONTAINER to
EV_TREE_NODE_LIST, so if you retrieve the `parent' and then attempt to iterate,
you may have declared an instance of EV_TREE_NODE_CONTAINER. In this situation,
you should simply change the definition to EV_TREE_NODE_LIST instead.
Bug fixes
-
Platform independent
-
EV_DYNAMIC_TREE_ITEM
- No longer crashes if your `subtree_function' returns Void. In this situation,
it will now behave as if the `Result' was empty.
-
EV_BOX
- Attempting to dock from an EV_DOCKABLE_SOURCE while the box was empty would
not work. This has now been fixed.
-
EV_TEXT_COMPONENT
- Calling `append_text', `prepend_text' or `insert_text' while `is_editable' is
False caused a precondition failure in the implementation which is now fixed.
-
EV_DOCKABLE_SOURCE
-
It was previously not possible to dock to an empty window, as the target was
ignored in error.
-
Fixed bug which caused a crash if a dock was attempted to an empty box.
-
EV_CHECKABLE_LIST
- Corrected postcondition of `checked_items' which was checking
`selected_items' in error, and therefore almost always failing.
-
EV_APPLICATION
- Querying `focused_widget' if the window with the focus was empty caused a
crash. This has now been fixed, and in this situation, the window itself is
returned.
-
EV_FIGURE_TEXT
- Fixed handling of `preferred_fonts' from the `font', which was not taken into
account. Previously, the default font was always used.
-
EV_DYNAMIC_LIST
- Fixed `retrieve_item_by_data' and `retrieve_items_by_data' which were always
performing object comparison, even when reference comparison was selected by
passing `False' as the second argument.
-
EV_TREE_NODE_LIST
- Fixed `retrieve_item_recursively_by_data' and
`retrieve_items_recursively_by_data' which were always performing object
comparison, even when reference comparison was selected by passing `False' as
the second argument.
-
EV_CONTAINER - Fixed bug in `unmerge_radio_button_groups' which would
crash if the container had no radio buttons.
-
Windows
-
EV_TEXT_COMPONENT
- fixed bug in `select_region' which would fail if `start_pos' was greater than
`end_pos'.
-
EV_PIXMAP
-
`expose_actions' previously had a feature contained related to the
implementation, and calling `wipe_out' on `expose_actions' would stop the image
from being redrawn. There are now no side effects related to `expose_actions'.
-
Calling `copy' on a pixmap that was parented in an EV_CONTAINER, and therefore
displayed on screen had no visual effect until the window was re-painted. The
image is now updated immediately. Also, using `copy' on a pixmap in a similar
situation that was originally set with a masked icon, and passing a pixmap
created from a bitmap file would cause a crash.
-
Fixed display error in handling of pixmaps created from a PNG with a
transparant color, using `set_with_named_file'. The background would be garbled
and partially black.
-
EV_LIST
-
Calling `disable_sensitive' when already non sensitive would loose the original
selection, and calling `enable_sensitive' when already sensitive would alter
the selected item. The features will no longer alter the selection if called
twice.
-
Fixed result of `background_color' which was returning gray instead of white
before a color was assigned
EV_CELL
- If you removed the item, the minimum size was not updated to reflect this,
thereby retaining the minimum size as constrained by the minimum size of the
now removed item.
-
EV_TREE_ITEM/EV_TREE
- A call to `disable_select' on an EV_TREE_ITEM will now actually remove the
selection from the tree. Previously, the style of the item was changed, but a
call to `selected_item' on the tree would still return the item.
-
EV_FILE_DIALOG
- Fixed precondition violation when you calling `set_file_name' which was
rejecting directory separators.
-
EV_DIALOG
- Fixed a bug when you had two dialogs displayed modally, with the second modal
to the first. If you had a text field within the second dialog whose
`return_actions' contained an agent which would destroy the second dialog, the
`select_actions' of the `default_push_button' in the lower dialog would be
subsequently fired.
-
EV_LABEL
- If a label was disabled through the disabling of a container in which it was
contained, it would sometimes not be grayed out. This has now been fixed.
-
EV_PICK_AND_DROPABLE
-
`mode_is_target_menu' did not work for a pick and drop source whose `pebble'
was generated by a `pebble_function'.
-
Fixed bug where drag and drop was not working as it was attempting to perform
docking instead. If both are enabled, docking has priority.
-
EV_COMBO_BOX_IMP
-
Fixed `set_foreground_color' and `set_background_color' which previously did
nothing.
-
Fixed bug in selection. If during execution of the `select_actions' of an item
contained, you called `enable_select' on another item within the combo box,
subsequently selecting the originally selected item would no longer fire its
`select_actions'.
-
`enable_edit' and `disable_edit' were both causing the pixmaps of any items
contained to be no longer displayed.
-
EV_PRINT_DIALOG
- Querying `print_context' from a print dialog if a user selected "Cancel"
would previously crash.
-
EV_TREE and EV_MULTI_COLUMN_LIST
- Fixed result of `background_color' which was returning gray instead of white
before a color was assigned
-
EV_SCREEN - `widget_at_pointer_position' now returns the combo box if
the mouse pointer is held above the drop down list button of a combo box.
Previously, `Void' was returned.
-
Gtk
-
EV_TREE_NODE
- Now expansion state remains the same when 'set_pixmap' is called.
-
EV_DIALOG
- Fixed bug where 100 percent of CPU time was being used when dialog was shown
modally.
-
EV_WINDOW
- Now sizing invariants are fulfilled when widget is destroyed, preventing
segmentation violation.
-
EV_COMBO_BOX
-
Fixed bug where reselecting an item within the combo box list was in fact
deselecting it.
-
Now first item remains selected when items are added.
-
EV_WINDOW
- Fixed querying of positioning which never changes if previously set by
user.
-
EV_APPLICATION
- Priority of `idle_actions' has been changed so that gtk will recalculate
widgets sizes before calling its idle handler, this means that all resizing is
done before idle actions are called.
-
EV_WINDOW
- Now windows correctly shrink when requested size is smaller than current size
-
EV_PICK_AND_DROPABLE
- Fixed bug where if both drag and drop and docking were enabled, both would be
executed, now docking overrides drag and drop if both are enabled.
-
EV_TIMEOUT
- Now timeouts correctly unregister themselves on dispose preventing
segmentation violation.
-
EV_PIXMAP
- Pixmap stretching now works as expected.
-
EV_WINDOW
- Now all window specific events work as expected
-
EV_TITLED_WINDOW
- Now is_displayed returns false when window is minimized.
-
EV_TREE_NODE
- Insertion of children at specific rows now displays as expected.
-
EV_WINDOW
- Now windows have a border and are resizable to match Win32 behavior
-
EV_SPLIT_AREA
- Now 'split position' honors request when widget resize is pending
-
EV_DRAWING_AREA
- Fixed full size optimization so that all expose actions are handled correctly
-
EV_TEXT_COMPONENT -
Fixed issue where up and down arrow keys caused widget to lose focus
unnecessarily
-
EV_FONT
- Now preferred families are taken in to account when no style is set
-
EV_STANDARD_DIALOG - Now all file handling dialogs are
resizable
Eiffel Studio 5.3
Interface modifications
-
EV_TITLED_WINDOW_ACTION_SEQUENCES
added which is inherited only by EV_TITLED_WINDOW and provides three new action
sequences :- `minimize_actions', `maximize_actions' and `restore_actions'.
-
EV_TITLED_WINDOW
-
You may now only call `maximize' and `minimize' if `is_show_requested'.
-
When minimized, `is_displayed' now returns False.
-
EV_BUTTON
now inherits EV_FONTABLE, allowing you to modify the font displayed.
-
EV_DYNAMIC_LIST_ITEM
- Corrected `off' which was using the version inherited from EV_TREE_NODE when
it should have been using the version from EV_TREE_NODE_LIST instead.
-
EV_RECTANGLE
- Added precondition to `intersects' which stops a Void rectangle being passed
as an argument.
-
EV_TOOL_BAR_SEPARATOR
- Now export many inherited features to {ANY} instead of {NONE}, including
`parent'.
-
EV_ENVIRONMENT
- Added `supported_image_formats' which returns a LINEAR [STRING] containing
all valid formats by their three letter extension.
-
EV_CHECKABLE_LIST
- New class added which behaves as an EV_LIST, except that for each
EV_LIST_ITEM contained, an associated check box is displayed.
-
EV_MESSAGE_DIALOG
- No longer deferred, and has two creation procedures `default_create' and
`make_with_text'.
-
EV_STANDARD_DIALOG
- All descendents now have `make_with_text' as a creation procedure'.
-
EV_TABLE - Now inherits CHAIN instead of ARRAY. This is a breaking
change, and may require some modification to your code. The inheritence from
ARRAY was seriously flawed. For example, if you were to call `extend' on an
EV_CONTAINER object that was currently referencing an EV_TABLE, then this would
fail. Now that we inherit CHAIN, this problem, among others of a similar nature
are fixed. Another advantage of inheriting CHAIN, is that the table may now be
iterated which allows for greater flexibility.
The following list details some of the breaking changes, and how to fix them:
-
item
- If you were using `item', you should change this to `item_at_position'. A
call to `item' will now return the current item.
-
put
- If you were using `put', you must now replace this with `put_at_position'.
-
extend and replace
- These are now both exported, as before, they were exported to {NONE}.
-
features inherited from ARRAY
- These are no longer available but you may use the feature `to_array', which
returns the contents of the table represented as an ARRAY [EV_WIDGET]. This
feature is marked as obsolete, as it is temporary, to simplify the transition
to the new inheritence structure of EV_TABLE.
-
count
- The previous version of `count' was the one from ARRAY, which returned the
number of available (not empty) cells in the table. We now use the version of
`count' inherited from EV_CONTAINER which returns the number of widgets
currently contained. Previously, the feature `widget_count' was used to return
the number of items, but this feature has now been made obsolete. Therefore, if
you were previously using `count', replace this with `rows' * `columns', and if
you were using `widget_count', replace this with a call to `count'.
-
item_list - This is now obsolete. You may use `linear_representation' to
retrieve the contents of the table, or simply traverse the table.
-
EV_FIXED
- No longer inherits DOUBLE_MATH.
-
EV_VIEWPORT
- No longer inherits DOUBLE_MATH.
-
EV_TEXT
- `line_count' now returns the number of lines actually displayed, and not just
the newline characters, as an EV_TEXT will wrap the text when necessary. The
postcondition of `linecount' has been updated to reflect this change.
-
EV_FILE_DIALOG Added "valid_file_name" precondition to `set_file_name'
and a new feature `valid_file_name' which checks that a file name is valid on
the current platform.
Bug fixes
-
Platform independent
-
EV_WIDGET
- `pointer_style' now correctly returns the Ibeam cursor for textable widgets.
-
EV_FIGURE_RECTANGLE
-
Corrected `bounding_box' which was previously computed incorrectly when the
rectangle was rotated.
-
Fixed `width' and `height' which were always returning one less pixel than they
should have.
-
Windows
-
EV_PIXMAP
- Setting a tile with `set_tile' followed by a call to a fill routine would
crash the implementation.
-
EV_COMBO_BOX
- Implemented pick and drop.
-
EV_TEXT_FIELD
- Implemented pick and drop.
-
EV_PASSWORD_FIELD
- Implemented pick and drop.
-
EV_TEXT
-
Implemented pick and drop.
-
If not `is_editable' and a `background_color' had been set, it was only used on
lines containing text. The `background_color' is now correctly displayed
throughout the whole control when not `is_editable'.
-
Fixed `select_region' which was selecting an incorrect region starting on any
line except the first, when the `text' spanned multiple lines.
-
Fixed `selection_start' and `selection_end' which were incorrect when the
selection was not completely contained on the first line.
-
Fixed `first_position_from_line_number' and `last_position_from_line_number'
which were returning incorrect values when the text was wrapped.
-
Fixed `caret_position' and `set_caret_position' which were incorrect when the
text spanned multiple lines, and the caret was not on the first line.
-
`line_count' now returns the number of lines actually displayed, and not simply
the number of newline characters. To query the number of new line characters do
:- text.occurrences ('%N')
-
Fixed bug in `search' which was returning -1 instead of 0 when the text was not
found.
-
EV_DRAWABLE
- Fixed bug when you performed the following: drew a filled shape, called
`set_tile' and then drew another filled shape. The tile would not be used on
the second fill.
-
EV_COLOR_DIALOG
- Querying `color' after a user had cancelled the dialog would previously crash
a system, if `set_color' had never been called.
-
EV_COLOR
- Fixed `set_rgb_with_24_bit' which would fail when called.
-
EV_BUTTON, EV_TOGGLE_BUTTON
- The buttons now correctly display a text, pixmap and background color
simultaneously. Previously, the background color was never displayed, and
either the pixmap or text would be displayed, not both.
-
EV_PRINT_DIALOG
- Fixed `set_from_page' and `set_to_page' which were previously not
implemented.
-
EV_LIST
-
Fixed a graphical glitch when using `wipe_out' when items were contained that
required the horizontal scroll bar to be visible. The scroll bar was not
hidden, even though there were no longer any items in the list.
-
Changing the selection behaviour between multiple and single selection would
cause the scroll bars to become hidden, even if they were necessary. Changing
this status will no longer hide the scroll bars if they are required.
-
EV_TOOL_BAR
-
Items that were disabled would sometimes become enabled when other properties
of the item were set. For example, performing
"my_tool_bar_button.disable_sensitive" followed by "my_tool_bar_button.set_text
("Disabled")" while the button was parented, would result in a sensitive tool
bar button. This is now fixed.
-
If you changed the `text' of a tool bar toggle button during the firing of the
`select_actions' of the toggle button, the button would become unchecked as a
result. This is now fixed, and changing the text will not stop the button from
becoming selected.
-
EV_MULTI_COLUMN_LIST
- Changing the selection behaviour between multiple and single selection would
cause the scroll bars to become hidden, even if they were necessary. Changing
this status will no longer hide the scroll bars if they are required.
-
EV_DYNAMIC_TREE_ITEM
- Calling `set_tooltip' failed and has now been fixed.
-
EV_TIMEOUT
- Calling `destroy' more than once on a timeout, caused the implementation to
crash, and has now been fixed.
-
EV_TOOLTIPABLE - Tooltips on primitives were not supporting multiple
lines and this has now been fixed. Use %N for a line break.
-
Gtk
-
EV_SCROLLABLE_AREA
- Items smaller than the area are now positioned correctly.
-
EV_VIEWPORT
-
Widget now works correctly with negative offset values
-
Item position is now handled correctly on item resize.
-
EV_PIXMAP
- All drawing routines now flush immediately to screen.
-
EV_DIALOG
- Cancelling via Enter key is now handled correctly.
-
EV_LIST
- Fixed selection of selected item when changing from multiple selection to
single selection.
-
EV_MULTI_COLUMN_LIST
-
Row height now incorporates spacing pixel to match the implementation of
Windows.
-
Default row height is now slightly larger to be more aesthetically pleasing
with smaller fonts sizes.
-
EV_CONTAINER
-
`set_background_pixmap' now works with repeated parenting.
-
Radio group unmerging is now handled correctly.
-
EV_TEXT_FIELD
- Now vertical alignment is identical to that on Windows, including that for
text field descendants.
-
EV_RANGE
- Now motions events are passing consistent pointer values instead of sometimes
skewed ones.
-
EV_DRAWING_AREA
- Now `focus_in_actions' are called in all circumstances.
-
EV_TEXT
-
`scroll_to_line' is now implemented.
-
`line_count' and `current_line_number' now handle lines in text widget and not
the text itself.
-
EV_FIXED
- Now item sizing is correctly handled in all circumstances.
-
EV_NOTEBOOK
- Now tabs are more aesthetically pleasing.
-
EV_MENU_SEPARATOR
- Menu Separators are now more prominent.
-
EV_TOOLBAR_SEPARATOR - Toolbar Separators are now more
prominent.
Eiffel Studio 5.2
Interface modifications
-
EV_TEXTABLE
- `align_text_left', `align_text_right' and `align_text_center' have been
extracted into a new class, EV_TEXT_ALIGNABLE which inherits EV_TEXTABLE. All
previous descendents of EV_TEXTABLE now inherit EV_TEXT_ALIGNABLE, except
EV_TREE_NODE, EV_MENU_ITEM, EV_LIST_ITEM and EV_TOOL_BAR_BUTTON
-
EV_TEXT_COMPONENT
- Now inherits EV_TEXTABLE.
-
EV_TEXT_ALIGNMENT_CONSTANTS
- New class added to support EV_TEXT_ALIGNABLE.
-
EV_MENU_ITEM_LIST
- `parent' is now of type EV_ANY, instead of EV_MENU_ITEM_LIST as it did not
hold for EV_MENU_BAR. The renaming of `parent' to `old_parent' in EV_MENU_BAR
has now been removed.
-
EV_VIEWPORT
- added `set_item_width', `set_item_height' and `set_item_size'.
-
EV_TABLE
-
redefined `prunable' to `True' and implemented `prune'.
-
Added the following features - `set_item_span', `set_item_position',
`set_item_span_and_position', `area_clear_excluding_widget', `item_row_span',
`item_column_span', `item_row_position' and `item_column_position'.
-
EV_WIDGET
- Changed type of `focus_in_actions' and `focus_out_actions' from
EV_FOCUS_ACTION_SEQUENCE to EV_NOTIFY_ACTION_SEQUENCE. `is_parent_recursive' is
no longer available. It has been moved to EV_CONTAINER. This was necessary to
fix a catcall encountered using vision2 under .NET. The problem manifested with
widgets that held items.
-
EV_FIGURE
- `proximity_in_actions' and `proximity_out_actions' are now obsolete.
-
EV_FONTABLE
- `set_font' now sets a copy of the font internally.
-
EV_TREE
- `ensure_item_visible' and `has_recursively' now take an EV_TREE_NODE as
arguments, instead of an EV_TREE_ITEM.
-
EV_TEXT
- `put_new_line' is now obsolete. Use `set_text ("%N") instead."
-
EV_APPLICATION_ACTION_SEQUENCES
- Added `cancel_actions', fired when a pick and drop is cancelled, and
`pnd_motion_actions' fired while the pointer moves during a pick and drop.
-
EV_TREE_NODE_LIST
-
`find_item_recursively_by_data', `has_recursively' and `recursive_do_all' are
now implemented in this class, instead of both EV_TREE and EV_TREE_NODE which
are descendents.
-
Added `retrive_items_recursively_by_data' and
`retrieve_item_recursively_by_data' which allow you to specify a comparison
criterion, and due to this addition, `find_item_recursively_by_data' has now
been made obsolete.
-
EV_DYNAMIC_LIST
- Added `retrieve_item_by_data' and `retrieve_items_by_data'.
-
EV_ITEM_LIST
- Made `item_by_data' obsolete, as you should now use `retrieve_item_by_data'
added in EV_DYNAMIC_LIST.
-
EV_DIALOG - Added `is_relative' and defined `is_modal' in this class,
instead of inheriting it from EV_WINDOW.
Bug fixes
-
Platform independent
-
EV_FIGURE_POLYLINE
- Fixed `start_angle' and `end_angle' so that they are computed relative to the
first and last polyline segments. This also fixes the start and end arrows, so
that when displayed, they now actually point in the direction of their
respective line segments.
-
EV_TREE and EV_TREE_NODE
- Fixed `find_item_recursively_by_data' which failed on the `index_not_changed'
postcondition. Note that these features are now defined in EV_TREE_NODE_LIST.
-
EV_DYNAMIC_TREE_ITEM - Fixed invariant violation from EV_ITEM_LIST, when
created with `default_create'.
-
Windows
-
EV_RADIO_BUTTON
- The default minimum height after `default_create' is now enough to display
the widget correctly.
-
EV_CHECK_BUTTON
- The default minimum height after `default_create' is now enough to display
the widget correctly.
-
EV_NOTEBOOK
- When removing a widget from a notebook, it is now visible. Previously, the
widget would be hidden.
-
EV_LIST, EV_MULTI_COLUMN_LIST, EV_TREE
- Fixed `set_foreground_color' and `set_background_color'. Previously, calling
these features did nothing.
-
EV_BOX
- If a widget was not`is_item_expanded', then adding a new widget to the box
before that widget would sometimes cause a different widget to become
`is_item_expanded'.
-
EV_TOOL_BAR_RADIO_BUTTON
- The currently selected button in `peers' was unselected when the button was
pressed, and not when it was really selected. This bug made it possible to make
`selected_peer' Void, which caused an invariant to fail.
-
EV_LIST_ITEM
- Calling `enable_select' when parented in an EV_LIST now also sets the item as
focused in the parent. This corrects bugs in keyboard navigation when selecting
an item programatically.
-
EV_FIXED
- The minimum size is constrained by the positions and sizes of the children
(They must be completely displayed), although when the positions of the
children were reduced, the minimum allowable size was not recomputed. This
meant that the widget would be enlarged when the positions of the children
increased, but could never be reduced in size when the positions of the
children were decreased.
-
EV_MENU and EV_MENU_ITEM
- `set_pixmap' has been implemented as previously, it did nothing.
-
EV_TABLE
- re-implemented resizing calculations to fix numerous problems when children
had minimum sizes. The minimum size now also includes the border width when
empty.
-
EV_NOTEBOOK
- `selection_actions' were called when you selected an item through
`select_item', even if the item was already selected. `selection_actions' are
now only fired when the selection changes.
-
EV_TREE_ITEM
- calling `set_pixmap' twice successively with the same EV_PIXMAP caused a
postcondition failure.
-
EV_TEXT
- Fixed `put_new_line', although it has been made obsolete, as you should just
use `append_text ("%N") instead.
-
EV_SPLIT_AREA
- Fixed crash reproducable by inserting an EV_PIXMAP directly into the split
area.
-
EV_CONTAINER
- Fixed `propagate_foreground_color' and `propagate_background_color' which
failed when one of the children was a descendent of EV_CELL.
-
EV_APPLICATION_ACTION_SEQUENCES
- `drop_actions' was being fired even when the pick and drop was cancelled.
-
EV_PIXMAP
- Previously, if you were to add an agent to an action sequence of the pixmap,
before it was parented, the agent would be removed during the parenting.
-
EV_MENU
-
Pruning an EV_MENU_SEPARATOR when one or more EV_RADIO_MENU_ITEM were still
contained in the menu would cause occasional crashes.
-
Previously, when adding an EV_MENU_SEPARATOR, followed by multiple
EV_RADIO_MENU_ITEMS, all the items were being selected.
-
Fixed bug in `destroy' which was causing postcondition failures.
-
EV_TITLED_WINDOW
- Fixed a GDI leak, manifesting when a window was destroyed.
-
EV_DIALOG
-
Fixed `is_modal' which was previously always returned `False'.
-
Fixed bug with `background_color' and `foreground_color' which was not taken
into account if the dialog was shown relative or modally to another window.
-
If a dialog with a default cancel button was displayed using `show', then
minimizing the dialog would cause the system to fail internally.
-
Fix bug in `show_relative_to_window' which would cause any associated menus to
be removed.
-
Fixed bug in `show', as if the dialog had already been shown modelessly to a
window, then calling `show' did not show it independently, but still
modelessly.
-
Fixed bug with `show_actions' which would be wiped out if you called
`show_modal_to_window' and then `hide'.
-
`set_pixmap' will now actually display the pixmap, whereas before, no pixmap
was displayed.
-
EV_TEXT_COMPONENT
- Fixed `text_length' which was returning incorrect value for all descendents.
-
EV_TEXT
- Fixed `line_count' which was previously returning the correct result + 1.
-
EV_SCROLLABLE_AREA
- Fixed crash which occurred when you attempted to use `set_x_offset' or
`set_y_offset' before the area had been parented or displayed.
-
EV_FONTABLE
- Fixed bug when `font' was queried, `preferred_families' was not returned
correctly, and would always be empty.
-
EV_CONTAINER - `set_background_pixmap' was not correctly cloning the
image of the pixmap, and the displayed image could then be modified after
setting, by changing the image of the original pixmap.
-
Gtk
-
Remaining EV_WIDGET memory leaks have been fixed.
-
EV_WIDGET - Focus in/out actions are now correctly
called for widgets that do not occupy their entire space allocation such as
EV_TEXT_FIELD.
-
EV_DRAWABLE_IMP
- Polylines now display correctly on big-endian machines (Sparc, PowerPC).
-
EV_KEY
-
`out' is now correct for all keys (previously Quote and Backquote were
incorrect).
-
The events for all keys are now fired when Shift is held down.
-
EV_STOCK_PIXMAPS
- Warning and error pixmaps have been updated.
-
EV_WINDOW
- `remove_title now' works will all Window Managers.
-
EV_TITLED_WINDOW
-
`propagate_foreground_color' is now fixed in use with pixmaps as children.
-
`set_maximum_size' now works as expected
-
`set_minimum_width' now has no effect on Window height.
-
calls on `minimize' before `launch' now satisfies all assertions
-
calling `destroy' twice now doesn't fail on precondition.
-
`set_position' now satisfies post-condition in all situations.
-
`resize_actions' are now passed the correct values.
-
`move_actions' are now called correctly.
-
EV_NOTEBOOK
- now satisfies invariants when empty.
-
EV_DIALOG
-
Destroy now satisfies all invariants.
-
Reported memory leaks now fixed.
-
EV_LABEL
- Size is now taken from default gtk style size instead of hard coded 10
-
EV_FONT
- Font caching is now vastly improved in terms of speed.
-
EV_DRAWABLE
- Calls to `set_font' are now also vastly speeded up.
-
EV_TABLE
-
Memory management is now correct on item removal.
-
Now setting child's parent correctly
-
EV_TREE_NODE
-
Fixed all reported issues regarding item insertion and removal.
-
EV_CONTAINER
- Fixed remaining issues with radio grouping and merging.
-
EV_PICK_AND_DROPABLE
- Now drop_actions may destroy `Current' without crash.
-
EV_TEXT_FIELD
-
Now default `minimum_width' is reasonable (before 148, now same as Windows
being 4 characters wide)
-
Fixed `caret_position' when queried in change actions
Eiffel Studio 5.1
Interface modifications
-
EV_TEXTABLE and EV_TEXT_COMPONENT
- `text' no longer returns Void when empty.
-
EV_WINDOW
- `title' no longer returns `Void' when empty.
-
EV_TOOLTIPABLE
- `tooltip' no longer returns `Void' when empty. If empty, no tooltip is
displayed.
-
EV_TITLED_WINDOW
- `icon_name' no longer returns `Void' when empty.
-
EV_CLIPBOARD
- `text' no longer returns `Void' when empty.
-
EV_MESSAGE_DIALOG
- `text' no longer returns `Void' when empty.
-
EV_FILE_DIALOG
- `file_name' no longer returns `Void' when the "Cancel" button was pressed,
`Result' is empty instead.
-
EV_DIRECTORY_DIALOG
- `directory' no longer returns `Void when the "Cancel" button was pressed,
`Result' is empty instead.
-
EV_CONTAINER
- has three new features `set_background_pixmap', `background_pixmap' and
`remove_background_pixmap'. `background_pixmap' will be tessellated to cover
complete background area.
-
EV_TREE and EV_TREE_NODE
- Added `recursively_do_all'.
-
EV_STANDARD_DIALOGS
-
`ok_actions' have been renamed in descendents where appropriate. e.g. in
EV_PRINT_DIALOG, they are renamed to `print_actions' to match the texts of the
associated buttons. Where renamed, `ok_actions' are still available but
obsolete.
-
Selected button now also returns the correct text of the button (Previously it
was always "Ok").
-
EV_DIALOG_CONSTANTS
- Added new constants required for the above change to EV_STANDARD_DIALOGS.
-
EV_DRAWABLE
- `draw_straight_line' now has a precondition to ensure the points are not
identical.
-
EV_SPLIT_AREA
- seperated `put' from `extend'. They were defined as synonyms, but have
different behaviour.
-
EV_DYNAMIC_TREE_ITEM
- Added `remove_subtree_function'. Item now only shows as expandable if there
is a subtree function.
-
EV_WINDOW
- Added `maximum_dimension' which is the greatest value allowed for `width' and
`height'. This is also the default value for `width' and `height'.
-
EV_OPTION_BUTTON
- This class has been made obsolete. It will be removed at the next release.
-
EV_PICK_AND_DROPABLE_ACTION_SEQUENCES
- Added `pick_ended_actions' which are called when a pick ends.
-
EV_WIDGET
- `set_minimum_height', `set_minimum_width' and `set_minimum_size' now all
allow 0 as an argument. Previously, 1 was the minimum valid dimension.
-
EV_MULTI_COLUMN_LIST - `clear_selection' is now obsolete. Use
`remove_selection' instead.
Bug fixes
-
Platform independent
-
EV_FIXED
- Corrected `set_item_height', which was failing.
-
EV_SELECTABLE
- Corrected postcondition of `is_selected'.
-
EV_PND_ACTION_SEQUENCE -- `veto_pebble_function' is now only called when
its argument conforms to the transported pebble.
-
Windows
-
EV_RANGE
- The `maximum_value' could not be set greater than 32,000. The full range of
an INTEGER may now be set.
-
`focused_widget' from `EV_APPLICATION'
- was incorrect if an EV_CONTAINER had just received the focus.
-
EV_PICK_AND_DROPABLE
-
Ending a pick and drop on an EV_TOOL_BAR_BUTTON which has a non `void' pebble
no longer starts a transport from the button.
-
Reduced flicker on cursor when picking from an EV_TREE_ITEM or EV_LIST_ITEM.
-
`pebble_function' would previously be called twice during a pick and drop.
-
EV_FIXED
- Items contained are now drawn correctly dependent on their z order.
-
EV_DRAWABLE
-
`Remove_clip_area' did not remove the clip_area correctly, but set it to the
current size. This meant that if you then enlarged the widget, clipping would
be applied.
-
Fixed problems with ordering of calls to certain features which would cause
postcondition violations in the implementation.
-
`draw_pie_slice', `fill_pie_slice' and `draw_arc' now have divide by 0
protection in the implementation.
-
EV_TEXT
- `set_background_color' now correctly sets the color of the whole background.
Previously only the area containing text was modified.
-
EV_CLIPBOARD
- Our implementation would sometimes query `text' when not allowed by Windows,
thus causing postcondition failures.
-
EV_BUTTON - The result of `text_alignment' after default_create was
incorrect.
-
Gtk
-
Gtk version of Studio released (including Vision2), so no fixes from 5.0