Changes Since Igor Pro 6.00

This file describes significant changes made to Igor Pro and supporting files since the initial release of Igor Pro 6.0. Here are the updates in reverse chronological order:

Release 6.06

Igor Application


Macintosh: Put in a workaround for a bug in a pre-release version of Mac OS X 10.6 which caused the Igor custom controls in the Print Graph dialog to fail to work.

Fixed a crash if you tried to search help files while in the debugger.

Release 6.05A

Note: This a Macintosh-only revision that corrects only two XOPs and fixes one bug on Mac Intel computers.

Igor Application


Macintosh Intel: fixed problem with Igor's sin function that crashed when given large arguments (Print sin(90112) for example). This also affected scrolling graph cursors with the "mover" widget.


Macintosh: Reverted XLLoadWave to 5.08 (the Igor 6.04 version). The 6.05 XOP had problems if you loaded from files with long file names.

Macintosh: Reverted Data Browser to the Igor 6.04 version (the 6.05 XOP had problems browsing experiment files).

Release 6.05

Igor Application


Changed wave[val]= expr to round val in user functions (as has been done in macros forever).


Windows: fixed problem with Igor's printf function when a format such as "%.15g" is used with very large numbers (≥ 1e11). This incorporates all the changes from the 6.05B1 "hot fix" dated February 2, 2009.

Fixed rare RemoveFromList crash when removing an item at the end of the list that didn't have a trailing separator.

Macintosh: Removed the Mac OS X limitation of 256 simulataneously open files.

Fixed a routine that detects leading quotes in double-byte (Japanese) strings. This obscure bug caused rare errors in ExecuteScriptText and in invoking Igor from a batch file on Japanese Windows systems.

Fixed bug introduced in 6.02 that caused the Quit button in Load General Text Get Names dialog to malfunction.

ModifyGraph zColorMax and zColorMin values are no longer ignored in associated f(z) colorscales.

ModifyImage maxRGB and minRGB values are honored even for the very last value or first value in the range. (Previously the very last color of a non-reversed or first color of a reversed color table was replaced with the maxRGB or minRGB color.)

Fixed subtle bug in image plot and colorscale color index mapping for last indexed color and after-last-color. This slightly tweaks the displayed colors when a color index wave is used for image plots and f(z) trace colors.

Fixed a bug that caused the wrong data to be pasted if the clipboard contained more columns of data than the table selection.

Fixed bug in user-defined menus where items defined with a command that invoked the Missing Parameter Dialog would cause the rest of the definition line to be improperly interpreted, usually resulting in an error.

LoadData now detects and rejects dot-underscore files (e.g., "._wave0.ibw") created by Apple's SMB software.

Fixed bug introduced by fix for /W=$("name1#name2") in interpret mode, which broke the $string1#$string2 syntax.

Fixed pcsr when on the cursor was attached to an image plot of complex data.

Fixed bug involving DrawRRect and axis coordinate systems.

Fixed ThreadReturnValue for complex type.

Fixed crash where KillWaves was done in in a datafolder followed by a KillDataFolder of an enclosing data folder.

Restore wave lock state on loading from file.

Fixed access to V_ vars in ThreadSafe functions.

Fixed bug involving DrawRRect and axis coordinate systems.

Fixed crash in layout where a draw object is deleted followed by SetDrawLayer/K.

Fixed Histogram crash in ThreadSafe function.

Editing polygons works with waves containing NaN breaks.


Added IgorThief.ipf, which adds a user interface to manually trace data from a scanned image of a graph. See WaveMetrics Procedures.


Revised the Trace Graph experiment to use the new IgorThief.ipf procedure.


Windows: Fixed a crash in HDF5 XOP that occurred if you tried to open a non-HDF5 file or an HDF5 file written by the HDF5 1.8 library. This crash does not occur on Macintosh.

Technical Notes

Many of the technical notes have been updated, including fixing missing graphics on Windows.

Release 6.04

Igor Application


The GetSelection operation now works with subwindows as well as standalone windows.


Macintosh: Igor is no longer brought to the front if user clicks a close box in window created with /K=1 (always kill). This is to avoid the OS dialog saying that Igor wants to be activated.


Fixed curve fitting bug that could cause a hang when fitting with a threadsafe user-defined fitting function. The fix may also improve the efficiency of multi-threaded fitting with user-defined fitting functions. See Curve Fitting with Multiple Processors.

ImageTransform getPlane and insertPlane no longer leak memory.

Fixed rare crash in wave assignment statement involving very large byte waves.

Fixed rare crash when negative start used in display subrange.

ShowTools/A poly now properly sets poly mode.

Completely rewrote some cross-platform code for drawing polygons and waves to fix a hang that occurred only on Windows Vista.

Improved DoWindow when used with /W flag. Can now use to test existence of subwindows (had not been setting V_Flag correctly.)

Fixed possible crash in waveform arithmetic and assignment when called user function redimensions destination wave in subrange specification or on the right-hand side.

