In a Windows application, there are many options for determining the starting position of a dialog.

In the center of the application's main window

In the center of the screen where the application's main window is located

On a fixed position expressed in pixels

I was wondering if there is already a general convention on which of these 3 to choose.

Secondly, my application's main windows is a diagram with objects on it that the user can double click, in which case a dialog appears. The 3rd option of the above list allows me to position that dialog based on the position of the object that been double clicked. The idea is that the user needs to move the mouse pointer over shorter distances. I am wondering if this is good practice or not.

The best positioning strategy of all: Don't. Alan Cooper describes a dialog box as being a different room. By using one, you're sending your users to a different room for that operation. Imagine what cooking dinner would involve if your oven, cooktop, fridge, freezer, microwave, chopping board, workbench, knifeblock, cutlery drawer, utensils drawer and pantry were each in a separate room of your house.
–
BevanOct 20 '11 at 1:08

3

@Bevan: Are you saying we shouldn't be using dialog boxes? I indeed would like to have my oven, freezer, chopping board etc in the same room, however I do prefer to have my oven, bed, bath, TV, toilet each in a separate room.
–
Bart GijssensOct 20 '11 at 7:24

I'm saying that if you can (reasonably) avoid a dialog box, you should.
–
BevanOct 20 '11 at 21:33

2 Answers
2

It's pretty infuriating to ever have to move a dialog box that appears over the related content that was of interest, so I tend to observe the following hierarchy of rules, but the gist is that the more specific the context, the closer the dialog should be positioned.

If the dialog is a context menu or similar to a context menu, position the top left at the click position. Eg right mouse button menu

If the dialog was brought up as a result of a direct click on a menubar, then position so that top left of dialog is just above and left of the mouse position. Eg: Save as dialog

If interaction with dialog relates to something specific in the presentation area which the user clicked on then position the dialog so as to still be able to view that object but in a way that observes consistent rules. A nice option is to point an arrow off the top of the dialog to the object in question, or highlight it in some other way. Eg. Selected object information. Object Format dialog.

If the dialog is pretty standalone in that it does not directly reference a specific object underneath, then position it central to the main content/graphics/working/presentation area. Eg Content statistics summary.

If the dialog relates to functionality within the application as a whole, position it central to the main window, (not central to the screen). Eg: An application settings dialog. Font dialog.

If the dialog relates to the application within the context of the operating system - then position it central to the relevant screen. Eg: a crash report dialog.

Additionally - for those user-moveable dialogs that you positioned centralized to either content, main winow, or screen, and where you have control of this, you remember previous positions. Eg you record the size and position of the dialog when it was opened and compare with the size and position when closed, and if the user moved it, the next time the dialog appears - you ensure it is given the same size and position as the user obviously wanted it. Thus if for some reason the user didn't like the position, you adhere to their wishes instead of continually ignoring them. Users will get used to finding dialogs in the 'position they left them' and it's a much better experience than keep having the dialog appear in the same annoying place all the time.

You can use a 'popup' containing some buttons/labels/etc to setup values for things the user wants to do. These should open at the mouse position or right next to a pushed button/item. Think about right click menu's.

You can use 'dialogs' containing information that 'block' the users flow. Either a warning a "are you sure you wan't to delete everything" message etc. These should open on the center of the running application so the user is forced to look at it.

You can use popup balloons/toasts as simple notification's that aren't really all that interesting. E.g. outlook new mail or bittorrent downloads.