What's Changed Since Igor Pro 6.0

This file describes significant changes made to Igor Pro and supporting files since the 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

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.

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

Igor Application


Changed native Mac OS X GUI GroupBox control to not draw the group box frame dropped down if the simple line frame is used. This makes the simple line frame a good choice for cross-platform portability.

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.


Windows only: added Igor Command Line-based license registration (for system administrators).

Added /CUM flag to the Histogram operation to ask for a cumulative histogram in which each bin contains the total counts for all the bins less than the current bin, plus the current bin's counts. Combine with the /P flag to get a cumulate distribution function.

Added Fisher's exact test to StatsContingencyTable.


Fixed a crash in FuncFitMD that occurred if your mask wave or weight wave eliminated all the data points.

Changed Native GUI control appearance to draw Slider controls properly when drawing objects are also present in the panel.

Fixed a crash that occurred if you deleted a control manually, then called KillControl on the same control.

ImageUnwrapPhase now initializes M_UnwrappedPhase to NaN so that values corresponding to branch cuts and residues are properly marked.

Changed StatsWilcoxonRankTest to support large waves. Note that it is still not a good idea to use this operation with large waves unless /APRX flag is set to 1 or 2.

Changed StatsWaldPDF and StatsWaldCDF to support infinite mu value.

Changed 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.

A natively-drawn Mac OS X GUI Slider control no longer shows drawing objects from the top left corner of the enclosing panel.

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

Fixed a crash involving recursion of subwindow guides.

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


Removed ".ShapeRange.ConvertToInlineShape" from CallMicrosoftWord.ipf. For some reason, this causes Windows Script Host to crash.

Modified Multi-peak fitting 1.4.ipf for native GUI controls. Made Edit Peak panel float, all panels are fixed sized and they no longer show the Panel menu.

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


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

Update 6.02B03

Igor Application


Added an "Enable Fling Mode" checkbox to the Miscellaneous Settings dialog's Graph tab.

Added Don't Smooth Fonts smaller than nn points to the Miscellaneous Settings dialog; most user-defined controls honor that setting.

Separated disabling of floating info palettes from disabling of floating tool palettes in Miscellaneous Settings dialog.

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.

Macintosh: Changed printing code to NOT request Laserwriter 8 compatibility mode by default. This mode is needed if you have any EPS pictures in your graphics but it appeared to cause font problems for some people so it was turned off. If you do have EPS graphics in your Layout or Graph windows, you will need to execute:

SetIgorOption WantLW8Compatibility=1
before printing to a Postscript printer. This will all become moot in an upcoming release.


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.

FontList takes a new optional parameter that limits the returned fonts to only "scalable" (not bitmap) fonts.

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.


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

Changed Native GUI control appearance to draw properly when controls are on top of drawing objects like filled rectangles.

Fixed disabled appearance of Window native GUI user-defined checkbox (and radio button) controls, eliminated other "controls drawing as if disabled" bugs. Many other Native GUI adjustments, too.

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 problem where dimension labels grow without bounds.

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


Revised New Polar Graphs.ipf to work better with both native and Igor 5 GUI appearances.

Revised many Gizmo procedures to work better with both native and Igor 5 GUI appearances and to work better together without stepping on eachother's hook functions.

PopupWaveSelector.ipf: Fixed bug in PopupWS_MatchOptions (wrong sense of ParamIsDefault test for matchStr).

HierarchicalListWidget.ipf now allows you to add your own listbox action procedure. Also added function WMHL_ChangeItem function to allow you to change the name and displayed string of an item.


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

Update 6.02B02

Igor Application


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.

Also in the Compatibility tab is a checkbox to revert the Info and Tool palettes to non-floating windows.

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

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.

New events have been added to the SetWindow window hook function:

subwindowKill (event code 14) is sent to the root window when a child window is killed.

hide (event code 15) is sent to the root window when it or any of its children is about to be hidden.

show (event code 16) is sent to the root window when it or any of its children is about to be made visible.