Fixed handling of trace instance names in user functions when liberal names include the # character.

Fixed ImageGenerateROIMask when a rounded rect was used in an axis coordinate system.

Fixed lack of window hook function call when click in a subwindow (see SetWindow).

Tags attached to hidden graph traces are now also hidden.

Fixed bug and possible crash in ImageInfo when explicit colors are defined.

Changed recreation macro generation for controls that use the bodyWidth param to avoid bad positioning for very complex panels.

Fixed SetDrawEnv rotate in functions.

Fixed function compiler when a function calls two or more functions of the same name in different modules.

Fixed recreation macro for arrow markers using _inline_ mode.

Fixed AxisInfo SETAXISFLAGS when /A=2.

Commands now support /W=$("name1#name2") subwindow syntax in macros and one the command line.

The Filter Dialog's high pass filter number of coefficients control works now, and liberally-named waves are no longer missing from the Apply Filter list.

Fixed a crash that would occur during startup if the default font is missing, Font Subtitution is enabled, and no substitution for the missing font has already been selected.

Fixed a bug that caused LoadWave to load only the first 10,000 columns of a file with more than 10,000 columns when loading as 1D waves.

Fixed a bug that could cause highlighting of text to be wrong when you horizontally scrolled text.

Fixed a bug in curve fitting: weighting was not taken into account when calculating fit coefficient errors for implicit fits (CurveFit/ODR=3), or for /ODR=2 if there was no Y weighting.

Fixed a crash in curve fitting with /ODR=2 if there were NaNs in the X weights.

Fixed a bug in curve fitting: when using a mask wave (or weighting wave with zeroes) and held parameters, the check for number of data points was too strict because it didn't take into account the number of held parameters.

Fixed problem where LoadWave /B did not set output wave name when loading matrix and when skipping columns using /L. This was due to a bug that I introduced when I previously fixed a similar bug in 6.03A.

Fixed bug in WaveMin and WaveMax: a wave with negative X scaling returned NaN if an X range was specified with x1 < x2. Now the order x1 and x2 doesn't matter.

Fixed a bug in exterior subwindows that could cause controls to be activated incorrectly. The particular problem was a listbox that scrolled when a row was clicked, if it was in the second exterior subwindow control panel.

Fixed a bug in Optimize that prevented the solution from being copied to the output wave.

Fixed a bug in the Wave Subrange dialog (used, for instance, to select a part of wave to use for error bars) that caused the dimension label menu to be filled incorrectly.

Fixed the File->Save History Copy command. It has done nothing since Igor Pro 4.

Fixed a bug: Autoscale only visible data included a point beyond the visible data. See Automatic Axis Ranges.

Fixed crash: If you did a fit to data graphed on a log axis, changed to a linear axis and repeated the fit, a crash could occur.

Fixed a bug that caused high ASCII characters to be displayed incorrectly if you saved a notebook created on Windows on Macintosh or vice versa.

Fixed a crash in the debugger if the breakpoint was placed on the line that contained the Function keyword.

In the Save Graphics dialog, clicking the RGB or CMYK radio buttons had the unintended effect of causing the custom size setting to be ignored.

Fixed failure to accept a 31 character liberal wave name in Load Igor Text (LoadWave/T).

Fixed leak of two small handles when creating a table.

Fixed bug that prevented OpenNotebook /M=prompt operation from showing user prompt in some cases.

Opaque objects in page layouts are now printed opaquely even when the layout has a non-white background.

Macintosh: Help tips for controls in an external control panel are no longer displayed over the parent window.

Macintosh: Fixed the command-key equivalent for the Show Column Info Tags item.

Macintosh OS X 10.5: put in a work-around for a bug in Apple's implementation of the LAPACK library that caused a crash during curve.

fitting with constraints.

Macintosh: Fixed assignment of numbers larger than 2^31 to unsigned 32 bit integers.

Macintosh: Got a report of error -199 when opening a procedure file in OS X 10.5.2 but was unable to reproduce it. This error has to do with accessing the resource fork which holds non-essential information such as the page setup, the window position and the font. This error is now treated as non-fatal so that the procedure file can be opened.

Macintosh: Worked around problem in writing notebooks and procedure files to a Windows server from Mac OS X via SMB. The symptom was that the files name would change from, for example, "Notebook0.ifn" to "Notebook0.ifnT0".

Windows: "PrintSettings getPrinterList" command could run out of memory and return an error. Now more memory is allocated so it can handle more printers.

Windows: Fixed problem that prevented Data Browser from updating after Merge Experiment.

Windows: Fixed a bug where saving as unpacked experiment failed if the experiment contained a one-character data folder name like 'A', 'B', or 'C'.


WMMenus.ipf: changed the way the HDF 5 package is installed.

Updated Sonogram.ipf to set the initial graph size properly.

KBColorizeTraces.ipf: restored KBColorizeTraces() to lightness, saturation, startingHue parameters only (as per Igor 6.02A and earlier), and added KBColorizeTracesLinearHue() with same parameters, and KBColorizeTracesOptLinear(lightness, saturation, startingHue, [useLinearHue]). Also, it now works correctly if the current data folder isn't root.

