Currently app.execDialog() blocks all user input and actions until the dialog is closed. It is possible to make changes to the document and have them show during the dialog, but a user cannot, for example, change the page, draw annotations or select annotations while the dialog is active. There is a non-modal dialog (app.thermometer) but it is a very specific and limited function. If there were a way to have a non-modal app.asyncDialog() it opens a range of possibilities for scripts (some of which could reduce pressure on other aspects of developer time

For example:
- Bookmarks: It would be possible to make a dialog listing bookmarks along with other properties of the bookmarks (such as page number
) with actions for those bookmarks (ie goto page, change, etc). This could be open alongside another pane, so the user could continue using the document without closing the dialog.
- Annotations list: A table view of annotations similar to Bluebeam. It's currently possible as a non-modal dialog, but it cannot stay open while the user interacts with the document.
- Custom tools (such as curve drawing, or synchronize views) could have a dialog open while the element is drawn so that user could change properties or cancel, etc while the tool is active. My curve tool uses the thermometer, but as you can see from that tool, it's a clunky workaround. The synchronize views tool relies on the user picking the same menu item again to make changes or cancel it.