Deprecated: Assigning the return value of new by reference is deprecated in /home/ink08/public_html/blog/wp-settings.php on line 229

Deprecated: Assigning the return value of new by reference is deprecated in /home/ink08/public_html/blog/wp-settings.php on line 231

Deprecated: Assigning the return value of new by reference is deprecated in /home/ink08/public_html/blog/wp-settings.php on line 232

Deprecated: Assigning the return value of new by reference is deprecated in /home/ink08/public_html/blog/wp-settings.php on line 249

Strict Standards: Redefining already defined constructor for class wpdb in /home/ink08/public_html/blog/wp-includes/wp-db.php on line 52

Deprecated: Assigning the return value of new by reference is deprecated in /home/ink08/public_html/blog/wp-includes/cache.php on line 36

Strict Standards: Redefining already defined constructor for class WP_Object_Cache in /home/ink08/public_html/blog/wp-includes/cache.php on line 389

Strict Standards: Declaration of Walker_Page::start_lvl() should be compatible with Walker::start_lvl($output) in /home/ink08/public_html/blog/wp-includes/classes.php on line 537

Strict Standards: Declaration of Walker_Page::end_lvl() should be compatible with Walker::end_lvl($output) in /home/ink08/public_html/blog/wp-includes/classes.php on line 537

Strict Standards: Declaration of Walker_Page::start_el() should be compatible with Walker::start_el($output) in /home/ink08/public_html/blog/wp-includes/classes.php on line 537

Strict Standards: Declaration of Walker_Page::end_el() should be compatible with Walker::end_el($output) in /home/ink08/public_html/blog/wp-includes/classes.php on line 537

Strict Standards: Declaration of Walker_PageDropdown::start_el() should be compatible with Walker::start_el($output) in /home/ink08/public_html/blog/wp-includes/classes.php on line 556

Strict Standards: Declaration of Walker_Category::start_lvl() should be compatible with Walker::start_lvl($output) in /home/ink08/public_html/blog/wp-includes/classes.php on line 653

Strict Standards: Declaration of Walker_Category::end_lvl() should be compatible with Walker::end_lvl($output) in /home/ink08/public_html/blog/wp-includes/classes.php on line 653

Strict Standards: Declaration of Walker_Category::start_el() should be compatible with Walker::start_el($output) in /home/ink08/public_html/blog/wp-includes/classes.php on line 653

Strict Standards: Declaration of Walker_Category::end_el() should be compatible with Walker::end_el($output) in /home/ink08/public_html/blog/wp-includes/classes.php on line 653

Strict Standards: Declaration of Walker_CategoryDropdown::start_el() should be compatible with Walker::start_el($output) in /home/ink08/public_html/blog/wp-includes/classes.php on line 678

Deprecated: Assigning the return value of new by reference is deprecated in /home/ink08/public_html/blog/wp-includes/query.php on line 21

Deprecated: Assigning the return value of new by reference is deprecated in /home/ink08/public_html/blog/wp-includes/theme.php on line 508
ink08 » 2008» August» 27
Skyline of Richmond, Virginia

Down with modal windows!

08.27.08


Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/ink08/public_html/blog/wp-includes/formatting.php on line 74

These guys have been annoying me for a while, and in a sudden flash of insight I remembered what they are called: modal windows, i.e. windows that hog the focus and that you must interact with and dismiss before you can use the rest of the UI again.  These are almost never the right thing.

The use case in which modal windows tend to irritate me most is when I need to configure a program using one part of the UI based on information presented in another part of the UI.  What I’d like to do in this situation is put both these parts of the UI on the screen side by side, so that I don’t have to constantly switch back and forth.  If the part I’m using to configure is modal, this is annoying; if the part I’m consulting while configuring is modal, it’s impossible.  The use of modal windows slows down such a task by about an order of magnitude.

A frequent offender is IntelliJ IDEA, an  otherwise excellent IDE.  Restricting the user’s flexibility in the UI in this way is particularly inappropriate in a product whose users are (by definition) developers. Grrr. IDEA is also bad about stealing the focus from other applications with largely irrelevant windows indicating the progress of background processing tasks, at least under GNOME.