# 0.13.0¶

• Fixed a bug whereby a node would be offset from the mouse position when dragging if starting the drag was delayed while other uis (particularly the NodeEditor) were updating.

• Fixed a bug which meant that connections were not correctly represented in the GraphEditor for children of the ArrayNodule.

• The ParameterHandler classes now correctly define the Ptr and ConstPtr member typedefs required for all IECore::RefCounted subclasses.

• The ParameterHandler classes now have a plug() method which returns the plug which was created to represent the parameter().

• The ParameterisedHolder class now exposes the internal ParameterHandler with a parameterHandler() method.

• The CompoundParameterHandler class now provides access to the handlers it uses for child parameters using the childParameterHandler() method.

• The CompoundParameterHandler now has python bindings.

• The Image widget no longer expands to fill space if it is available.

• The Label widget now has setText() and getText() methods.

• The PathWidget class now has a path() method returning the path being displayed.

• The Window.addChildWindow( window ) call now results in the parent window holding a reference to the python object representing the child. This avoids situations whereby the child python object would die but the QWidget representing the child on the C++ side would continue to live. Use Window.removeChild() to remove a child window when you wish to destroy it, or use setVisible( False ) to hide the child until you need it again.

• Fixed bug in PathWidget which meant that the path display would be incorrect until the path changed for the first time.

• PathListingWidget fixes :

• Error when double clicking an item.
• Selection was not being cleared when the current path wasn’t valid.
• Path wasn’t being set when a leaf item was selected, which meant that hitting Enter in the PathChooserDialogue chose the wrong path.
• Double clicking a directory when the current path wasn’t valid created another invalid path, rather than replacing the invalid section.
• Added a “python” application which simply executes a python file in the Gaffer environment.

• Added a GafferUI._Variant class which has helper function for dealing with differences in PySide and PyQt4 with respect to QVariant handling.

• Fixed VectorDataWidget to work with PySide.

• Added a BoxParameterHandler covering Box2i, Box2f, Box3i and Box3f parameter types.

• GraphComponent now supports the len() function in python, returning the number of children for the instance. The nonzero method is also implemented so that queries of the type “if graphComponent : “ will return True as before, even if there are no children.

• The sizing behaviour of the PathListingWidget is no longer quite as annoying.

• GafferUI.Menu now optionally passes a “menu” argument to the checkBox callback of a menu item, in the same way as it does for the command callback.

• Fixed bug in GafferUI.ColorSwatch.getColor().

• Added Window.[gs]etFullScreen() methods, and added a menu item to the Layout menu to use them. Added a parentWindow argument to the Dialogue*.waitFor*() methods, and used it appropriately to keep dialogues on top even when in full screen mode.

• The Image class now uses the Cortex PNGImageReader for loading png files, and correctly converts linear data to sRGB for display.

• Added a basic framework for parameter-specific uis. Initially there are only specific uis for compound parameters, presets only parameters and path parameters - all others fall back to using the default plug widgets. A UI may be easily instantiated for all the parameters of a ParameterisedHolderNode using the GafferUI.CompoundParameterValueWidget - see GafferUI.ParameterisedHolderNodeUI for an example.

• The MultiLineTextWidget now has much more sensible tab spacing.

• The Collapsible container can now display an optional widget in the top right corner of the header. Use the setCornerWidget() and getCornerWidget() methods to manipulate this widget.

• Removed font parameter from GafferUI.Label - it wasn’t doing anything anyway. Font control will likely return in the form of some support for text markup.

• Fixed variable scope issues which meant that the following code would fail if executed in a script editor :

  class A() :

def __init__( self ) :

print A

a = A()