Revisions and Bug Fixes
- Contents
- EiffelStudio 14.05
- EiffelStudio 13.11
- EiffelStudio 7.3
- EiffelStudio 7.1
- EiffelStudio 7.0
- EiffelStudio 6.8
- EiffelStudio 6.7
- EiffelStudio 6.6
- EiffelStudio 6.5
- EiffelStudio 6.4
- EiffelStudio 6.3
- EiffelStudio 6.2
- EiffelStudio 6.1
- EiffelStudio 6.0
- EiffelStudio 5.7
- EiffelStudio 5.6
- EiffelStudio 5.5
- EiffelStudio 5.4
- EiffelStudio 5.3
- EiffelStudio 5.2
- EiffelStudio 5.1
This document contains details of modifications and bug fixes to the EiffelVision 2 library listed by the release version of EiffelStudio. All bug fixes and modifications are relative to the previously released version
EiffelStudio 14.05
Improvements
- Made it possible to query
{EV_TEXT_COMPONENT}.start_selection and{EV_TEXT_COMPONENT}.end_selection even if there is no selection. In that case they return the same value which is the caret position. - Created a set of classes to make it easier to develop AutoTest tests for code based on Vision2.
Changes
- Made
{EV_TEXT_COMPONENT}.selection_start and{EV_TEXT_COMPONENT}.selection_end obsolete because selection_end was returning a character position and not a caret position which is counter-intuitive since set_selection is using caret positions. Introduced start_selection and end_selection instead that return the selection start and end in caret positions.
Bug fixes
- Platform Independent
- Fixed a bug that would allow pick and drop on disabled items because code allowed to be dropped on.
- GTK:
- Fixed issue where if a menu entry is of the form my_entry, then only myentry will appear ( bug#18716).
- Fixed a bug in
{EV_TEXT}.selected_text where if the text contained non-ASCII character, then it will just return the UTF-8 sequence of those Unicode characters instead of the Unicode characters. - Fixed
{EV_DRAWABLE}.draw_sub_pixel_buffer and{EV_PIXEL_BUFFER}.sub_pixel_buffer when the rectangle provided is larger than the image it would cause a crash. - Fixed a precondition violation in the implementation of
{EV_PIXEL_BUFFER}.get_pixel .
- Windows:
- Fixed contract violations when closing/destroying a dialog.
- Fixed contract violation when wiping out a notebook.
- Fixed various issues on Windows with
EV_TEXTABLE components when the text contains Unicode characters that generate a surrogate pair in UTF-16, the Windows API always refers to UTF-16 code units while at the Eiffel level we still refer to character position. - Fixed a by one error when mapping a caret position to the actual caret position of the underlying Windows implementation which has %R%N and not just %N.
EiffelStudio 13.11
Improvements
- Added support for GTK3.
Bug fixes
- Platform Independent
- Fixed a drawing issue in EV_GRID causing some invalid drawing.
- Fixed a crash with retrieving a RTF file containing a color or a font whose index is not starting at 1, or that it is referring to a non-defined index.
- Fixed a bug introduced at rev#90517 with
new_line_string
that became TN instead of %N. - Fixed a bug retrieving font in a font table to allow spaces between the components of a font entry in the table.Â
- Added code protection to find out about paragraphs as we would get an out of bound acess if the last character was a %N. This solved the case where copy/pasting some text from Word would save incorrectly, and thus the RTF being created was invalid and was losing some formatting info.
- Windows
- Fixed bug#18612: unsetting column text on addition of a new column we set with an empty text when there is no previous column text set, this prevents a side effect of unsetting a text mask on the wel list view control which doesn't seem to like being reset back when a new column is replacing it when the text mask actually is set.
- Fixed a crash when selecting text in a EV_RICH_TEXT widget.
EiffelStudio 7.3
Improvements
- Added {EV_PIXEL_BUFFER}.stretched which gives you a stretched version of an EV_PIXEL_BUFFER. The quality of the stretched image is much better than the previous implementation of EV_PIXMAP for Windows. On Unix it is the same quality as EV_PIXMAP.
- Improved stretching of EV_PIXMAP on Windows by using the Color on Color stretching mode of the Win32 API StretchBlt.
Bug fixes
- Platform Independent
- Fixed inconsistencies in maximize/restore window behavior between Windows and Gtk platforms.
- Fixed {EV_GRID_COLUMN}.required_width_of_item_span to only take into account visible item.
- Windows
- Fixed a resizing bug when you have a vertical/horizontal box with a minimum size set. If one of the items has a minimum size larger than its parent, then in some circumstances the child will be shrunk beyond its minimum size causing some visual glitches.
EiffelStudio 7.1
New
- Added experimental GTK3 support with HTML5 backend.
- Added SCOOP compatibility.
Improvements
- Added a hint facility for the height of the drop down in a combo box. Currently the hint is only followed on Windows.
- Improved keyboard navigation of EV_GRID's including tab handling of activatable grid items.
- Improved keyboard activation/settings for certain type of grid items.
- Improved latency of asynchronous agents calling through do_once_on_idle when adding from another thread.
Bug fixes
- Platform Independent
- Fixed problems when keyboard navigating in EV_GRID's when hidden columns are present.
- Windows
- Added support for high resolution wheel mice.
- Fixed a potential crash when using an EV_FIXED if resizing causes some redraw operations.
- Fixed an issue where the pick and drop lines would disappear after performing an Alt+Tab to switch between applications.
- Made sure colors are not shared between a widget and the original color object used to set the color of the widget.
- GTK
- Fixed a bug (PR#18082). The fix ensures that in cases in which a descendant of EV_TEXTABLE contains pixmaps but no text, the pixmaps are properly centered.
- Fixed internationalization handling for keyboard input.
EiffelStudio 7.0
Improvements
- Added multi-monitor functionality to EV_SCREEN.
- Optimized communication between worker thread and gui thread in {EV_APPLICATION}.do_once_on_idle.
Bug fixes
- Platform Independent
- Improved multi-monitor handling for EV_GRID item activation popups.
- Windows
- Fixed rendering of activate button in dialogs when theming is enabled.
- GTK
- Fixed bug in
set_item_size
for EV_FIXED and EV_VIEWPORT where sometimes item would not shrink if set when displayed.
- Fixed bug in
EiffelStudio 6.8
Improvements
- Allowed setting the text of a combo box that has been disabled.
- Resize actions are now called after a container has completed its resizing.
- On Windows, increased the splitter size to make it more visible and easier to grab.
- The API now accepts READABLE_STRING_GENERAL as input for strings, which let you accept immutable strings without conversions.
Bug fixes
- Platform Independent
- Fixed incorrect drawing of connector line for root tree nodes in an EV_GRID.
- Windows
- Improved resizing on Windows with deeply nested windows that would not properly resize.
- Use the proper default font to follow the current active theme.
- Fixed a bug where terminating a pick and drop and moving your mouse quickly could result in a drop to a different widget than the one where pick and drop was terminated via the right click.
EiffelStudio 6.7
Improvements
- Optimized integration with EiffelGraph library for improved projection speed and efficiency
Bug fixes
- Platform Independent
- Fixed various catcalls at runtime.
- Unix
- Fixed an initialization issue due to recent changes in the GTK API.
- Windows
- Fixed an issue with EV_TREE, EV_LIST, EV_HEADER, EV_TOOL_BAR and EV_MULTI_COLUMN_LIST where setting a pebble on the control (not just the item) would allow pick and drop but the line drawn was restricted to the control.
EiffelStudio 6.6
Improvements
- Optimized integration with EiffelGraph library for improved projection speed and efficiency
Bug fixes
- Platform Independent
- Fixed multi-threading dead-lock problem when extending idle actions whilst blocking the main thread with a mutex via an idle action.
EiffelStudio 6.5
Improvements
- Improved the pick and drop mechanism on Windows platforms to not use the
wel_hook.dll
. The visible change is that when the cursor is outside the vision2 application its shape changes depending on what is beneath.
Bug fixes
- Platform Independent
- Fixed potential crash with tab navigation code when a key press was sent to a widget that is in the process of being unparented.
EiffelStudio 6.4
As part of the void-safety conversion for EiffelStudio 6.4, EiffelVision 2 was converted to a void-safe library (currently in experimental mode only) and no changes were made to the existing library. To use the void-safe library, some areas may need to be rewritten, these changes are described here
Void-safety Interface modifications
- EV_ANY
- Added 'create_interface_objects' so that attached types may be created before the bridge pattern is set, these attached types are then initialized via 'initialize
EiffelStudio 6.3
Interface modifications
- EV_APPLICATION
- Added 'add_idle_action_kamikaze' as a synonym for 'do_once_on_idle' as this matches better with 'add_idle_action
Bug Fixes
- Platform Independent
- EV_GRID
- Optimized rendering of items during addition/removal of large number of rows/items.
- Fixed item selection handling to correctly handle the Alt key
- Fixed certain graphical glitches and a crash when inserting new subrows in to existing structures
- Optimized 'remove_rows' to not redraw the grid 'during' each call, now scrollbars are updated on idle
- EV_GRID
- Windows
- EV_ACCELERATOR
- Reimplemented accelerator handling so that they work with dialog windows.
- EV_ACCELERATOR
- Solaris/Linux
- EV_PIXEL_BUFFER
- Now correctly resetting item data after creation, before pixel buffer memory was random
- Fixed 'draw_pixel_buffer' to correctly composite the data instead of blindly copying it over.
- EV_DRAWABLE
- Optimized clipping to prevent overdraw when blitting pixmaps offscreen.
- EV_PIXEL_BUFFER
EiffelStudio 6.2
Interface modifications
- EV_WINDOW - Added hide actions.
Bug fixes
- Platform independent
- EV_GRID
- Fixed crashes when rendering child tree nodes
- EV_GRID
EiffelStudio 6.1
Interface modifications
- EV_APPLICATION - Added 'is_display_remote' for determining whether the graphical display is on the same machine as the running system.
- EV_POINTER_STYLE_CONSTANTS - Added hyperlink_cursor constant so that hyperlink cursors may be used in applications
- EV_POINTER_STYLE - Now pointer style objects may be twinned correctly to match the capability of pixmaps and cursor objects.
- EV_DRAWABLE - Added 'draw_sub_pixel_buffer' so that pixel buffer data may be rendered to a drawable.
- EV_PIXEL_BUFFER - Added 'draw_pixel_buffer_with_x_y'.
- EV_STOCK_PIXMAPS - Now pixel buffers are used for stock icons; this allows for alpha transparency information to be retained.
Bug fixes
- Platform independent
- EV_GRID
- Fixed certain crashes when recomputing offsets
- EV_GRID
- Windows
- EV_STOCK_PIXMAPS
- Now alpha information is correctly extracted for stock icons
- EV_STOCK_PIXMAPS
- Linux/Solaris
- EV_COMBO_BOX
- Fixed calling of change_actions when items are selected via the drop down
- EV_COMBO_BOX
- EV_POINTER_STYLE
- Fixed issue when converting to a cursor object then reverting back would render a white square instead of the requested cursor
- EV_WINDOW
- Fixed issues when calling disable/enable user resize in certain states
EiffelStudio 6.0
Interface modifications
- EV_PICK_AND_DROPABLE - Added context menu capabilities with 'set_configurable_target_menu_mode', 'set_configurable_target_menu_handler' and 'show_configurable_target_menu' that can be used to override the existing Pick and Drop mechanism.
- EV_ACTION_SEQUENCE - Now event_data is defined with named tuples for easier reading of the action sequence parameters.
- EV_APPLICATION_ACTION_SEQUENCES
- Added 'file_drop_actions' for OS based file drag and drop from exterior applications to a EiffelVision 2 application.
- Made 'idle_actions' obsolete as it is not thread-safe
- Now a full garbage collection occurs if the application has been idle for 30 seconds
- EV_APPLICATION
- Added 'transport_in_progress' for querying if a pebble transport is currently taking place.
- Added caps_lock_on for querying if the caps lock key is currently toggled
-
process_events
will now call idle actions when no more events are left in the pending queue
- EV_FONT - Added 'line_height' to retrieve an appropriate text editor line height in pixels for a font.
- EV_PIXEL_BUFFER - Added conversion to/from EV_PIXMAP and added 'save_to_named_file' for saving buffer to disk.
- EV_POINTER_STYLE_CONSTANTS - Added header_sizewe cursor
- EV_FIXED - Added extend_with_size_and_position and set_with_size_and_position for flicker free update of fixed children.
- EV_GRID - Added
visible_row_count
for querying the number of currently visible rows. - EV_TEXT_FIELD - Added inheritance from EV_TEXT_ALIGNABLE
- EV_POPUP_WINDOW - Added 'make_with_shadow' creation procedure to create a popup window with an alpha shadow (on platforms that support it).
Bug fixes
- Platform independent
- EV_GRID
- Fixed refresh issues and certain crashes when removing items from grid
- Fixed navigation and selection handling for trees
- EV_GRID
- EV_PICK_AND_DROPABLE - Fixed 'memory leak' when calling 'pebble_function'.
- Windows
- Raised compatibility bar to Windows 2000 or greater. No more support for Windows 98 or NT 4.0.
- EV_DIALOG
- Fixed resizing bug that led to a difference in behavior from regular EV_WINDOW descendents
- Corrected calling of cancel actions when closing via the Cross which previously was broken for modeless and modal dialogs
- EV_PIXMAP
- Now correctly copying all agents over when the pixmap implementation internally changes state, previously some agents were being lost after certain operations on a pixmap
- Now mask is correctly queried when saving pixmap
- Linux/Solaris
- EV_ACCELERATOR - Reimplemented accelerator implementation so that it works with all key combinations that were previously being unprocessed by gtk
- Completely reimplemented and optimized event handling for faster response, scaled down use of agents for event connection for decreased memory consumption
EiffelStudio 5.7
Interface modifications
- STRING_GENERAL - All string operations now take STRING_GENERAL instead of STRING, this allows for mixing and matching of 8 and 32-bit string objects and allows for 32bit Unicode values, the return value is always STRING_32
- EV_APPLICATION
- Added action sequences for querying global user events such as pointer clicks and motion
- EiffelVision 2 is now thread-aware with the addition of thread-safe 'add_idle_action' and 'do_once_on_idle' that allow threads to add agents to update the main GUI thread in a safe manner
- EV_POINTER_STYLE - Added new pointer style class for setting the style of the mouse pointer, EV_CURSOR will be made obsolete, in the future animated cursors and transparency will be available
- EV_PIXEL_BUFFER - New class for loading/querying and setting RGBA values from disk
- EV_FIXED - Now item positions may be set to negative values within the fixed widget
- EV_BITMAP - New class for setting 1 bit masks on EV_PIXMAP via set_mask
- EV_TEXT - Added 'scroll_to_end' to scroll down so that the last line is visible
- EV_WIDGET
- Added 'refresh_now' that allows for immediate redraw of a widget without having to wait for the event loop to repaint it. A useful example of this is when calling 'set_text' on EV_LABEL during heavy computation.
- Added ability to ignore the default key action on widgets.
- EV_GRID
- Changed semantic of
move_row
andmove_rows
so that destination position is now an insertion index before a row instead of placing as the row index itself. This allows for easier insertion of rows. Any code using these features will need to be rechecked as this is a breaking change for rows that are moved down the grid - Altered
move_rows
so that it will now unparent the top level nodes from the first row being moved whilst keeping any subtree structure - Added
move_rows_to_parent
that allows moving a block of parented rows from one parent to another - Added
insert_new_rows
andinsert_new_rows_parented
which permit you to add insert multiple rows at once. This is far quicker than adding rows individually. - Added
remove_rows
which permits you to remove multiple rows at once. This is far quicker than removing each row individually. - Fixed
enable_capture
and disable_capture' which previously captured an internally hidden component of the grid, so no events were ever received during capture. - Previously,
set_default_colors
did not work. - Fixed bug in
pointer_enter_actions
andpointer_leave_actions
of EV_GRID_ITEM which were not always fired when the mouse pointer entered or left the grid. - Corrected
not_row_height_variable_and_vertical_scrolling_per_pixel
precondition ofenable_partial_dynamic_content
. - Fixed bug which caused an internal exception within the grid when
is_tree_enabled
andis_content_partially_dynamic
. - Strengthened preconditions of
insert_new_row_parented
to prevent you inserting a new row at an index within a subtree structure of one of the existing subrows, as in that case, it is impossible for the parent to be the desired row. - Added capability to hide rows in the grid
- Added ability for locking the position of rows and columns in the grid
- Changed semantic of
- EV_GRID_ROW - Added
insert_subrows
for the quick addition of multiple subrows at once. - EV_WINDOW - Added
is_border_enabled
,enable_border
anddisable_border
. This lets you turn on/off the border as required. - EV_HEADER_ITEM - Added
user_can_resize
which enables you to prevent a user from resizing the item. Also addedminimum_width
andmaximum_width
which permit you to restrict the resizing of the item within a particular range. - EV_MESSAGE_DIALOG - All message dialogs now use their associated message icon as the icon pixmap displayed in the title bar, instead of the standard EiffelVision 2 icon.
- EV_DYNAMIC_TREE_ITEM - The
subtree_function
is now only executed when you expand the item. In the previous version, querying the contents of the item caused the subtree function to be executed, filling the children. - EV_COMBO_BOX - Added
is_list_shown
,list_hidden_actions
and renameddrop_down_actions
tolist_shown_actions
. - EV_APPLICATION - Added
pointer_motion_actions
,pointer_button_press_actions
,pointer_button_release_actions
,pointer_double_press_actions
,mouse_wheel_actions
,key_press_actions
,key_press_string_actions
andkey_release_actions
. Each of these action sequences pass the applicable widget as part of the event data.
Bug fixes
- Platform independent
- EV_GRID - Fixed refresh issues and certain crashes when removing items from grid
- Windows
- EV_WINDOW - The default state is now
user_can_resize
. Although this was previously specified withinis_in_default_state
, the window was not actually resizeable. - EV_DIALOG
- Calling
enable_user_resize
ordisable_user_resize
on a dialog that is shown relative to another window no longer looses the relative state of the dialog. - Fixed failure of a "check" statement within EiffelVision when showing a dialog with a
default_cancel_button
relative or modal to another window.
- Calling
- EV_WINDOW - The default state is now
- EV_FONT_DIALOG - Fixed issue where displayed font did not take into account font specified through call to
set_font
. - EV_RICH_TEXT - Fixed calling of
change_actions
which were never called in the previous version. - EV_PIXMAP - If a pixmap was parented directly within a container and Windows XP themes were enabled, the background theme of the parent container was not applied to the pixmap. This was especially noticeable when using EV_NOTEBOOK as a parent container.
- EV_WIDGET - Fixed bug in theme handling on Windows XP. Previously, any widgets that were created before the first window was created did not draw correctly when displayed.
- EV_COMBO_BOX - Fixed bug in
key_press_actions
which were called twice when you pressed the up or down arrow keys. - EV_TITLED_WINDOW
-
title
was returningVoid
if you had not explicitly set atitle
. - Fixed raise to work when process is not in the foreground, the window will now flash in the window selector
-
- EV_MENU - A menu with an ampersand (i.e. menu.set_text ("Test && Verify")) could be truncated when displayed (i.e. the
y
could be missing). - EV_PIXMAP - Fixed a memory corruption while loading PNG images.
- Fixed resizing issue which would happen if too many widgets are nested in each other, those nested widgets would not resize properly.
- Gtk
- EV_DIALOG - Fixed modal dialogs so that they behave the same as on Windows so that show_modal_to_window is indeed only modal to the parent window
- - Mouse events now only go to the widget that the mouse is currently interacting with
- EV_FONT - Fixed bug where font names were being matched on substring, meaning that Sans would match with San Serif
- EV_TEXT - Fixed and optimized calls relating to display lines versus actual lines
- - Fixed potential instability due to signal marshal calls being made during object dispose
- - Completely overhauled event handling implementation to use less resources and be much more optimal
- EV_POPUP_WINDOWCompletely rewrote popup window implementation to be not dependent on the window manager, this means that they will work in all scenarios with WM intervention
- EV_ACCELERATOR - Fixed crashes caused by certain accelerator combinations
- EV_TOOL_BAR_BUTTON - Toolbar buttons are now accepted as Pick and Drop targets
EiffelStudio 5.6
Interface modifications
- EV_POPUP_WINDOW - A new window type which inherits EV_WINDOW with two differences: It does not display a border of any sorts and is not displayed in the task bar. This is especially useful for simulating tooltips and other such pop-ups.
- EV_APPLICATION - Added 'uncaught_exception_actions' which is called whenever an action sequence called from the underlying toolkit fails to deal with any exceptions raised.
- EV_CLIPBOARD - Added 'has_text' so that the clipboard can be queried without retrieving the entire contents.
- EV_CHECKABLE_TREE - A new widget that inherits EV_TREE, providing similar functionality but for each item contained a check box is displayed.
- EV_NOTEBOOK
- Added
pointed_tab_index
which returns the index of the tab beneath the mouse pointer or 0 if none. - Added EV_NOTEBOOK_TAB which may be queried via the new query
item_tab
. The object represented by this new class provides the ability to set both the text and a pixmap for the tab item. - Now inherits EV_ITEM_PIXMAP_SCALER as the tabs support pixmaps through the use of EV_NOTEBOOK_TAB.
- Added
- EV_COMBO_BOX - Added
drop_down_actions
, fired as the list is dropped down which permits dynamic filling of the combo box as its contents are displayed. - EV_WIDGET - Removed postcondition
has_focus
fromset_focus
since in most cases it does not hold. Indeed between the time you set the focus and the time you check if you still have the focus something could have happen that would remove the focus. - EV_PIXMAP - Added
sub_pixmap
, this allows a pixmap to be created from a region of another - EV_RICH_TEXT - Corrected postcondition of
buffered_format
which restricted the end position totext_length
instead oftext_length
+ 1. - EV_FILE_OPEN_DIALOG - Added features for retrieving multiple file names. The following additional features are now available: 'enable_multiple_selection',
disable_multiple_selection
,multiple_selection_enabled
andfile_names
. - EV_TEXT_COMPONENT - Removed
is_editable
precondition ofset_caret_position
.
Bug fixes
- Platform independent
- EV_DIALOG_I - Fixed consistency of
default_push_button
, before we could get some assertions violations from the implementation classes. - EV_ANY - Added protection for multiple calls of
destroy
which previously caused crashes in some situations, nowdestroy
calls asafe_destroy
intermediary which checks if the implementation has not already been destroyed - EV_GAUGE - Fixed bug in
make_with_value_range
which did not adjustvalue
tolower
, thereby putting the gauge in an invalid state.
- EV_DIALOG_I - Fixed consistency of
- Windows
- Fixed resizing issue: when a widget is inserted in a hidden window and that the minimum size of the window does not change, the widget would not appear on the window when shown. One had to manually resize the window to make it appear. Now it will appear properly.
- Fixed a crash which could occur when using the tab or arrows keys to navigate between the primitive of a window. It would happen when trying to set the focus on a widget which was previously parented but is not anymore.
- Improved appearance of applications running on Windows XP with manifest files.
- EV_RADIO_BUTTON - Enabled better navigation between radio buttons of a group using the arrow keys.
- EV_SPIN_BUTTON
- When it gets the focus, we set the focus to the associated text field. Before one would loose the focus until one use the mouse to set it to the text field part.
- Fixed bug which restricted the maximum values permitted to approx. 16,000. Attempting to manipulate the spin button with values greater than this caused precondition violations internally.
- EV_SCREEN
-
widget_at_position
returns an instance of EV_COMBO_BOX when cursor is on top of the text part of the combo box, before it would return Void. -
set_pointer_position
was not setting the position accurately and it may have actually been set to one of the adjacent positions.
-
- EV_COMBO_BOX
-
focus_out_actions
are only called once when loosing focus. Before they would be called twice and even called when the combo box was getting the focus. - Fixed
has_focus
to return True when either the combo or the text field when it exists has the focus. - Fixed call on Void target when calling
set_foreground_color
on a displayed combo box which is not editable. - Fixed invariant violation with a non editable combo box.
- Fixed
caret_position
which was failing if you attempted to set a caret position to a value greater than approx 65,000. - Fixed
set_focus
which failed if the combo box was non-editable. - Fixed handling of escape and enter keys while list was dropped down. If the combo box was contained within a dialog, the default cancel and default push button actions were fired as a result of pressing these keys. These keys are no longer propagated to the dialog in this fashion.
-
- EV_MULTI_COLUMN_LIST - Calling
column_width
after callingresize_column_to_content
did not return the correct result but instead the previously set column width. - EV_NOTEBOOK
- Fixed resizing issue of notebook when it is included in a hidden pane of another notebook, resulting in an assertion violation in the resizing code.
- Fixed class invariant which failed when calling
destroy
.
- EV_WINDOW
- Fixed
screen_x
andscreen_y
so that they return the same value asx_position
andy_position
. - Fixed issue where
move_actions
were called with incorrect positions (before the given positions were the one from the child of the window, not the window itself).
- Fixed
- EV_DIALOG
- Calling
show
, moving the window and then subsequently callingshow_relative_to_window
orshow_modal_to_window
caused the dialog to move from its current position. Now the window no longer moves which mirrors the behavior in the opposite case whereshow_relative_to_window
orshow_modal_to_window
is called beforeshow
. - Fixed bug which caused processing of particular keys in widgets contained within the dialog to be processed by the dialog preventing the
key_press_actions
from being fired and causing miscellaneous keyboard navigational issues. - Proper handling of
remove_default_push_button
andset_default_push_button
. Before the internal state would be messed up, resulting in calling theselect_actions
of the thedefault_push_button
even though thedefault_push_button
did not have focus. - Better navigation using keys
- Fixed bug where modal and modeless dialogs were not centered to parent
- Calling
- EV_TREE_NODE - Fixed bug which caused a crash if you performed the following: pruned a node from it's parent, pruned an empty node from this just pruned node and then attempted to insert a node within the empty node.
- EV_DIRECTORY_DIALOG - Fixed bug in which the dialog always reported that "ok" has been selected even if the "cancel" button had been selected. This occurred if the dialog had been shown more than once with "ok" already selected.
- EV_PIXMAP
- Fixed color displayed around a pixmap while parented in a container. Previously, gray was always displayed but now we use the
background_color
of theparent
. - Fixed masking blitting in draw_sub_pixmap. Previously the mask wasn't being blitted correctly discoloring the source image
- Fixed mask handling with PNG loading. Previously if the source image pixels under the mask were not black then masking for icons and cursors didnt work correctly, now any color can be used underneath the mask and it will still be masked correctly
- Fixed color displayed around a pixmap while parented in a container. Previously, gray was always displayed but now we use the
- EV_TOOL_BAR
- Fixed
is_show_requested
which was still returningTrue
after a call tohide
. - Improved resizing of tool bar buttons. A tool bar button with a text and no associated pixmap used to display an empty area where the pixmap would be displayed if set. Now, in this case, the button is just large enough to display its text.
- Fixed
- EV_FONT - Fixed bug in
is_equal
which occasionally failed due to rounding errors betweenheight
andheight_in_points
. Now,is_equal
comparesheight_in_points
for the font which is more accurate and prevents this issue. - EV_APPLICATION -
cancel_actions
were not always called when they should have been. If you cancelled a pick and drop by right clicking on a target that does not accept thepebble
, thecancel_actions
were not fired. - EV_RICH_TEXT
- Fixed bug in
buffered_format
which corrupted the current text upon callingflush_buffer
if the text contained any RTF reserved characters such as '/', '{' or '}'. - Fixed
set_background_color
which was not changing the background color - Fixed bug in
disable_word_wrapping
which had a side effect that limited the maximum number of characters to 64000.
- Fixed bug in
- EV_TOOL_BAR_BUTTON - Fixed bug in handling of enabled/disabled state during a pick and drop transport. The pick and drop mechanism disables tool bar buttons automatically that are not valid targets. If you called
enable_sensitive
ordisable_sensitive
during a pick and drop, this state was not reflected at the end of the pick and drop and the buttons were always restored to their original state. Now the buttons are restored to their last set state. - EV_TITLED_WINDOW - Fixed issue with
raise
where in addition of bringing the window to the front it was changing the previously focused widget within that window. Now it preserves the previously focused widget. - EV_PRIMITIVE - Fixed bug which affected all primitives that hold items. Calling
destroy
on the primitive and then callingdestroy
on one of the items caused precondition violations internally. The bug was that the call todestroy
on the primitive did not callwipe_out
to remove all of the contents and the item was still attempting to access itsparent
which should have beenVoid
. - EV_WIDGET
- Fixed two bugs with
key_press_string_actions
. The first was that the action sequence was fired when Escape or Backspace was pressed. As these are not displayable characters, thekey_press_string_actions
are no longer fired for these keys. The second is that pressing Enter was passing the the string "%R" which is the Windows specific newline character. We now pass "%N" when the Enter key is pressed. - Fixed bug in
pointer_motion_actions
. In some uncommon situations, it was possible to receive the motion event multiple times with the same position. - The
key_press_string_actions
are no longer fired by the "delete" key ( ASCII 127).
- Fixed two bugs with
- EV_TEXT - Fixed bug where
caret_position
was returning an incorrect value if it the text had word wrapping enabled and one or more lines in the text were currently word wrapped. - EV_FONT_DIALOG - Fixed bug where
name
offont
returned was incorrect. - EV_SPLIT_AREA - Split areas now have a completely flat appearance.
- Gtk
- EV_CURSOR - Now the default X-Cursors are used where applicable instead of pixmapped representations of them, this allows for animated cursors if available on the X-server
- EV_VIEWPORT - Fixed issue where offsets where not being updated right away so querying back to the viewport from an expose caused by the viewport for the values would be incorrect
- EV_TEXTABLE - Now UTF8 strings from different language locales are displayed correctly and not cut-off
- EV_CLIPBOARD - Now UTF8 strings from different language locales are handled correctly for copying and pasting
- EV_DRAWING_AREA -
- Fixed
flush
to instantly call any pending expose events - Fixed issue where drawing area was not being focused when clicked upon by default
- Fixed
- EV_FONT
- Fixed memory leaks in font lookup
- Now all resources get freed on disposal of font
- Now precalculating
ascent
anddescent
to improve drawing performance - Added better default font handling, now if the default font gets passed in, it will be treated as such by the Gtk theme engine
- EV_TOOL_BAR_BUTTON - Improve appearance of text and pixmap when
disable_vertical_button_style
is called - EV_FONTABLE - Improved font handling with theme manager, all default fonts now relate to the Application font chosen from the Gtk theme manager
- EV_DRAWABLE
- Corrected font placement with
draw_text
using fonts of the same height that have varying ascent values - Corrected
draw_arc
to handle all radian angles for both start_angle and aperture values - Fixed mask handling for
draw_sub_pixmap
to work with non-zero 'area' coordinates
- Corrected font placement with
- EV_MULTI_COLUMN_LIST - Fixed memory leak when setting string values
- EV_TREE_NODE
- Fixed
remove_pixmap
to remove pixmap from tree model - Fixed crash when removing nodes from parent nodes not present in a tree widget
- Fixed
- EV_RICH_TEXT
- Now
paste
uses the EiffelVision 2 clipboard directly and so all clipboard assertions are fulfilled - Fixed
buffered_format
to not wipe out the text buffer of the widget and therefore stop other EV_TEXT features from functioning correctly - Now
buffered_append
doesn't wipe out the screen contents of the rich text control
- Now
- EV_ACCELERATOR - Now the key accelerator is checked if valid before proceeding, in some circumstances when a key is not present in the key mapping table adding an accelerator would crash the system, now if the accelerator is not valid for the current key mapping then nothing is done
- EV_WINDOW
- Now setting and querying focus works in all circumstances with all window types
- EV_PIXMAP - Improved pixmap 'stretch' for smaller images
- EV_WIDGET
- Optimized motion event handling so that current motion events only get requested when the previous one has been processed
- Fixed theme managed handling in all widgets so that fonts when changed outside of the application by the theme manager get reflected in the EiffelVision 2 application
- EV_DIALOG
- Fixed bug where modal and modeless dialogs were not centered to parent
- EV_FRAME - Corrected issue where changing alignment of text was resetting the vertical alignment
- EV_COMBO_BOX - Now the drop down box doesn't fire focus out actions when shown
EiffelStudio 5.5
Interface modifications
- EV_TEXT
- Weakened a number of preconditions that required a non empty final line, which was unnecessary. Removed the obsolete feature
put_new_line
and madelast_line_not_empty
obsolete as it is unnecessary and can be queried vialine
. - Added
line_number_from_position
which returns the line on which a particular caret position resides.
- Weakened a number of preconditions that required a non empty final line, which was unnecessary. Removed the obsolete feature
- EV_ACTIVE_LIST - New class added which replaces all occurrences of ACTIVE_LIST within the interface. This prevents the EiffelVision implementation from being "unhooked" by user modification through the interface. The class is completely backwards compatible, and does not require any modifications to your code. Classes such as EV_ACCELERATOR_LIST and EV_FONT incorporate this change.
- EV_DOCKABLE_SOURCE - Added features
is_external_docking_relative
,enable_external_docking_relative
anddisable_external_docking_relative
. This permits you to dock a source to an EV_DOCKABLE_DIALOG that is not displayed relative to the original top window. - EV_RICH_TEXT - New class, providing a text control with support for character formatting and colors on a character by character basis. The following supporting classes have been added for use with EV_RICH_TEXT: EV_CHARACTER_FORMAT, EV_CHARACTER_FORMAT_EFFECTS, EV_PARAGRAPH_FORMAT, EV_CHARACTER_FORMAT_RANGE_INFORMATION, EV_PARAGRAPH_FORMAT_RANGE_INFORMATION and EV_PARAGRAPH_CONSTANTS.
- EV_ENVIRONMENT - Added
fonts
which returns a list of all fonts available on the system. - EV_APPLICATION - Added
captured_widget
which returns the EV_WIDGET currently captured in the system, orVoid
if none. - EV_SPLIT_AREA - Added
splitter_width
which returns the width of the splitter in pixels. - EV_ANY_HANDLER - This is the only class to which
default_create
from EV_ANY is supposed to be exported. However, particular descendents were exportingdefault_create
to ANY instead. This has now been fixed. - EV_MESSAGE_DIALOG -
make_with_text_and_actions
has now been added to the list of creation procedures. - EV_SCREEN - Added
horizontal_resolution
andvertical_resolution
which return the number of pixels per inch. - EV_FILE_DIALOG - Added support for multiple file extensions through the addition of
filters
which provides support for setting both a filter and an associated comment. The existing featuresfilter
andset_filter
have been made obsolete. - EV_FONT
- Modified return type of
string_size
from TUPLE [INTEGER, INTEGER] to TUPLE [INTEGER, INTEGER, INTEGER, INTEGER]. This does not break any existing code, but provides additionalleft_offset
andright_offset
queries (items 3, 4). Items 1, 2 still return the width and height of the string, but this is only the dimensions to be used when placing multiple strings next to each other. Some characters on more exotic fonts may still extend past this boundary, and the rectangle that fully encloses the string is given by adding the left and right offsets to the width. - Added
height_in_points
andset_height_in_points
for setting the height of a font in points (1/72 of an inch). This may be used to ensure that your fonts occupy the same height on screens with varying resolutions.
- Modified return type of
Bug fixes
- Platform independent
- EV_DRAWABLE -
draw_text
anddraw_text_top_left
now both support text containing new line characters. - EV_APPLICATION -
focused_widget
had a side effect which may modify the index of some containers. - EV_DYNAMIC_TREE_ITEM - fixed
count
which was not executing the subtree function as necessary when called. - EV_TREE - Fixed bug in
has_recursively
which failed if there were one or more dynamic tree items contained. - EV_MULTI_COLUMN_LIST - Fixed bug in
set_column_alignments
which crashed if you called it with an empty list after having previously called it with a non empty list. - EV_FIGURE_TEXT - Fixed bounding size issues which would cause the
width
andheight
to be returned incorrectly, causing them to be not correctly cleared when moved in a figure world. - EV_FIGURE_GROUP - Fixed both
append
andmake_from_array
which were not setting thegroup
of each item inserted.
- EV_DRAWABLE -
- Windows
- EV_WINDOW
-
move_actions
was always passing positive values for the x and y coordinates of the window, even if they should have been negative. - Showing two or more dialogs relative to a window and then hiding the focused relative dialog could cause the window to move being the next window in the Z order. This has now been fixed.
-
- EV_WINDOW
- EV_FONT
- Fixed bug when using
preferred_families
after creating a font viamake_with_values
. The family that was specified was previously ignored. - Fixed bug in
copy
which in certain cases could lead to a copied font not exhibiting the typeface as the original, even though no assertions were violated.
- Fixed bug when using
- EV_SCROLL_BAR - Fixed handling of scroll bars with upper values greater than 32,000. Previously, dragging the bar of a scroll bar past this limit, corrupted the position of the bar and the
value
. - EV_TEXT
- Corrected
last_position_from_line_number
which was returning an incorrect position when there were multiple lines of text contained, and you queried the final line. - Modified
insert_text
so that the control is no longer scrolled to the top as a result. The original position is now maintained wherever possible. - Corrected handling of selection for caret positions greater than 64,000 characters. The following features were broken when using caret positions greater than 64,000:
caret_position
,has_selection
,selection_start
andselection_end
- Corrected
- EV_SPIN_BUTTON
- Corrected positioning in parent container. In many situations, the spin button mis-behaved and would be moved to the 0x0 pixel position in the parent.
- Fixed tooltips which were never displayed.
- EV_LIST_ITEM - Setting a pixmap to an item that was already displayed in a list and had a text would cause the end of the text to be cut off. This is now fixed.
- EV_COMBO_BOX - Fixed tooltips which were never displayed.
- EV_TOOL_BAR - Fixed a number of serious GDI leaks, the worst of which occurred when items that had a pixmap were removed from a tool bar.
- EV_PROGRESS_BAR - Fixed bug which was limiting values in the range 0 to 65535.
- EV_TEXT_FIELD - calling
set_font
now updates theminimum_height
of the text field so that it is large enough to completely display the font.
- Gtk
- GTK 2.4 EiffelVision 2 has been completely upgraded from gtk 1.2 to version 2.4 and provides completely new implementations for EV_LIST, EV_COMBO_BOX, EV_FILE_DIALOG, EV_MULTI_COLUMN_LIST, EV_CLIPBOARD, EV_MENU, EV_TREE, EV_FONT, EV_PIXMAP using the latest gtk widget set
- EV_WIDGET Fixed a screen positioning for all widgets
- EV_GAUGE Fixed bounds setting
- EV_DIALOG Now key presses work whilst in Pick and Drop
- EV_WIDGET Now motion events pass x and y coordinates relative to the captured widget
EiffelStudio 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
andset_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
anddisable_vertical_button_style
. The default style for buttons is vertical and was the only style previously available, in which thepixmap
is displayed abovetext
. When vertical style is disabled, thepixmap
of a button will be displayed to the left of itstext
. - 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' andalign_text_right
. - EV_TREE_ITEM - Strengthened
is_expandable
so that it checksparent_tree
is not Void, this brings it into line with the preconditions ofexpand
. - EV_DYNAMIC_TREE_ITEM - Strengthened
is_expandable
to checkparent_tree
, in line with preconditions ofexpand
. Added "valid_operands" precondition toset_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 relevant postconditions. - EV_MENU - Tightened preconditions of
show
andshow_at
to ensure that the menu is not parented. - EV_TEXT Added
has_word_wrapping
,enable_word_wrapping
anddisable_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 behavior ishas_word_wrapping
as it was before these changes. - EV_TEXT_COMPONENT - Added
has_selection
precondition toselected_text
which requires thathas_selection
must be True for you to callselected_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 thattext
was the same object as the STRING passed as an argument. This was incorrect, astext
is cloned during the creation. - EV_WIDGET - Added
remove_real_target
which ensures thatreal_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 returnsTrue
if at least one printer is installed.
- Added
- EV_PRINT_CONTEXT - Added
horizontal_resolution
andvertical_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 byhorizontal_resolution
andvertical_resolution
in pixels. - EV_APPLICATION - Added
process_events_until_stopped
andstop_processing
, similar toprocess_events
, except the processing is executed untilstop_processing
is called. - EV_PRINT_PROJECTOR - Added
has_printer
check tomake_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
andset_scale_y_abs
now all have a precondition ensuring that you may only call them whilebeing_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
anddeny_cursor
are now available as queries. - EV_ABSTRACT_PICK_AND_DROPABLE -
set_accept_cursor
andset_deny_cursor
no longer acceptVoid
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 EiffelVision 2, 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 theparent
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 theResult
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
orinsert_text
whileis_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_DYNAMIC_TREE_ITEM - No longer crashes if your
- EV_CHECKABLE_LIST - Corrected postcondition of
checked_items
which was checkingselected_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 thefont
, which was not taken into account. Previously, the default font was always used. - EV_DYNAMIC_LIST - Fixed
retrieve_item_by_data
andretrieve_items_by_data
which were always performing object comparison, even when reference comparison was selected by passingFalse
as the second argument. - EV_TREE_NODE_LIST - Fixed
retrieve_item_recursively_by_data
andretrieve_items_recursively_by_data
which were always performing object comparison, even when reference comparison was selected by passingFalse
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 ifstart_pos
was greater thanend_pos
. - EV_PIXMAP
-
expose_actions
previously had a feature contained related to the implementation, and callingwipe_out
onexpose_actions
would stop the image from being redrawn. There are now no side effects related toexpose_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, usingcopy
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 transparent color, using
set_with_named_file
. The background would be garbled and partially black.
-
- EV_TEXT_COMPONENT - fixed bug in
- EV_LIST
- Calling
disable_sensitive
when already non sensitive would loose the original selection, and callingenable_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
- Calling
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 toselected_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, theselect_actions
of thedefault_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 whosepebble
was generated by apebble_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
andset_background_color
which previously did nothing. - Fixed bug in selection. If during execution of the
select_actions
of an item contained, you calledenable_select
on another item within the combo box, subsequently selecting the originally selected item would no longer fire itsselect_actions
. -
enable_edit
anddisable_edit
were both causing the pixmaps of any items contained to be no longer displayed.
- Fixed
- 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
EiffelStudio 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
andrestore_actions
. - EV_TITLED_WINDOW
- You may now only call
maximize
andminimize
ifis_show_requested
. - When minimized,
is_displayed
now returns False.
- You may now only call
- 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
andmake_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 inheritance 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 toitem_at_position
. A call toitem
will now return the current item. - put - If you were using
put
, you must now replace this withput_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 inheritance 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 ofcount
inherited from EV_CONTAINER which returns the number of widgets currently contained. Previously, the featurewidget_count
was used to return the number of items, but this feature has now been made obsolete. Therefore, if you were previously usingcount
, replace this withrows
*columns
, and if you were usingwidget_count
, replace this with a call tocount
. - 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 oflinecount
has been updated to reflect this change. - EV_FILE_DIALOG Added "valid_file_name" precondition to
set_file_name
and a new featurevalid_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
andheight
which were always returning one less pixel than they should have.
- Corrected
- EV_WIDGET -
- 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 abackground_color
had been set, it was only used on lines containing text. Thebackground_color
is now correctly displayed throughout the whole control when notis_editable
. - Fixed
select_region
which was selecting an incorrect region starting on any line except the first, when thetext
spanned multiple lines. - Fixed
selection_start
andselection_end
which were incorrect when the selection was not completely contained on the first line. - Fixed
first_position_from_line_number
andlast_position_from_line_number
which were returning incorrect values when the text was wrapped. - Fixed
caret_position
andset_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_PIXMAP - Setting a tile with
- 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 canceled the dialog would previously crash a system, ifset_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
andset_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 behavior 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.
- Fixed a graphical glitch when using
- 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 theselect_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 behavior 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 - Canceling 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
andcurrent_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.
EiffelStudio 5.2
Interface modifications
- EV_TEXTABLE -
align_text_left
,align_text_right
andalign_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 ofparent
toold_parent
in EV_MENU_BAR has now been removed. - EV_VIEWPORT - added
set_item_width
,set_item_height
andset_item_size
. - EV_TABLE
- redefined
prunable
toTrue
and implementedprune
. - 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
anditem_column_position
.
- redefined
- EV_WIDGET - Changed type of
focus_in_actions
andfocus_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 EiffelVision 2 under .NET. The problem manifested with widgets that held items. - EV_FIGURE -
proximity_in_actions
andproximity_out_actions
are now obsolete. - EV_FONTABLE -
set_font
now sets a copy of the font internally. - EV_TREE -
ensure_item_visible
andhas_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 canceled, andpnd_motion_actions
fired while the pointer moves during a pick and drop. - EV_TREE_NODE_LIST
-
find_item_recursively_by_data
,has_recursively
andrecursive_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
andretrieve_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
andretrieve_items_by_data
. - EV_ITEM_LIST - Made
item_by_data
obsolete, as you should now useretrieve_item_by_data
added in EV_DYNAMIC_LIST. - EV_DIALOG - Added
is_relative
and definedis_modal
in this class, instead of inheriting it from EV_WINDOW.
Bug fixes
- Platform independent
- EV_FIGURE_POLYLINE - Fixed
start_angle
andend_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 theindex_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
.
- EV_FIGURE_POLYLINE - Fixed
- 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
andset_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 makeselected_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 throughselect_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
andpropagate_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 canceled. - 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_RADIO_BUTTON - The default minimum height after
- EV_TITLED_WINDOW - Fixed a GDI leak, manifesting when a window was destroyed.
- EV_DIALOG
- Fixed
is_modal
which was previously always returnedFalse
. - Fixed bug with
background_color
andforeground_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 callingshow
did not show it independently, but still modelessly. - Fixed bug with
show_actions
which would be wiped out if you calledshow_modal_to_window
and thenhide
. -
set_pixmap
will now actually display the pixmap, whereas before, no pixmap was displayed.
- Fixed
- 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
orset_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
beforelaunch
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
- Now default
EiffelStudio 5.1
Interface modifications
- EV_TEXTABLE and EV_TEXT_COMPONENT -
text
no longer returns Void when empty. - EV_WINDOW -
title
no longer returnsVoid
when empty. - EV_TOOLTIPABLE -
tooltip
no longer returnsVoid
when empty. If empty, no tooltip is displayed. - EV_TITLED_WINDOW -
icon_name
no longer returnsVoid
when empty. - EV_CLIPBOARD -
text
no longer returnsVoid
when empty. - EV_MESSAGE_DIALOG -
text
no longer returnsVoid
when empty. - EV_FILE_DIALOG -
file_name
no longer returnsVoid
when the "Cancel" button was pressed,Result
is empty instead. - EV_DIRECTORY_DIALOG -
directory
no longer returnsVoid when the "Cancel" button was pressed,
Result` is empty instead. - EV_CONTAINER - has three new features
set_background_pixmap
,background_pixmap
andremove_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 toprint_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 - separated
put
fromextend
. They were defined as synonyms, but have different behavior. - 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 forwidth
andheight
. This is also the default value forwidth
andheight
. - 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
andset_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. Useremove_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.
- EV_FIXED - Corrected
- 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.
- Ending a pick and drop on an EV_TOOL_BAR_BUTTON which has a non
- EV_RANGE - The
- 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
anddraw_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 EiffelVision 2), so no fixes from 5.0