killVote (event code 17) is sent to the root window when it or any of its children is about to be killed. Unlike the kill (event code 2), 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. See Example 3 in the SetWindow documentation.

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.

In a page layout, you can now kill the marquee by clicking in the margin area, outside the dotted box that outlines the printing part of the page.

You can now use arrow keys to change the selection in certain lists in dialogs. Use shift- or cmd- (Macintosh) or Ctrl- (Windows) with the arrow keys to extend the selection.

In Igor Pro 5 and before, we displayed just the window title in the Windows menu and its submenus. In Igor Pro 6, we changed it to display name:title if the name was not already in the title. A few users complained because they were depending on the sort order of the window titles in the menus. So we have made this user-configurable via the Misc Setting dialog, Misc Settings category. The default now behaves like Igor Pro 5 - displaying just the title.

As of Igor Pro 6.00, if you try to set the format of a table column to date or date/time using ModifyTable and if the wave associated with the column is not double-precision, Igor returns an error telling you to redimension the wave. This test is now disabled during experiment load.

Changed horizontal autoscrolling in text files to make Igor give less preference to the unscroll position. Previously, if you typed and if Igor could autoscroll to the unscrolled position while still keeping the newly-typed character in view, it did so.

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.

Made following functions ThreadSafe: ei, equalWaves, imag, interp, PolygonArea, str2num, stringCRC, StudentA, StudentT, WaveCRC. See ThreadSafe Functions and Multitasking.

Added optional parameter to CmpStr to request case-sensitive comparisons. Now, CmpStr(str1, str2, 1) does a case-sensitive comparison, CmpStr(str1, str2) or CmpStr(str1, str2, 0) does the usual case-insensitive comparison.

Changed behavior of StatsTukeyTest, StatsDunnettTest, StatsScheffeTest and StatsNPMCTest to no longer attempt to enter row labels for full names of the input waves. Instead row labels now consist of the format i_vs_j where i and j are zero-based integer counts of the inputs. Also added to the four operation a new flag /SWN to save a text wave containing the full names of the compared waves. The wave would be displayed in the last column of the displayed table.

Changed ImageAnalyzeParticles so that the last entry in W_BoundaryIndex corresponds to the last valid boundary pixel.

It is now possible to activate a 60-day demo license even if it would immediately expire into a limited-functionality mode. This allows de-activating an installed license without having to uninstall Igor. Contact WaveMetrics for your specific 60-day demo code.


(The new native GUI controls appearance feature is described under Changed Features, above.)

New extended Tag arrow line settings:

/TL= 0, 1 or {keyword=val,...} // Tag Line extended settings
0 turns off all extended settings (and 1 turns back on if done before graph is closed)

keywords are:

len=l, length of arrow head in points (zero= auto)
fat=f, width to length ratio of arrow head (zero= default= 0.5)
style=s, if not zero, side mode, see SetDrawEnv astyle
sharp=s, sharpness param. -1 to 1, default = 0
frame=f, if not zero, outline mode used with this frame thickness
lThick=l, line thickness in points (zero is default = 0.5)
lineRGB=(r,g,b), color for lines (all zero (black) means default — same as tag frame)
dash=d, code for one the standard dash patterns