Revised PopupWaveSelector.ipf

Revised WaveSelectorWidget.ipf

Revised SQLUtils.ipf

Revised HierarchicalListWidget.ipf

Revised SQLConstants.ipf

Revised Image Line Profile.ipf

Revised FilterDialog.ipf

New BoxLimitPanel.ipf procedure for easy x,y,z axis limits for Gizmo.


Fixed a bug in the Data Browser Execute Cmd button which would have skipped one wave when the generated command was too long.

Macintosh: MLLoadWave is now universal (Intel as well as PowerPC). If you are using the old PPC-only MLLoadWave_OSX XOP (in "More Extensions:File Loaders:PPC Extensions), you should deactivate that XOP by removing its alias from Igor Extensions and activate the new MLLoadWave XOP by adding its alias to Igor Extensions. The old MLLoadWave_OSX XOP will be removed from the distribution as of Igor Pro 6.10. See the MLLoadWave Help file for details on Macintosh configuration requirements for MLLoadWave.

Fixed a bug in the Interpolate2 operation where the output data would be skewed when using "X from dest" mode using waveform as both source and destination when X scaling of waves was reversed and the destination wave was shorter than the source.

Fixed a bug in Gizmo voxelgram plots where related waves were not marked as waves in use.

Gizmo's axis ranges are easier to set, and a new BoxLimitPanel.ipf procedure adds a GUI to make it even easier.

Fixed a bug in the NIGPIB2 XOP which prevented the /Q flag from working.

Fixed a rare bug that caused empty text cells in a spreadsheet to cause an error in XLLoadWave.

Macintosh: Fixed a problem that caused an error if you tried to load a little-endian SDS using the HDF4 Loader.

Release 6.03A2

Igor Application


NOTE: This 6.03A2 version was released only for Macintosh.

Igor Application


Fixed a bug where the cursor did not change to a finger while over the right side of a special action in a notebook or help file.

Macintosh: Worked around a bug in Leopard (Mac OS X 10.5) that prevented operation of the scroll bars in ListBox controls, when those scroll bars were located in the control bar area above a graph's plot area.

Release 6.03A

Igor Application


A reversed color table specified by ModifyGraph zColor wasn't being reflected in the associated ColorScale.

Fixed bug created in 5.04B03 where resaving the main procedure window using File->Save Procedure no longer worked.

Fixed problem where LoadWave /B did not set output wave name when loading matrix and when skipping columns using /L.

Fixed the annotation dialog's lack of hiding the Adj Line Spacing control and the error frame when the text entry area is zoomed.

Fixed improper name conflict error in macro variables.

Fixed a bug involving the translation between Macintosh and Windows characters sets in a formatted notebook or help file. Under certain circumstances, the translation of high-ASCII characters did not occur, causing the wrong character to appear on the platform other than the one where editing was done. This bug also could cause Japanese text to be garbled on the other platform. This fix was done for Igor Pro 6.03J (Japanese) which shipped after 6.03 (English).

Windows: Put in a workaround for a problem that could cause lines of text in a formatted notebook or help file to fail to wrap. This occured if you ran on an English Windows system but set the "Language for non-Unicode programs" to Japanese, Chinese or Korean. Under this circumstance, Windows returns "MS Shell Dlg" when asked for the default GUI font (GetStockObject(DEFAULT_GUI_FONT)). MS Shell Dlg is a fake font that Windows maps to a real font. However, when MS Shell Dlg is used, Windows incorrectly returns zero for the width of Asian characters. This causes lines of text to fail to wrap. The workaround is to detect when Windows returns "MS Shell Dlg" and instead use another real font. This fix was done for Igor Pro 6.03J (Japanese) which shipped after 6.03 (English).

Macintosh: Worked around a bug in Mac OS X 10.5. When saving an unpacked experiment, if you clicked the Create Folder and Go button, experiment files were not saved in the experiment folder but in its parent.


Updated GizmoRotation.ipf to properly set the X and Y sides.


Updated GizmoRotation.pxp to use the panel created by the Igor 6 GizmoRotation.ipf procedure.


Changed in Gizmo the order of Euler angle rotation from ZYX to XYZ. The change only affects the rotation transformation created by the command ModifyGizmo Euler={a,b,c}.

Release 6.03

Igor Application


Increased the maximum number of help template characters that will be inserted in a procedure file from 120 to 400.

Relaxed plot size limits when exporting graphs using special plot size modes.

ModifyImage plane now indexes through higher dims (doesn't stop at end of chunk 0).


Fixed creating arrow markers using Modify Trace Appearance dialog. It had been generating a command setting barbSide to none.

The ValDisplay control erases to the label background color once again (it didn't in Igor 6.02 or 6.02A).

Controls in a graph's window and plot areas now erase their backgrounds more sensibly.

In compiled code, KillControl/W=winName would not find the specified window if winName specified a child window path having a total length longer than 31 characters.

Fixed bug in CurveFit: if the input data vertical axis had manual range, the residual axis copied that range.

Fixed bug created in 5.04B03 where resaving the main procedure window using File->Save Procedure no longer worked.

Previously the Search Topics and Subtopics Only checkbox affected searches of procedure files but it is relevant only to help files. This is now fixed.

Fixed a failure to return a compile error if you called a non-thread-safe external operation from a thread-safe user function.

Fixed a crash if you called a thread-safe external operation from a non-thread-safe user function.

Fixed rare crash involving remove wave and cursor hooks.

Fixed crash in ModifyGraph with some keyword when graph name is wrong.

When cursors are removed as a consequence of removing a trace or an image, the user's window hook function is no longer called because it can cause a crash.

Fixed complex beta function. Was non-functional and created BUG messages.

Fixed export as PDF or EPS with cityscape mode with gaps or offscale data.

Fixed update in button panel area of a graph when a button is killed just before GraphWaveDraw or GraphWaveEdit.

Fixed cursor speed and direction when cursors beyond A and B are the only ones active.

Fixed rare crash with ModifyFreeAxis given bad keyword.

The graph marquee isn't dismissed if the user clicks in an exterior panel button.

Fixed PDF line disappearance after zero thick line.

Fixed PDF export bug involving filled markers with zero thick lines.

ThreadGroupCreate now checks for reasonable input.

Fixed clipping problem in Panels, especially internal tools palette on Windows.

Windows: Early copies of Igor 6.02A would crash if any ThreadSafe functions were run. Later copies (10/23/2007 or later) were corrected. Igor 6.03 ThreadSafe functions work correctly, too.

Windows: Fixed BUG message when unfinished floating panel was present and user clicked on Data Browser.

Windows: Made PauseForUser suppress clicks on most non-target windows.

Windows: Fixed problem in which experiment recreation macros operate on the wrong windows when external subwindows along with minimized or hidden windows are used.

Windows: Fixed mouse wheel support for exterior subwindows.

Macintosh: Fixed CreateAliasShortcut to allow trailing colon in the path to the target when the target is a directory.

Macintosh: Fixed a number of control native GUI appearance issues with user-defined controls on Mac OS X 10.5 (Leopard), especially with SetVariable, Slider, and GroupBox controls.

Macintosh: timer values from SetIgorOption debugTimer had mistakenly been in microseconds. Changed to seconds as it is on Windows and Igor 5.

Macintosh: forward delete key now works in control text edit items such as SetVariable.


Macintosh: We have had several reports of "error #-9589" when doing an experiment save. Apple's only documentation for this is "kPMKeyNotFound, -9589, Could not find the key" which tells us nothing of use. We suspect the error stems from an Apple routine named PMSessionMakeOldPrintRecord which converts Carbon page setup records to pre-Carbon page setup records. Igor stores both Carbon and pre-Carbon page setup records in experiments because the Windows version of Igor reads page setup information, such as page orientation, from the pre-Carbon page setup record. Previously this error caused the experiment save to fail which was too drastic. Now if there is an error we try to use a default pre-Carbon page setup. This allows the save to continue but has the downside that, if the experiment is opened on Windows, page orientation information will be lost. If this error occurs, Igor emits a warning to the history area and continues the save. If you see this warning, you may be able to fix it by executing Reset Printing System from Apple's Printer Setup Utility. This removes all printer objects from the system so you will need to add your printers back. This warning message is emitted once per Igor session.


TintedWindowBackground.ipf's panel now remembers settings between invocations.

PieChart.ipf: unchecking the labels now actually removes the labels. Updates to the data, label, and color waves less than one second apart no longer go unnoticed.

New Polar Graphs.ipf: Fixed theta rotation symbol in Range tab, fixed old too-short panel heights.

ColorWaveEditor.ipf: Added controls to create a new color wave. Added a client mode to allow client code to put up a color wave editor to edit one specific wave (used by PieChart.ipf for Custom Colors).


The HDF Loader XOP, which loads older HDF4 files, is now available on Mac OS X, both PowerPC and Intel. It is in "Igor Pro Folder/More Extensions/File Loaders".

Macintosh (OS X 10.5.x): Fixed a Data Browser crash and some cosmetic problems.

Release 6.02A

Igor Application


NewImage now chooses the initial size of the graph window to fit the rectangle on the main screen available for windows (that is, the rectangle excluding any visible dock). Previously it was based on the rectangle that encloses all screens, often generating a window that was too big.

New SetWindow hook eventCodes 18-21 are: "showTools", "hideTools", "showInfo" and "hideInfo". They are sent when the tools or info have just been shown or hidden.

AutoPositionWindow avoids overlapping a graph's external info window.

Added support for #ifdef and the like to help (e.g., right-clicking #ifdef offers to take you to help for #ifdef).

FuncFit, when doing a sum-of-fit-functions fit, now generates a series of error waves, W_sigma_n where n is a number 0 to..., one for each function.

Added titleWave keyword to ListBox controls to allow more than 31 characters for title cells. Particularly important if you use styled text.

Restored hilighting of checkbox cells in ListBox controls when the cell is marked as selected. That allows you to navigate to checkbox cells using arrow keys, and to be able to see where you are even when navigating over checkbox cells. Note that clicking a checkbox cell still does not cause it to be selected.

FontSizeHeight and FontSizeStringWidth have new appearanceStr parameters for use in measuring native GUI string sizes.


Macintosh: a native GUI checked Checkbox no longer leaves pixels behind when it gets hidden, and a Button using a foreground color is drawn properly when a nearby button is updated. The Button and PopupMenu controls also draw only 4 pixels of shadow outside of its rectangle even if the button is tall. The PopupupMenu's title background is erased if text is smoothed so that the text doesn't increasingly darken.

Windows: Fixed disappearing arrows on native GUI SetVariable controls.

Windows: Fixed user-defined help entries when the built-in Special Coursework menu item was present.

Now Igor's menu items are correctly disabled when a dialog comes up, even with a wave browser activated.

Changed convergence test for the Romberg integration method of Integrate1D().

CreateAliasShortcut works again.

Curve fitting: restored warning about fitting with minimum absolute deviations.

Curve fitting: the new curve fit annotation (/TBOX flag) is named by adding "CF_" to the Y data wave name. If the result was longer than 31 characters, it put up a dialog asking if it was OK to truncate the name. It now automatically and silently truncates the name.

Fixed bug in ListBox controls: column titles didn't reset styled text after rendering a title so things like text color carried over from one title to the next, and into the first list cell.

Fixed bug in Optimize that screwed up the order of execution, so that a normal optimization was attempted after simulated annealing was done. This, naturally, had the potential to give wrong answers, and bad error messages.

Fixed a bug introduced in IP 6.02B01 that caused some threadsafe operations to fail to compile when used in threadsafe functions.

Updated help files and manual with some items missing from the 6.02 release.


Fixed a bug in Graph Magnifier.ipf that caused an error the second and subsequent time you made a new graph magnifier for a graph displaying waves from a data folder other than root:.

XYZtoMatrix.ipf has a new XYGridandZtoMatrix macro that rearranges three waves containing X, Y, and Z values that comprise a regularly-spaced grid of X and Y values (already sorted in either column-major or row-major order) into a matrix of Z values that spans the min and max X and Y.


Gizmo works on Mac OS X 10.3.9.

Release 6.02

Note: this is a summary of the changes and bug fixes for Igor 6.02. For a detailed listing of the changes, see the full release notes here .

Igor Application


(The new native GUI controls appearance feature is described under 6.02 Changed Features . This is an important change.)

Windows only: added Igor Command Line-based license registration (for system administrators). See the Silent Igor Installation folder inside the Miscellaneous folder for details.

Added Fisher's exact test to StatsContingencyTable.

Added to ImageInterpolate a new interpolation method for handling matrices scaled by 1D X and Y Waves.

Added support for Structure Fit Functions when fitting to sums of fit functions. See documentation for the FuncFit operation and Fitting Sums of Fit Functions.

Added ability to create a cumulative histogram; that is, one in which the bin values are the total counts for all the bins to the left of the current bin, plus the counts for the current bin. See Histogram. Also added Cumulative checkbox to the Histogram dialog.

New extended Tag arrow line settings allow detailed control of arrow head length, width, sharpness, frame, line thickness, color, dash, and add "half" arrow heads (either left or right sides).

ModifyImage's new ctabAutoscale keyword sets the range of data used for autoscaling ctab * values to the XY subset and/or the current plane being displayed.

Added to MatrixOP: the functions SumCols() and VarCols().

Added P-values to a number of statistical tests.

Macintosh: Improved performance on the Shen algorithm for ImageEdgeDetection.

On Windows, the LoadWave operation loads large files much faster than previous versions of Igor.

Added to ImageStats a new flag (/BEAM) for computing the statistics of 2D ROI on each layer of the 3D source wave.


User-created controls now (by default) use "native GUI appearance". This can be disabled in the new Compatibility tab of the Miscellaneous Settings dialog. The native GUI control appearance has many ramifications described in the new DefaultGUIControls command. See the "All Controls Demo.pxp" experiment for examples.

Multiple selections of drawing objects and user-defined controls are now allowed for Bring To Front, etc. The controls and drawing objects are re-ordered in separate layer spaces.

Showing the tool palette (command-T or Ctrl+T) switches to the arrow tool (which puts the window into drawing mode).

The Miscellaneous Settings dialog has checkboxes to revert the Info and Tool palettes to non-floating windows, and to Enable "Fling Mode".

Holding down the Shift or option or Alt key while clicking an enabled breakpoint disables the breakpoint instead of removing it. Similarly, clicking a disabled breakpoint with any of those keys held down enables the breakpoint instead of removing it.

Licensing checking is more compatible with site licensing installers that pre-register Igor.

New events have been added to the SetWindow window hook function: subwindowKill, hide and show (for root window or child window), and killVote (sent to the root window when it or any of its children is about to be killed). Unlike the kill event, killVote is sent before the window close dialog appears. Like the kill event, returning 2 for the killVote event will prevent the window's closing.

SetWindow's renamed event is sent to the host window when a child (sub-) window is renamed. Previously, renamed subwindows generated no renamed event. Kill events are now sent to controls in sub-windows when a sub-window is killed. Previously, these events were sent to controls only when the root window was killed.

The handling of multiple window hooks (SetWindow) has changed. Previously all named hooks were called regardless of their return values. As of Igor 6.02, all named hooks will be run only if they all return 0 (or by failing to have a return statement return NaN). This means that as soon as a named hook returns say, 1 or 2, further hooks are not called. This change allows the killVote (and the deprecated kill) event to work with named hooks: any hook returning 2 prevents the windows from being killed. Previously this functionality worked if there was only one unnamed hook or one named hook since subsequent hook return values overwrote earlier hook return values. There are other tricky details - see the documentation for SetWindow.

The way window names and titles are displayed in Igor's Windows menu and submenus can be selected in the Miscellaneous Settings dialog.

In the Error Bars dialog (sub-dialog to the Modify Trace Appearance dialog) added "Same as Y+" and "Same as X+" items to the wave menus for the Y- and X- error bar waves. These are the default.


NOTE: Only the most significant bug fixes are listed here. For a full list of all bugs fixed see the full release notes .

Changed StatsWaldPDF and StatsWaldCDF to support infinite mu value and StatsExpCDF to support mu=0.

Fixed a bug in lists in certain dialogs (the various control properties dialogs are prime examples) that caused Ctrl+C to copy all the text in a cell in the list instead of copying only the selected text.

Fixed a failure of FuncFit to mark the coefficient wave as modified after a curve fit was finished. That prevented graphs and tables that depended on the coefficient wave from updating. Note that you probably have to not use /D or /R in order to see the problem.

Fixed a bug in LoadWave that intermittently caused a crash if you use /W to load column names and the file contained more column names than actual columns.

Fixed a bug whereby clicking on a special character (e.g., picture) at the end of a wrapped line in a notebook did not select the special character.

Changed recreation macro generation to support subwindow guides with liberal names (DefineGuide has been allowing liberal names).

Fixed a crash on overly-long name in Window Control dialog with 32-character style macro name.

Fixed a bug that caused SaveExperiment with a full path to display a Save File dialog if the experiment was untitled.

Fixed a crash that occured when the Debugger's breakpoint was disabled, enabled, and then triggered.

Fixed Resample crash when input waves were of different length.

Fixed CmpStr to return results the same as Igor 6.01 when the string parameters contain zeros (\0, not "0") in them.

Fixed LoadData not marking loaded variables as modified. If the variable was attached to a control in a control panel, the control did not update.

Macintosh: fixed PlaySound sample rate problem.

Fixed rare crash when forming a graph recreation macro when many cursors are used.

Mac Intel: Fixed usage of wave[inf].

Mac Intel: Fixed a crash in axis labeling code when a font size of 1 point was used. This caused the Colorscale dialog to crash when trying to enter any font size that began with the digit 1.

Fixed PDF export of subwindow frame thickness.

GetFileFolderInfo always creates V_isFile, etc in a macro or Proc.

Macintosh: Fixed GetFileFolderInfo command to prompt for file if no parameters were given.

Grep/LIST no longer replaces the last character in S_Value with 0.

Grep no longer sets V_Flag to the same number as V_Value.

Fixed CurveFit bug: poly2d put residuals in wrong places when there were NaN's in the dataset.

Fixed bugs in calling a thread-safe external function through a FUNCREF or from the FuncFit operation.

Fixed a bug that caused Igor to fail to detect when it was trying to update a window recreation macro in a read-only procedure file.

Fixed a bug in CurveFit and FuncFit that extracted incorrect X data from the second (or more) independent variable if the mask wave had zeroes at the start.

Fixed problem in CurveFit and FuncFitMD that caused residuals and explicit destination wave values to go into the wrong places when using a mask wave with multidimensional gridded fits.

Fixed a bug that caused a crash after a Textbox or Legend command with a /W flag that operated on a page layout other than the top layout.

Properly implemented curve fit confidence band calculation for user-defined fit functions.

FindLevels now works with integer types in a function.

Fixed a crash that occured after closing an experiment with an experiment-only font substitution.


Macintosh: The XLLoadWave XOP, which loads Excel files, now runs on Intel Macintosh as well as PowerPC.

Fixed a couple of problems with QTGrabber that caused a crash when trying to save video input to a movie to file.

Macintosh: Added a Macintosh-only XOP named HFSAndPosix for converting between HFS names (limited to 31 characters, colon separators) and Posix (limited to 255 characters, forward slash separators) paths. Most users will not need this. See HFS And Posix for details.

It is now possible for XOP programmers to write thread-safe external functions and operations which can be called from thread-safe user-defined functions. However, there are severe restrictions on doing callbacks to Igor from a thread-safe routine. The thread-safe capability is not yet in the shipping version of the XOP Toolkit so contact WaveMetrics support if you want to try it.

Changed Gizmo so that named hook functions are executed independent of the values of hook events. Added hook calls in response to rotation commands. Added commands to change object and attribute names.

Fixed a problem in Gizmo Axes dialog where user-label waves and user-level waves were not loaded. See Axes.

Fixed a couple of problems with ModifyGizmo MakeColorWave.


Changed ImageSlider.ipf to automatically scale the colortable relative to the extrema of the whole stack.

Revised many Gizmo procedures to work better together without stepping on eachother's hook functions.

Added LogHistBins() in Log Histogram.ipf.

Updated StatsProcs.ipf to calculate Cronbach alpha.

Added a new MovieFromStack.ipf procedure to create QuickTime movies from image stacks.

Fixed Image Particle Panel.ipf so that cross-cursor identifying of particles works with the last particle.

Updated XYZToTripletToXYZ.ipf and GizmoUtils.ipf to add subrange parameters to the X, Y, Z wave to triplet wave routines.

Modified Scatter Plot Matrix package to add new features:

  1. Modify the appearance of a trace in one of the sub-graphs, hold down ctrl+shift and click on the trace, and you can copy the new trace style to all the traces. The action is undoable.
  2. New positioning for the textbox made by the Regression panel.

Example Experiments

Modernized the X Scaling and Data Folder Tutorials in Igor Pro Folder:Learning Aids:Tutorials.

Release 6.01

Note: this is a summary of the changes and bug fixes for Igor 6.01. For a detailed listing of the changes, see the full release notes here .

Igor Application


Added PDF, JPEG and TIFF export to clipboard on both Mac and Windows.

Added PDF Export of Graphs, Tables and Page Layouts. Considerations are similar to EPS export: you should either use font embedding or use only Helvetica, Times, Symbol and Zapf Dingbats.

Added transparent PNG export using new flag for WritePICT: /TRAN[=1 or 0].

Added "renamed" (13) window hook event to SetWindow.

Added the AfterWindowCreatedHook User-Defined Hook Function that Igor calls when any target window is first created.

New operations: StatsSignTest, StatsDIPTest, and ToCommandLine.

New functions: LaguerreA, LaguerreGaus, MarcumQ, WaveCRC, and GuideInfo.

Added new flags for GraphWaveEdit to suppress auto insert of new points.

Added support to the FuncFit operation for user-defined fit functions residing in an independent module (see The IndependentModule Pragma). That means that the names of user-defined fit functions can use the IndependentModuleName#functionName syntax.

Added the /iNaN flag to StatsQuantiles to ignore NaNs in the input data, added the /STBL flag for running a stable sort instead of the standard (faster) sort.

Added convertToPNG keyword to Notebook operation.

Allowed /N=1 for the Resample operation. This allows decimation-by-omission without a procedure file.

Changed the draw object dialog to support setting dashed lines for Rectangles, Rounded Rectangles and Ovals.

Added a checkbox to the Modify Axis dialog's Axis tab to set the axisOnTop attribute of axes.


Commands using subrange syntax no longer give error for out of bounds values. I.e., values are not checked against wave dimensions and labels. This was never done for compiled code and now is also not done for interpreted code. Recreation macros now use the original user-supplied subrange values and are not affected by the current wave dimensions. In addition, traces with completely out-of-bounds subranges now act as if they have zero points and are not displayed and do not take part in autoscaling calculations. Previously, they sometimes affected autoscaling. See Indexing and Subranges.

Changed behavior of DeletePoints and InsertPoints to not reduce higher dimensions equal to 1 to zero. Previously, deleting or inserting rows in a 1 column matrix converted it to a vector (zero columns.)

Can now use StrConstants with $ in places where previously it would give an error when compiling functions, mainly for the user controls (Button, etc) font keyword where the actual font needs to be known at compile time. The string constant should be in the same procedure in which it is used to avoid dependencies on the order of procedure window compile.

Added new menu items: Show Trace Info Tags in the Graph menu or Show Column Info Tags in the Table menu turn on a mode in which hovering the mouse over a trace or table column will put up the tag or tip with information.

Edit menu Copy is now enabled for page layouts even when nothing is selected and there is no Marquee. In this situation, a Copy is the same as Export Graphics but without the dialog.

Improved the speed of keyboard shortcuts, especially editing keyboard shortcuts for Copy, Paste, Cut, Undo, Find Selection and Find Again.

Changed to faster algorithm in StatsMedian().

The main window for PauseForUser can now be a subwindow.

Change to SetWindow/GetWindow with hide keyword: For SetWindow, hide can now be 2 to unhide without restoring minimized windows. This works only on Windows -- bit 1 is ignored on Macintosh at present. For GetWIndow, hide returns minimized state in bit 1 of V_Value and hidden state in bit 0.

Cursor x or y readout on images with non-uniform axes due to use of x or y wave and/or log mode now return actual location of cursor in center of pixel.

hcsr and vcsr no longer post an error if cursor is not present. This can be used to test if the cursor is on the graph.

Changed Draw Rectangles, Rounded Rectangles and Ovals to not use arrows when arrow mode is the saved state.

You can now turn off graph fling mode using: SetIgorOption SetFlingMode=0

The Miscellaneous Settings dialog that enabled MoveFolder, CopyFolder, DeleteFolder has been changed to give three choices: Ask The User, Give Permission, Deny Permission.

On Macintosh, Igor no longer sets the stationery bit in a file's Finder information when saving stationery. This is because the Finder now misinterprets this bit and creates a duplicate file when you open a stationery file.

Windows: Added a retry in case of a "File Already Open" error when trying to open a file. This is an attempt to work around problems caused by virus scanners, backup programs and other programs that open files at inopportune times. This retry mechanism is recommended in Microsoft's Knowledge Base article Q316609.


NOTE: Only a few bug fixes are listed here. For a full list of all bugs fixed see the full release notes .

Fixed a crash that would occur if you used the Graph Now button in the Curve Fitting dialog with a built-in fit function selected.

Fix for curve fitting crashes. QuickFit now handles traces from subranges correctly. Fixed format of curve fitting history report.

Fixed an incorrect derivative for the built-in Gauss2D curve fitting function; some Gauss2D fits should work more reliably.

SetAxis/Z crash fixed.

Intel Macintosh: SplitString no longer crashes.

Intel Macintosh: Fix for blue TIFF images.

Fixed a crash that occurred after a breakpoint was set in a procedure file belonging to an independent module, the procedure was changed and recompiled, the breakpoint was encountered, and the Run/Go button was pressed in the Debugger.

Fixed a crash related to editing procedure files in independent modules.

Fixed the enabling and use of Edit menu with text entry controls such as SetVariable and editable ListBoxes when in subwindows.

Fixed external subwindow title saving in recreation macros.

Fixed a bug in the date/time manual ticks code that caused any canonic tick after 3:14 AM on 1/19/72 to be truncated to 2^31-1, resulting in major ticks at 14 minutes past the hour.

Fixed crash converting cursors beyond A or B to free.

Fixed bug involving removing #define in main proc win.

DoWindow/F on a hidden notebook left it in a confused state where newly-typed text was invisible.

Windows: Fixed problem that caused an experiment to report an error on load if you minimized a window and then hid that window, then saved and reopened the experiment.

Windows: Fixed problem of extra icons when restoring graph using external tools/info.

Windows: Fixed a problem where the license activation wouldn't be remembered the next time Igor launched.

Windows: Disabled controls no longer disappear or cause other controls drawing problems.


Data Browser: Fixed a problem when renaming waves with names exceeding 31 characters.

GetInputState : Fixed a bug in Igor that caused the MousePosition function in the GetInputState XOP to always return global coordinates even when you asked for local.

Gizmo: Added new keywords (xStep and yStep) to control surface grid density. Added new property for Axes ("visible").

Gizmo: Fixed printing problem on PCs.

Gizmo: Fixed a bug which affected the position of z-axis labels.

HDF5: Fixed crash when loading certain null string attributes.

HDF5: Made XOP into universal binary so it can run on Intel Macintosh. Thanks to Bela Farago for his help porting to Intel.

Interpolate : Fixed incorrect results when in "X From Dest" mode with a waveform (not XY) when the X scaling of the dest wave was reversed.

QTGrabber XOP: updated to support IIDC features.

SndLoadSaveWave.xop (Mac Intel): The SndSaveAiff command now properly sets the sampling rate in saved AIFF files.


Changed AppendImageToContour.ipf to work with contours created with AppendMatrixContour and using zWave vs {xWave, yWave}.

Updated Image Calibration Panels.ipf.

Added a new marquee menu "MarqueeToTable" in Marquee2Mask.ipf.

The new Median XY Smoothing Dialog.ipf implements a full-out Median XY Smoothing dialog.

Median.ipf's MedianEO function now properly computes the median of an even number of values.

PopupWaveSelector.ipf now supports data folders.

Axis Utilities.ipf's HVAxisList(graphName,...) no longer fails if the graph doesn't exist.

Median.ipf now has a Median XY Smoothing function (and a simple menu interface) and a MedianEO function which properly computes the median of an even number of values.

Changed AppendContourToGizmo.ipf to no longer create an emissive color material object.

Changed Gizmo Box Axes.ipf to use the new visible property for axes objects. Requires the Gizmo.xop that ships with Igor 6.01 and later (and included in 6.01B04).

Updated the WMFitFunctions.ipf file. Several of the functions are now obsolete. See comments at the top of the file if you are interested.

Example Experiments

Updated Marquee Demo.pxp.

Updated Resize Panel and List Demo.pxp.

New example experiment: Critical Values Demo.pxp.