Refactored the last remnants of bindings functionality within the IDE. Bindings are no longer displayed to you in the window editor -- instead, there is a nag message alerting you to how many bindings remain.
Non-literal enum values no longer throw a failed assertion when compiling.
Picture.Mask function now has an optional parameter called create, which by default is true. If this parameter is true then a mask is automatically created, otherwise the mask is returned, whether or not one already exists.
Function prototype:
Picture.Mask( create As Boolean = True ) As Picture
Code editors now remember the state of the Hide Empty Events preference, and are better about restoring state information when loading projects.
Introspection.TypeInfo has a new property: BaseType as TypeInfo This allows you to navigate the type hierarchy from child to parent.
Added a new keyword to the compiler: GetTypeInfo. This keyword allows you to get an Introspection.TypeInfo object from an object type. ie)
dim ti as Introspection.TypeInfo = GetTypeInfo( Dictionary )
The FileType set editor now allows you to add "common" file types to a type set.
"Attributes" is now a reserved keyword for the compiler.
New ConstructorInfo class lets you get information about constructors for a datatype. TypeInfo now has a GetConstructors method which returns an array of ConstructorInfo. If the TypeInfo represents a class, this array will contain constructors; otherwise, it will be empty. ConstructorInfo is a subclass of MemberInfo. It has a GetParameters method and a ReturnType property, like MethodInfo. It also has an Invoke method, which accepts an array of Variant parameter values and returns a new, initialized instance of the target class.
When editing a method's declaration in the code editor, the method names no longer autocomplete.
[Afx] Now properly compiling projects with resources (pictures, movies, etc.) for Linux
Debug Plugins functionality should now work on OS X again.
Debugger no longer crashing the debug application when viewing a variant that stores an array after stepping out of a method.
Using Ptr.Single and Ptr.Double with the same offset on both sides of an expression no longer causes spurious crashes and erroneous values.
The Associate File Types button in the preferences window now uses the MSI installer package information for re-associating file types.
Note that this change requires REALbasic to be installed via an installer in order for that feature to function properly (this change will only affect beta testers).
Calling VirtualVolume.CopyFileTo and MoveFileTo should no longer crash on the Mac.
The constants editor now displays its helper fields properly when guessing a constant's type for the first time.
REALLoadFrameworkMethod can now load framework functions that return an array (such as Split).
Can no longer erroneously add a window, menubar, toolbar or container control to a console application.
Introspection.TypeInfo.GetArrayRank no longer throws an unhandled exception when interrogating an array item.
Calling Array.Remove on an array of structures no longer corrupts the array.
Deemphasized:
RB3D
SpriteSurface
NotePlayer
Deprecated:
For removal in 2008r3
NewREALDatabaseOldFormat
TabPanel.Facing
DebugDumpObjects
ChasingArrows
LittleArrows
Old-style constructor naming convention (using the Class name instead of Constructor as the method's name).
For removal in 2008r4
ApplicationSupportFolder
DesktopFolder
DocumentsFolder
PreferencesFolder
SystemFolder
TemporaryFolder
[Afx] REALGetClassRef no longer failed in built executable when called properly from PluginEntry.
[Afx] You can use Val and other extension methods from within RBScript again. Broke in a1.
[Afx] Remote debugging now functional again.
[Afx] Can now tab (or arrow) through the PushButtons in MessageDialogs again
[Afx] Compiler no longer throws a failed assert in Expressions.cpp when GetTypeInfo is called with an illegal parameter value.
It is now possible to cancel the quitting of the IDE by choosing "Don't Save" in the "Save Changes?" dialog. This also fixes a related (unreported) issue where unsaved changes in the Database editor would get lost on quit.
Speed has been improved drastically for cases where many WeakRef instances refer to many different objects. If, however, there are many separate WeakRef instances pointing to the same object, speed will not increase.
IDE no longer throws a nil object exception if the project file resides on removable media that has been removed.
Rolled back a change from 2008r1 that allowed local declare libs to be a qualified constant. This is no longer allowed.
Removed the following deprecated items:
AppleMenuFolder
ControlPanelsFolder
ExtensionsFolder
StartupItemsFolder
ShutdownItemsFolder
FontsFolder
All of them have a sibling function in the SpecialFolder module which should be used instead.
EditFields on Windows now honor the alignment when assigning new text via the .Text property.
You can no longer instantiate an instance of SocketCore -- it now has a Protected constructor.
MethodInfo.Invoke's signature has changed. The base object is still a required parameter, but the array of parameters to pass to the object is now Optional. This change also affects ConstructorInfo.Invoke.
No longer throwing failed assertions when compiling properties and constants from a class which does not exist (such as might happen when a plugin isn't loaded properly).
Version control projects now save and restore compatibiblity flag settings.
Version control projects can now read in windows containing controls whose super is a namespace (like Module1.CustomPushbutton).
IDE no longer throws unhandled NilObjectExceptions when adding new controls to a window while the main project is locked.
Embedding a container control that's already been closed no longer throws a failed assertion. However, as with any control that's been closed, you cannot continue to use it -- so this operation will still fail (just not assert).
Duplicate enumeration declarations no longer throw failed assertions.
Array access now throws a NilObjectException when getting or setting a value, as well as calling one of the array object methods.
Can no longer import illegal item types into console applications (such as pictures or windows, etc).
In the debugger, the listbox columns are now resizeable when viewing the contents of a delegate.
When viewing the contents of a dictionary in the debugger, the columns are now resizeable. Furthermore, the index column has a more descriptive name.
When viewing the contents of a listbox in the debugger, the Text vs Tag popup menu is now appropriately sized. Also, the column text is more descriptive (stating Col 1 instead of just 1, for instance).
The New Subclass and New Implementor contextual menu commands (in the ProjectItem editor) now honor namespace containment.
Encodings.SystemDefault.InternetName no longer crashes on non-Macintosh systems.
Code editors (such as the IDE script editor) now indent Class, Module and Interface declarations.
In the ProjectItem editor, you can now use the Add To Folder contextual menu to add anything to a folder, not just classes, modules and interfaces.
Can no longer erroneously add a shared method to a class interface.
The IDE now ensures that all controls on the pasteboard are within a reasonable distance from the window when loading a project. Furthermore, the pasteboard size is now limited to 4000 pixels (wide and high).
Split using an empty string for the separator now handles UTF-16 data properly.
When saving using the RBVCP format, enumerations now save their explicit type information out when appropriate.
Can now set code editor text via the IDE scripting functionality again.
Fixed a crash bug that occurs when the IDE tries to connect to a local REALSQLDatabase data source saved with a previous RB version.
The Break global method has been replaced with a compiler statement. This means that "Break" is now a reserved keyword. It also means that break statements in built (instead of debug) applications are a noop.
All failed assertions are now written out to the console automatically.
XMLDocument.ToString and XMLNode.ToString no longer leak a buffer equal to the size of the result string on each invocation.
The Encodings object now exposes a Count and Item method as a way to iterate over the stock TextEncoding objects.
TextEncoding now has an Operator_Compare function which calls through to the TextEncoding.Equals function. Note that only equality testing is implemented, and relational testing is undefined.
The Search Results tab's toolbar now has a "Refresh" button that will re-perform the original search.
Compiler failed assertions and unhandled exceptions now allow you to report the bugs immediately to REAL Software automatically. Also, if the framework has a failed assertion (only while you are debugging your application within the IDE), you can automatically file a report.
SMTPSecureSocket works more reliably when connecting to secure smtp servers.
Clicking an EditField near the border on Windows now sets the focus properly.
GetFolderItem no longer returns an unusable folderitem object when the argument is an absolute path containing long file names or non-ASCII characters.
Threads now clean up their internal data structures when destroyed, which fixes a sizeable memory leak.
Compiler no longer fails assertions when the right-hand side of an assignment is a non-value type.
The CompanyName, ProductName and InternalName properties of the Application class are now properly limited to 44 characters each.
You can now use extension methods with the Ptr datatype.
Compiler no longer fails an assertion in CGPPC.cpp when an application uses 8- or 16-bit enum constants.
Closing an IDE window while debugging an application now asks for verification, since the action causes the debug application to immediately terminate.
When closing the last IDE window (on Windows) and using a floating properties palette, the IDE now terminates properly.
The find dialog now reports the number of changes made
after clicking Replace All.
A spurious error message no longer occurs when making a project's App object external.
Getting the properties of an empty StyledText object no longer crashes.
RBScript's RuntimeError event is now called properly when an unhandled exception has occured. Note that the line number parameter is undefined, and currently passes in 0, regardless of where the exception occurs.
The "professional features" alert box now has a Cancel button.
Setting HasBackColor to false now works fine on composite windows.
RBScript no longer causes runtime error #4 in console applications.
FigureShapes with BorderWidth > 1 are now correctly drew (reportid sdswnodt)
Menu item text is no longer chopped when an icon is assigned
The form editor now takes you to the proper event when selecting the Edit Code contextual menu for a control array.
Now setting the target name to "Untitled" if no app name is specified
When incremental compilation is turned off, the Projects folder is no longer created automatically by the IDE.
Building a Linux application on the Mac now properly sets the executable permissions without modifying other permissions
No longer throws a failed assertion when check for errors is invoked twice in succession
Compiler no longer fails with a nil object exception when compiling projects with certain types of syntax errors (a module named "Global", for example).
Deactivated windows now remembers the last focus control, which will receive the focus when the window re-activates
The IDE no longer hangs/crashes when a control, that has child controls on it, is renamed
Autocomplete will now suggest the optional keywords when using the Exit statement.
When entering an integer value greater than 2^32 - 1 into a class constant, it is now treated as a 64-bit integer properly.
There is now a ShowURL method available to IDE script which behaves the same as the global ShowURL function.
Can now input multi-line constants for language values
Using Window.Close to close the last window of an application with AutoQuit set to true, will properly quit the application.
Invisible controls are now responsive to mouse clicks immediately after being added to a TabPanel or PagePanel control.
Using the extends keyword on a class method now throws a more sensible error message.
RBScript now ignores arrays as properties of the context object instead of allowing them to pollute the script's global namespace.