Revised the Annotation dialog to support the new Advanced Tag Line/Arrow options (Tag's new /TL={keyword=value,...} flag).

Revised the New Image Plot dialog to support the NewImage command.

Revised the Modify Image Appearance dialog to support the new Autoscale Subset of Image Wave feature (ModifyImage's new ctabAutoscale keyword).

Added a "Thread-Safe" indicator to the Command Help tab of the Help Browser.

ModifyImage has a new ctabAutoscale keyword: ctabAutoscale=autoBits

Sets the range of data used for autoscaling ctab * values.

Bit 0:autoscales only the XY subset being displayed.
Bit 1:autoscales only the current plane being displayed.

If neither bit is set (if autoBits = 0, which is the default), then all of the data in the image wave is used to autoscale the *'d zMin, zMax values for ctab.

Added a Horizontal Index setting for tables. Use this if you want to show numeric indices horizontally and dimension labels vertically or vice versa. For example, if you want dimension labels vertically and numeric indices horizontally, append the wave's dimension label column to the table and then choose Table→Horizontal Index→Numeric Indices.

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.

GetRTStackInfo(selector) now accepts selector = 1 and = 2:

If selector is 1, GetRTStackInfo returns the name of the currently executing function or macro.

If selector is 2, GetRTStackInfo returns the name of the calling function or macro.

If selector is 3, GetRTStackInfo returns more detailed information about the chain of currently executing procedures.

In the LoadWave operation, if you omit the /L flag or if the numLines parameter is zero, and if you are loading a file greater than 500,000 bytes, and if you are running on Windows, LoadWave will automatically count the lines of data in the file so that the entire wave can be allocated before data loading starts. This acts as if you used /L and set numLines to the exact correct value. For very large files on Windows, this can speed the loading process considerably. For small files on Windows and for files of any size on Macintosh, it actually makes the load slower. That's why this feature takes effect only on Windows and only for files of greater than 500,000 bytes. You can disable this feature by using the /V flag and setting bit 2 to 1.

If the procedure file containing a relative #include statement is the built-in procedure file or a packed procedure file, the search for the included file is relative to the experiment file. Previously the included file would not be found.

Added a new flag (/LR3D) to ImageLoad. The flag allows loading partial TIFF stacks as 3D waves. Note that by default the operation creates one wave per image read from the stack.

Added to ImageStats a new flag (/BEAM) for computing the statistics of 2D ROI on each layer of the 3D source wave. The new flag results in 3 waves which contain the average, minimum and maximum pixel values in the ROI region for each layer of the 3D source. Another new flag (/RECT) allows you to limit the ROI search to a specified rectangle.


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.

It was possible to add a graph containing controls and subpanels to a page layout, and then use the contextual menu in the layout to convert the graph to an embedded subwindow (see Embedding and Subwindows). But the recreation macro for the layout could not be run, giving an error that controls or subpanels are not allowed in embedded graphs. This affected re-opening an experiment containing such a layout even if you never explicitly saved the recreation macro. The contextual menu action now checks for controls and subpanels and will not allow you to embed such a graph.

In tables, if you applied a custom column title to a column of a multi-dimensional wave, the column was not always correctly updated and the table recreation macro was not always correct.

When doing a line curve fit, the history report of the values V_Rab, V_q, and V_Pr lacked the ";" separator.

When calling CurveFit from a macro to do a line fit with /ODR=<non-zero>, three BUG messages were printed in the curve fit history report, one for each of V_Rab, V_q, and V_Pr. These variables are not created for ODR line fits, but the history report code wasn't checking for ODR fitting.

A command like "Edit jack.i, jack.l" left the table thinking both the index and label columns were displayed which is disallowed. Now this would be equivalent to "Edit jack.l".

Fixed bug in calling a thread-safe external function through a FUNCREF.

Fixed bugs in calling thread-safe external functions 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: the New Image dialog failed to properly quote liberal names in ModifyImage commands.

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.

Graphs using ModifyGraph zColor={zWave,zMin,zMax,ctName ,0,ciWave} now generate the proper ModifyGraph command in their recreation macros (the 0 was missing).

Disallowed Smooth/M=num 0, wave (a 0-width median window has no meaning, but produced bug messages).

Windows: The Ctrl+D text was missing from the Duplicate command in the Edit menu.

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.


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

Modernized the Data Folder Tutorial in Igor Pro Folder:Learning Aids:Tutorials.

Fixed a bug in ColorsMarkersLinesPatterns.pxp that occured when clicking in the Color Test Pattern graph.


Added LogHistBins() in Log Histogram.ipf.

Fixed WM_ImageColorLookupWave() in WMImageInfo.ipf.

Fixed some bugs in Pole And Zero Filter Design.ipf and FilterDialog.ipf.

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

Fixed the "Smoothing Control Panel.ipf" file to work with liberal wave names.

HierarchicalListWidget.ipf: Added support for adding columns to contain arbitrary data.

PopupWaveSelector.ipf: Added PopupWS_SetGetSortOrder; just like WS_SetGetSortOrder in WaveSelectorWidget.ipf. Fixed bugs: title-in-title buttons weren't. Added support for the Renamed window event to allow the WaveSelector to keep working when the containing window's name changes.

WaveSelectorWidget.ipf: Added support for the Renamed window event to allow the WaveSelector to keep working when the containing window's name changes.

Added procedure to calculate Cronbach alpha.

Added a new procedure for creating a movie from a stack of images.

Updated the Tutorial Engine WaveMetrics procedure which is used in the X Scaling Tutorial (in Igor Pro Folder:Learning Aids:Tutorials).

Fixed errors in VISA.xop that were asymptomatic in Igor Pro 5.

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.

Fixed bug in Append Calibrator introduced by change to HVAxisList no longer accepting "" to mean top graph. Adjusted spacing of controls to suit DefaultGuiControls native on Macintosh.

Changed PeakAreasUnipolar.ipf (TN020-C), SetAxisRangeToVisibleData.ipf, and Wave Arithmetic Panel.ipf to no longer gratuitously pass "" to Axis Utilties.ipf.

Fixed Axis Utilities.ipf to accept "" to mean top graph for most routines, used PixelFromAxisVal for PixelFromLinearAxisVal() function.

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.

ColorsMarkersLinesPatterns.ipf now uses different waves for WMColorKeyGraph (M_colorKey) and WMAllColorTables (M_colors).


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.

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

Added to Gizmo commands to change object and attribute names. See ModifyGizmo setAttributeName.

Fixed a couple of problems with ModifyGizmo MakeColorWave.

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

Release 6.01

Igor Application


Fixed bug in saving unpacked experiments containing multiple waves with dots in their names and wave names were identical up to the dot. Igor would overwrite wave files with other wave files.

Fixed PDF and EPS export of clipped histogram bars.

Fixed PDF export CMYK default colors.

Imported transparent PNGs and TIFFs now draw correctly (but still not transparent). If new code causes problems with PNGs, can revert using SetIgorOption RevertPictAlpha= 1.

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

Windows: Fixed Smoothing dialog bug where end-effect settings weren't present in the generated Smooth command.

Fixed bug that could cause a crash in CurveFit when doing a line, poly or poly2d fit using a mask wave. It was usually not symptomatic.

Fixed a crash in FuncFit when doing an implicit fit (/ODR=3) and no X waves were specified (no /X={xwave list} flag).

Fixed a crash when waveMin or waveMax were called with NULL wave references.

Fixed some aspects of using curve fitting in threadsafe functions. Note that curve fitting on Windows with constraints is still not threadsafe. If you try to use constraints with curve fit called from a function running in a preemptive thread, Igor will crash.

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

Windows: the informational text in the Histogram Dialog that shows the binning information didn't move correctly when the dialog was resized.


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.

The main window for PauseForUser can now be a subwindow.


Added "renamed" (13) window hook event to SetWindow. Unnamed hook functions can access the window's old name using the "OLDWINDOW" key. Named hook functions use the added oldWinName member of WMWinHookStruct.

Added new flags for GraphWaveEdit:

/T=t   Trace mode, t=0 (default) uses lines and small square markers, t=1 leaves user settings alone.
/NI    No insert mode. Suppresses auto insert of new point when clicking between two points.


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

Update 6.01B10

Igor Application


Fixed external subwindow title saving in recreation macros.

Fixed graph cursor drawing in wrong window due to SetVariable in external subwindow.

Fixed Cursor command positioning on complex trace when in non-complex display mode.

Fixed a crash that occurred if you #included a procedure file, then manually deleted the #include statement from the builtin procedure window, then activate the #included procedure file's window, then right-clicked.

Fixed a contour-plot-with-color-index-waves bug that rebuilt the contour traces every time a global variable was updated.

Calling WinRecreation in a macro or function no longer marks an experiment as "unsaved".

Prevented zero-sized object when user just clicks in draw mode.

Fixed display of a table column as time if the column really contains date/time data. Previously it displayed AM/PM but the documentation for ModifyTable says it always uses 24 hour format so now it works as the documentation says.

Macintosh: Fixed a bug that caused abbreviated month and day-of-week names used in tables and as tick mark labels to be incorrect.

Intel Macintosh: SplitString no longer crashes.


Added a new operation: StatsSignTest.


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.

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.

Added /DL flag to Concatenate. Enables setting dimension labels. If doing promotion, source wave names are used for new dimension labels otherwise existing labels are used. Use with care: it could use a lot of memory if dimension is large.

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.

The message "Killed #included file <file name> which is no longer needed" is no longer displayed in the history. We felt that it was more clutter than useful.

Added the /iNaN flag to StatsQuantiles to ignore NaNs in the input data. By default NaNs sort to the end of the array. Also added the /STBL flag for running a stable sort instead of the standard sort. This should speed up the default execution of StatsQuantiles because in most applications a stable sort is not required.

Update 6.01B09

Igor Application


Fixed autoscale of traces with negative mulOffset.

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 a bug in curve fitting: restored error reporting when you hold and constrain the same fit coefficient.


Added the AfterWindowCreatedHook(windowNameStr, winType ) function to the collection of Functions (User-Defined Hook Functions). AfterWindowCreatedHook is a user-defined function that Igor calls when any target window is first created. The return value is ignored.


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.

Edit menu Copy for graph now uses same settings as last Export Graphics.

Export Graphics (clipboard) and Save Graphics (File) now remember graphics format in preferences.

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.


Updated Image Calibration Panels.ipf.

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


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


New example experiment: Critical Values Demo.pxp.

Update 6.01B08

Igor Application


Fixed crash converting cursors beyond B to free.

Fixed problem with Concatenate where it inappropriately was copying a source wave's dependency to the destination.

Fixed bug involving removing #define in main proc win.

The documentation for CurveFit and FuncFit show commas between the function name and coefficient wave name, and between coefficient wave and Y wave name. But in fact, the parsing was inconsistent about requiring that the comma be included, sometimes requiring that it not be there. It wasn't necessarily even consistent between compiled and interpreted versions. All of those commas are now optional.

Button pos={left,top} values are now limited to 32767 instead of 2000.

Changed to faster algorithm in StatsMedian().

FunctionInfo's PROCLINE value now correctly returns the function's local line number in the procedure window/file.

Added WaveCRC function and fixed a memory leak in the stringCRC function.

Executing ControlUpdate for a TitleBox not using variable=stringVariable caused the old and new values to be overprinted.

Fixed bug that prevented help sub-subtopics (subtopics with leading tabs) from being found on Windows when you clicked Show Selected Topic in the Help Browser.

Fixed bugs introduced in MoveFolder/D and CopyFolder/D in a previous beta.


Added a ToCommandLine stringExpression operation, which is useful for those "dialogs" made out of Panels that have "To Cmd Line" buttons in them.

Added PDF, JPEG and TIFF export to clipboard on both Mac and Windows. However we know of no programs on Windows that can import these formats from the clip except that Igor itself can import JPEG and TIFF (but not PDF.) Related to this, the format popup menus in the Export Graphics and Save Graphics dialogs have been rearranged and the obsolete PostScript PICT (Mac) and Postscript Enhanced Metafile (Win) formats have been removed (let us know if this causes problems.)

PDF export now sports high resolution fill patterns and uses compression.

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.

New operation: StatsDIPTest which implements Hartigan test for unimodality.

Added convertToPNG=<x> keyword to Notebook operation. This converts all selected pictures to the cross-platform PNG format. <x> is a resolution expansion factor (1..16).

Update 6.01B07

Igor Application


Fixed crash converting cursors beyond A or B to free.

Fixed a bug in the Curve Fit dialog: if the dialog has a wave already selected as the Y data wave, and the top graph uses that wave as the X wave, when you turn on the From Target check box it would not correctly select the X and Y waves from a trace in the graph.


Added PDF Export of Graphs, Tables and Page Layouts. No documentation yet, but considerations are similar to EPS export. You should either use font embedding or use only Helvetica, Times, Symbol and Zapf Dingbats. Yet to do: compression, high resolution fill patterns, warn when doing font substitution.


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


QTGrabber XOP has been updated to support IIDC features.


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.

Update 6.01B06

Igor Application


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

Fixed DoWindow/F to return V_flag=2 instead of 1 for hidden windows.

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

Windows: Fix for PauseForUpdate when the target window has external tool or info palette.

MacIntel: Fix for blue TIFF images.

Macintosh: fixed help tags showing all the time in the Modify Trace Appearance dialog.

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

SetAxis/Z crash fixed.


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


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.

Update 6.01B05

Igor Application


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

New function GuideInfo to get information about subwindow guidelines in a host window.

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

Added a None item to the Resample dialog's window popup.


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

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.)

Previously you could either enable or disable operations which overwrite or delete folders (MoveFolder, CopyFolder, DeleteFolder) using the Miscellaneous Settings dialog (Misc menu). This has been changed to give three choices: Ask The User, Give Permission, Deny Permission. Ask The User is the default setting and means that Igor will display a dialog to ask permission each time a folder is about to be overwritten or deleted.

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. For details, see:


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.


Fixed a bug in the Curve Fit dialog could cause the Graph Now button to use the wrong X range when you fit to and XY pair of waves.

Curve Fitting with constraints cannot be done in a thread-safe function by the usual method that uses a text wave with constraint expressions. An attempt to do this will now return an error. Use the very inconvenient method that involves creating a matrix and a 1D wave, using /C={matrix, 1Dwave} instead of /C=textwave

Fixed a bug in curve fitting with constraints: if you specified the constraints using the very inconvenient /C={matrix, 1Dwave}, Igor incorrectly told you that you were using an incompatible number type.

Cleaned up some errors in making curve fitting work from a thread-safe function. Among other things, Igor will now print a history report when called from a thread-safe function as long as the function is called from the main thread.

Fixed a possible curve fit crash: if you selected confidence bands or predition bands, there is a graph present, but the graph doesn't contain your input data, Igor would crash.

A user-defined menu item of "*FONT*(initiallySelectedFontName [, <short list of fonts for Windows>])" no longer causes error if initiallySelectedFontName isn't installed.

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.

Fixed a possible crash if you hid a window then did a new experiment and then hid another window within 30 seconds.

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.

The Subscript and Superscript menu items in the Control Dialog's title popup were reversed.

SetAxis bottom <some number>,* would report "Date/time axes do not support reversed scaling" even when <some number> was smaller than the auto upper limit on the axis.

The Modify Axis dialog, Axis Range tab now does proper error checking when you select auto scaling for one end of an axis and manual scaling for the other end.


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

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

Fixed printing problem in PC Gizmo.

Mac Intel: SndLoadSaveWave.xop's SndSaveAiff command now properly sets the sampling rate in saved AIFF files.

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.


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.

Update 6.01B03

Igor Application


Transparent PNG export using new flag for WritePICT: /TRAN[=1 or 0] when used with native PNG export of graphs or page layouts, causes white background areas to be marked as transparent using an RGBA type PNG. In layouts, only embedded graphs and textboxes marked as transparent will be transparent. Non-embedded graphs, pictures and tables will be opaque. The transparency of PNGs is not honored when placed in Igor.

New built-in functions LaguerreA, LaguerreGauss and MarcumQ.


Help tags (Macintosh) or Tool Tips (Windows) giving information about graph traces and table data columns are now more easily available. Previously you had to know about a magic key combination; now there are menu items: Show Trace Info Tags in the Graph menu or Show Column Info Tags in the Table menu. When selected, these items turn on a mode in which hovering the mouse over a trace or table column will put up the tag or tip with information.

Contour plot recreation macros use Tag/C/N instead of only Tag/N. This prevents errors that happen if the user changes the contour labels (tags) but doesn't disable contour label updating.


Fixed hang invovling wave assignment with wave containing invalid dimensions.

Fixed crash related to listboxes in a panel whose kill-event window hook deleted the listbox's wave.

Fixed FindDimLabel to not return a value outside of the range of the wave.

Fixed problem with external tools/info panel and send behind.

Curve fitting operations were creating certain output variables as globals even when called from a user-defined procedure. The variables were V_startLayer, V_endLayer, V_startChunk, V_endChunk and the string variable S_info.

Pressing enter in an empty table without typing anything in the entry line selected an invalid column which could cause a crash.

A CurveFit or FuncFit command would not compile if anything followed the /F parameter flag (confidence interval flag).

Fixed a crash if you tried to do a curve fit with all the fit coefficients held. This now reports an error.

Fixed a crash in the Replace Wave dialog if you selected Images and had nothing selected in the list of images.

Fixed bugs in the range editing and command generation in the Replace Wave dialog.

Fixed erroneous error reported by the Display Waves dialog if you selected a two-dimensional wave and selected a single row and a range in the second dimension.

Fixed a bug in the Wave Stats dialog: if you clicked the cursors button, the range edit boxes were filled with calls to pcsr, but the command generated used /R=() instead of /R=[]. Changed the label on the Range box to "Point Range" to reflect the fact that the command generated is appropriate for points, not scaled X values.

The Modify Axis dialog, Range tab failed to generate the correct commands for multiple selected axes for the Autoscale Visible Data checkbox.

Many contextual menus were missing their Igor Tips or status line help.

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

Windows: the contextual menu for procedure windows was missing the Clear All Breakpoints item.

Windows: the Smooth dialog was generating commands with /M=(1.#QNAN) instead of /M=(NaN). Same for /R.

Fixed bug that prevented updating of Igor object pictures in notebooks on Intel Macintosh. If you have pasted a picture of an Igor graph, table or layout into notebooks on Intel Macintosh, you will need to manually update the picture once manually. Then you will be able to update it using the Notebook->Special menu.


Fixed a bug in HDF5 XOP that caused a crash when loading certain null string attributes.

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

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

Update 6.01B01

Igor Application

Added Getting Started and License items to the Help menu. On Macintosh, added About Igor Pro to the Help menu to make it consistent with Windows.


Windows: Infinite window activation loop when tiling graphs with at least two minimized graphs with tools or info panels.

Windows: The Dialog Wave Browser and certain lists were missing tool tips giving expanded information about waves.

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.

If last draw action in a graph was a delete and the experiment was then saved when the graph was not topmost, the object would become undeleted.

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.

Fixed a bug in FindLevel with the new /EDGE=1 or =2 flag that prevented finding level crossings directly after another level crossing in the other direction.

Curve Fits from user-defined functions would tell you that your mask wave does not match the data wave, when in fact it was the residual wave that had the problem.

Fixed a crash in curve fitting that resulted from trying to fit a subrange of the Y data if the subrange had zero points. This could result from having a start index larger than the number of points in the wave.

Fixed a bug in parsing of Curve Fit Y data subrange that disallowed subrange syntax like [number,] or [,number].


Previously, ListBox controls with editable cells and checkboxes/disclosure buttons didn't display the edit boxes or checkboxes in selection mode 0 (even though they worked!); in modes 1-4 they showed up in every cell of a row. Now they show in mode 0 and are independent along rows in mode 1-4. One benefit: you can have a listbox in which clicking a checkbox or an edit box doesn't select the cell or row.


Updated Data Browser.


Updated Marquee Demo.pxp.


Updated Igor Reference.ihf.